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 or false
- String: description or drop down selection
- Integer (numeric value)
- Date
To complete due diligence questions for a client, follow these steps:
- Obtain the
questionIds
from theoutstanding
object in a successful response to one of the following:GET
request to/onboarding/v1/clients/{id}
POST
request to/onboarding/v1/clients
PATCH
request to/onboarding/v1/clients/{id}
- Get the questions to display to your client using a
GET
request to/onboarding/v1/questions
, including a comma-separated list of question IDs in thequestionIds
parameter. These can include follow-up questions insubQuestions
. - Send the answers, in the format provided by each question, using a
PATCH
request to/onboarding/v1/clients/{id}
. Include answers to follow-up questions.
Get the questions to ask your client
A successful 200 or 201 response to any of the /onboarding/v1/clients
requests above includes an outstanding
object. Within this object is a list of questionIds
.
If this list is populated, you must retrieve each question using the ID and present the question to your client.
Sample response to /onboarding/v1/clients
with questionIds
30005
, 30026
, 30027
.
{
"attestations": [],
"id": "1000010400",
"parties": [],
"partyId": "2000000111",
"products": [
"MERCHANT_SERVICES"
],
"outstanding": {
"attestationDocumentIds": [
"c4e4739f-33ed-47f6-82fa-0b1c5c992d0b"
],
"documentRequestIds": [],
"partyIds": [],
"partyRoles": [],
"questionIds": [
"30005",
"30026",
"30027"
]
},
"questionResponses": [],
"status": "NEW"
}
Present the questions
Send a GET
request to /onboarding/v1/questions
with the questionIds
in the request parameters.
Sample request:
curl --request GET \
--url '/onboarding/v1/questions?questionIds=30001%2C30002%2C30003' \
--header 'Accept: application/json' \
--header 'token: '
Sample response:
{
"questions": [
{
"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": "30005",
"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": "30026",
"responseSchema": {
"type": "array",
"minItems": 1,
"maxItems": 1,
"items": {
"type": "boolean"
}
},
"subQuestions": [
{
"anyValuesMatch": "true",
"questionIds": [
"30027"
]
}
]
},
{
"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": "30027",
"parentQuestionId": "30026",
"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
request to /onboarding/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 a PATCH
request to /onboarding/v1/clients/{id}
.
Sample of answers in the questionResponses
object:
{
"questionResponses": [
{
"questionId": "30026",
"values": [
false
]
},
{
"questionId": "30005",
"values": [
"100000"
]
}
]
}
Next steps
Present attestations to your client.