Skip to main content

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:

  1. 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}
  2. 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 in subQuestions.
  3. 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..

Sample response to POST /clients
Json
{
  "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:

GET /questions with questionIds
Curl
curl -X 'GET' \
/do/v1/questions?questionIds=300005,300026,300027' \
-H 'accept: application/json' \

Sample response:

Sample response: /questions with questionIds
Json
{            
    "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:

Sample: POST /clients/{id}
Json
{
  "questionResponses": [
    {
      "questionId": "300026",
      "values": [
        false
      ]
    },
    {
      "questionId": "300005",
      "values": [
        "100000"
      ]
    }
  ]
}