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:
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 theoutstanding
object in theGET 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 asBENEFICIAL_OWNER
orCONTROLLER
, has completed onboarding. This does not mean your client has completed all onboarding stages – refer toclient.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:
{
"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:
- Send a
GET /do/v1/clients/{id}
request and check the outstanding object. If an additional document is required, thedocumentRequestIds
field is populated with an ID. - Send a
GET /do/v1/document-requests/{id}
request using thedocumentRequestId
provided. The response contains the required document type that must be uploaded. - 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
{
"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:
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.
{
"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:
curl -X 'GET' \
'https://base-url/api/ef/do/v1/clients/1000010400' \
-H 'accept: application/json'