Push Notifications

Partners can choose to receive push notifications of certain application events. Push notifications are transmitted using the PAPI notificationStatusRequest object. Before getting push notifications, end points and authentication must be configured.

Authentication

In order to receive push notifications, authentication is required in both test and production environments. The following methods for authentication are supported:

  • Token-based authentication: Partner provides Elavon with the token and URL endpoint.
  • OAuth2 authentication: Partner provides Elavon with the client ID, client Secret, username, password, authentication URL, and URL endpoint.
  • Basic authentication: Partner provides Elavon with the username, password, and URL endpoint.

Elavon will need your SSL Certificate in order to send push notifications.

Types of Push Notifications

The notificationEvent property will define the type of event that occurred.

Tell Elavon which push notifications you’d like to receive.

Push Notifications ScheduleNotification Event NameApplicable To
Sent when the application’s status changes (INPROGRESS, PEND, COMPLETE, DECLINED, or WITHDRAWN)BOARDING_STATUS- All Flows
- Payment Facilitators
Sent when
- An account is created
- Customer hasn’t created an account after 7 days or after 14 days
EMAIL_SENTGuided Flow
Sent when customer inputs incorrect date of birth, phone number, or password for the accountREGISTRATION_ERRORGuided Flow
Sent when a customer successfully creates an accountREGISTRATION_COMPLETEDGuided Flow
Sent when an applicant’s signature status changesSIGNATURE_STATUSGuided Flow
Sent when an application is received and boardedAPPLICATION_SUBMITTEDGuided Flow

Push Notification Structure

The notificationStatusRequest object contains the following properties:

  • uniqueId: Returned for all flows.
  • clientId: Returned for all flows.
  • groupPacketId: Returned for Guided flow.
  • packetId: Returned for Managed Flow.
  • correlationId: Returned for all flows when the original request contains the correlation ID.
  • notificationEvent: Returned for registered and applicable events.
  • appStatus: Only returned for Guided Flow and Managed Flow.
  • messages: Returned for all flows.
  • signerStatus: Only returned for Guided Flow and Managed Flow.
  • boardingStatusDetail: Returned for all flows.
  • chainId: Returned for all flows, if new chain was requested.
  • terminalIdInfo: Returned for all flows, if applicable.

Here is the structure of notificationStatusRequest:

{
  "type": "object",
  "properties": {
    "uniqueId": {
      "type": "string"
    },
    "clientId": {
      "type": "string"
    },
    "correlationId": {
      "type": "string"
    },
    "groupPacketId": {
      "type": "string"
    },
    "packetId": {
      "type": "string"
    },
    "notificationEvent": {
      "type": "string",
      "enum": [
        "EMAIL_SENT",
        "REGISTRATION_ERROR",
        "REGISTRATION_COMPLETED",
        "SIGNATURE_STATUS",
        "APPLICATION_SUBMITTED",
        "BOARDING_STATUS"
      ]
    },
    "appStatus": {
      "type": "string",
      "enum": [
        "DRAFT",
        "SUBMITTED",
        "COMPLETE",
        "ERROR",
        "WITHDRAWN",
        "DECLINED"
      ]
    },
    "messages": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "signerStatus": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "signerId": {
            "type": "string"
          },
          "signerStatus": {
            "type": "string",
            "enum": [
              "DRAFT",
              "ACCEPTED",
              "SIGNED",
              "DECLINED",
              "EXPIRED"
            ]
          }
        }
      }
    },
    "boardingStatusDetail": {
      "type": "object",
      "properties": {
        "boardingStatus": {
          "type": "string",
          "enum": [
            "UNKNOWN",
            "COMPLETE",
            "INPROGRESS",
            "DECLINED",
            "WITHDRAWN",
            "ERROR",
            "TIMED_OUT",
            "PEND"
          ]
        },
        "boardingId": {
          "type": "string"
        },
        "merchantId": {
          "type": "string"
        },
        "errorMessages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "pendMessages": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "underwriterNotes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "underwriterContacts": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "chainId" : {
      "type": "string"
    },
    "terminalIdInfo" : {
      "type": "object",
      "properties" : {
        "error" : {
          "type" : "string"
        },
        "welcomeUrl" : {
          "type" : "string"
        },
        "virtualId" : {
          "type" : "string"
        },
        "terminalBin" : {
          "type" : "string"
        },
        "terminalIdDataMap": {
            "type": "array",
            "description": "Java map <String,Object> where string is key and object contains terminalId, userId, pin, and errorText.",
            "items": {
                "anyOf": [
                    {
                        "type": "object",
                        "examples": [
                            {
                                "keyString": [
                                    {
                                        "terminalId": "some terminalId",
                                        "userId": "some userId",
                                        "pin": "some pin",
                                        "errorText": "some error text"
                                    }
                                ]
                            }
                        ],
                        "properties": {
                            "keyString": {
                                "type": "array",
                                "description": "An explanation about the purpose of this instance.",
                                "items": {
                                    "anyOf": [
                                        {
                                            "type": "object",
                                            "description": "An explanation about the purpose of this instance.",
                                            "properties": {
                                                "terminalId": {
                                                    "type": "string",
                                                },
                                                "userId": {
                                                    "type": "string",
                                                },
                                                "pin": {
                                                    "type": "string",
                                                },
                                                "errorText": {
                                                    "type": "string",
                                                }
                                            }
                                        }
                                    ]
                                }
                            }
                        }
                    }
                ]
            }
        }
      }
    }
  }
}