Present onboarding questions to your client
Due diligence questions are an essential part of onboarding your client to J. P. Morgan services. Questions must be asked in the exact wording provided, and answers returned in the required format.
The format of answers can be:
- Boolean (True/False)
- String (Description or Drop down selection)
- Integer (Numeric value) and Date.
To complete due diligence questions for a client, you must:
- Retrieve the question IDs. You find these in the
outstanding
object in the success response to any of these calls:GET /do/v1/clients/{id}
POST /do/v1/clients
POST /do/v1/clients/{id}
- Get the questions to display to your client using
GET /do/v1/questions
, including a comma-separated list of question IDs in the questionIds parameter. These can include follow-up questions insubQuestions
. - Send the answers, in the format provided by each question, using
POST /do/v1/clients/{id}
. Include any answers to follow-up questions.
Get the questions to ask your client
A successful 200 or 201 response to any of the /do/v1/clients
requests above includes an outstanding
object. Within this object is a list of questionIds
.
If this list is populated, you must retrieve the questions using their ID and present them to your client.
Sample response to /do/v1/clients
with QuestionIds 30005, 30026, 30027.
.
{
"attestations": [],
"id": "1000010400",
"parties": [ ... ],
"partyId": "2000000111",
"products": [
"EMBEDDED_PAYMENTS"
],
"outstanding": {
"attestationDocumentIds": [
"c4e4739f-33ed-47f6-82fa-0b1c5c992d0b"
],
"documentRequestIds": [],
"partyIds": [],
"partyRoles": [],
"questionIds": [
"300005",
"300026",
"300027"
]
},
"questionResponses": [],
"status": "NEW"
}
Present the questions
Send a request to GET /do/v1/questions
with the questionIds
in the request parameters.
Sample request:
curl -X 'GET' \
/do/v1/questions?questionIds=300005,300026,300027' \
-H 'accept: application/json' \
Sample response:
{
"content": [
{
"description": "What is your Total Annual Revenue in local currency?",
"label": "Total annual revenue/income:",
"locale": "en-US"
}
],
"defaultLocale": "en-US",
"description": "What is your Total Annual Revenue in local currency?",
"id": "300005",
"responseSchema": {
"type": "array",
"minItems": 1,
"maxItems": 1,
"items": {
"type": "integer"
}
},
"subQuestions": []
},
{ "content": [
{
"description": "Do you have locations, sell goods, or services, or have vendors or suppliers in countries or regions subject to comprehensive sanctions programs (Iran, North Korea, Cuba, Syria and the Crimea, Donetsk, Luhansk Regions of Ukraine), or work with Sanctioned Parties in Russia or Venezuela?",
"label": "Do you have locations, sell goods, or services, or have vendors or suppliers in countries or regions subject to comprehensive sanctions programs (Iran, North Korea, Cuba, Syria and the Crimea, Donetsk, Luhansk Regions of Ukraine), or work with Sanctioned Parties in Russia or Venezuela?",
"locale": "en-US"
}
],
"defaultLocale": "en-US",
"description": "Do you have locations, sell goods, or services, or have vendors or suppliers in countries or regions subject to comprehensive sanctions programs (Iran, North Korea, Cuba, Syria and the Crimea, Donetsk, Luhansk Regions of Ukraine), or work with Sanctioned Parties in Russia or Venezuela?",
"id": "300026",
"responseSchema": {
"type": "array",
"minItems": 1,
"maxItems": 1,
"items": {
"type": "boolean"
}
},
"subQuestions": [
{
"anyValuesMatch": "true",
"questionIds": [
"300027"
]
}
]
},
{ "content": [
{
"description": "If so, select which ones (multiple possible)",
"label": "If so, select which ones (multiple possible)",
"locale": "en-US"
}
],
"defaultLocale": "en-US",
"description": "If so, select which ones (multiple possible)",
"id": "300027",
"parentQuestionId": "300026",
"responseSchema": {
"type": "array",
"minItems": 1,
"maxItems": 1,
"items": {
"type": "string"
}
},
"subQuestions": []
}
]
}
Capturing 'child' answers to follow-up questions
In some cases, you must send additional information or an answer to a further question.
These additional answers are only required if the answer to the parent question is positive (your user has answered "true"
to the question).
In the example above, you can see that question ID 30026
requires a description if the user answers "true"
to the question.
You must only show the child question ID 30027
if you are sending a "true"
value in the response to 30026.
Send the question responses
In the response to a GET /do/v1/questions
request, each question has a responseSchema
. This tells you how to present the question to your client, and how they can express their answer.
Once you have presented the questions and gathered the answers, send the question responses using POST /do/v1/clients/{id}
.
Sample of answers in the questionResponses
object:
{
"questionResponses": [
{
"questionId": "300026",
"values": [
false
]
},
{
"questionId": "300005",
"values": [
"100000"
]
}
]
}