Skip to main content

Complete onboarding steps

Once you have submitted all the required documents, attestations and answers, you can request the completion of the onboarding process.

To complete the onboarding process, send a POST /do/v1/clients/{id}/verifications request. This triggers J. P. Morgan to perform the required checks and due diligence processes. In many cases, your client is likely to be onboarded without further input after this point. In some cases, more information can be requested. 

Sample request:

POST /clients/{id}/verifications
Curl
curl -X 'POST' \
  'https://base-url/do/v1/clients/1000010400/verifications' \

If successful, you receive a 202 Accepted response.

Understand client and party onboarding status

You can update outstanding information about the client by sending a POST request to /do/v1/clients/{id}.

The status values on the response shows you how far your client, and associate parties, have been onboarded:

Client status

clientStatus represents the progress of your client's onboarding journey. This cannot be complete - APPROVED - until all onboarding stages have been completed for both the client and associate parties.

Possible values:

  • NEW - Onboarding verifications haven't started yet since there isn't enough information available yet.
  • REVIEW_IN_PROGRESS - Onboarding verifications have started and are in progress. During review, you may need to collect additional documents or information - which is shown in the outstanding object in the GET do/v1/clients/{id} request.
  • INFORMATION_REQUESTED - Your client or it's related parties must provide additional information or documents to proceed with verification. Once requested information is provided, status becomes REVIEW_IN_PROGRESS.
  • APPROVED - Your client and all associated parties have been through due diligence and onboarding successfully and successfully onboarded.
  • DECLINED - Your client cannot be onboarded based on their response to our due diligence processes.
  • SUSPENDED - Either:
    • During onboarding, your client hasn't provided requested information or documents within the defined period.
    • After onboarding, you placed a request to temporarily make the Client's account inactive.
  • TERMINATED - You have placed a request to permanently terminate your client's Embedded Payments accounts.

Profile status

profileStatus represents the status of a party's onboarding. The term profile refers to the party profile kept on each party associated with a client.

Possible values:

  • REVIEW_IN_PROGRESS - Either:
    • Due diligence review is in progress
    • During review, a request has been placed to collect additional documents or information.
  • INFORMATION_REQUESTED - Your client's Beneficial Owner or Controller is requested to provide additional information or documents to proceed with verification.
  • APPROVED - Your client’s related party, such as BENEFICIAL_OWNER or CONTROLLER, has completed onboarding. This does not mean your client has completed all onboarding stages – refer to client.status.

Keep your client up to date with onboarding using webhooks

Use the Webhook to remind your client if they need to complete additional onboarding steps.

To subscribe to client onboarding events, see the Webhooks guide.

Sample webhook event payload to show that a client verification review completed and that information has been requested from the client:

Sample webhook event payload
Json
{
  "eventType": "CLIENT_ONBOARDING",
  "resourceType": "CLIENTS",
  "resourceId": "1000010400",
  "resource": {
    "clientId": "1000010400",
    "status": "INFORMATION_REQUESTED",
    "hasOutstandingInformation": true
  }
}

Manage additional documents requests

After submitting all client details for verification, your client may still be asked to upload documents to confirm the identity of the party being onboarded. For example, they may need to upload a copy of their Driver's License. They are contacted directly by J.P. Morgan to request these items, and are given a way to provide them. You can check which documents are required using the API, but you don't need to send any documents this way. 

To see additional documentation required:

  1. Send a GET /do/v1/clients/{id} request and check the outstanding object. If an additional document is required, the documentRequestIds field is populated with an ID.
  2. Send a GET /do/v1/document-requests/{id} request using the documentRequestId provided. The response contains the required document type that must be uploaded.
  3. Your client must provide the additional document direct to J.P. Morgan. They are contacted by email to complete this step. 

Check which additional documents are required

You can see the required documents in the response to a POST /do/v1/clients or POST /do/v1/clients/{id} request. You do not need to send this document using the API, your client is contacted by J.P. Morgan to request this. However, you can reflect the requirement in your platform using this process, for example to show your client what is outstanding before their onboarding is complete. 

Sample with outstanding documentRequestIds: 3000011675

POST /clients
Json
{
  "attestations": [],
  "id": "1000010400",
  "parties": [ ... ],
  "partyId": "2000000111",
  "products": [
    "EMBEDDED_PAYMENTS"
  ],
  "outstanding": {
    "attestationDocumentIds": [],
    "documentRequestIds": ["3000011675"
    ],
    "partyIds": [],
    "partyRoles": [],
    "questionIds": []
  },
  "questionResponses": [],
  "status": "NEW"
}

Sample request to GET /documents/{id} to retrieve document ID: 3000011675:

GET additional documents request
Curl
curl -X 'GET' \
  'https://baseurl.com/v1/ef/do/v1/document-requests/3000011675' \
  -H 'accept: application/json'

Sample response to GET /documents/{id} to retrieve document ID: 3000011675. This shows your client is being asked for a copy of their driving license. You can tell your client to expect a request for this document direct from J.P. Morgan.

Response with driving license missing
Json
{
  "id": "3000011675",
  "country": "US",
  "createdAt": "2022-11-18T12:28:11.232Z",
  "requirements": [
    {
      "documentTypes": [
        "DRIVERS_LICENSE"
      ],
      "level": "PRIMARY",
      "minRequired": 1
    }
  ],
  "partyId": "2000000111",
  "status": "ACTIVE",
  "updatedAt": "2022-11-18T12:28:11.232Z",
  "validForDays": 5
}

Show your client their details

To get all information in your client's Embedded Payments profile, use the request GET /clients/{id}, using the clientId in the path.

Sample request:

GET /clients/{id}
Curl
curl -X 'GET' \
  'https://base-url/api/ef/do/v1/clients/1000010400' \
  -H 'accept: application/json'