Overview
Use this method to initiate a Non-Doc Verification based on the provided applicant data.
Request example
The following are request examples sorted by the Alpha-3 country code.
curl -X POST \
'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/ekyc/submit' \
-H 'Content-Type: application/json' \
-d '{
"idDoc": {
"country": "ARG",
"idDocType": "ID_CARD",
"number": <dni>,
"gender": <M/F>
}
}'
curl -X POST \
'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/ekyc/submit' \
-H 'Content-Type: application/json' \
-d '{
"idDoc": {
"country": "BGD",
"idDocType": "ID_CARD",
"number": <National ID>,
"dob": <YYYY-MM-DD>
}
}'
curl -X POST \
'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/ekyc/submit' \
-H 'Content-Type: application/json' \
-d '{
"info": {
"country": "BRA",
"tin": <cpf>
}
}'
curl -X POST \
'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/ekyc/submit' \
-H 'Content-Type: application/json' \
-d '{
"idDoc": {
"country": "GBR",
"idDocType": "OTHER"
}
}'
curl -X POST \
'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/ekyc/submit' \
-H 'Content-Type: application/json' \
-d '{
"info": {
"country": "IDN",
"tin": <NIK>,
"firstName": <Full name>,
}
}'
// Verification basis: AADHAAR
curl -X POST \
'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/ekyc/submit' \
-H 'Content-Type: application/json' \
-d '{
"idDoc": {
"country": "IND",
"idDocType": "ID_CARD",
"number": <AADHAAR>
}
}'
// Verification basis: Digilocker
curl -X POST \
'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/ekyc/submit' \
-H 'Content-Type: application/json' \
-d '{
"idDoc": {
"country": "IND",
"idDocType": "OTHER"
}
}'
// Verification basis: NID
curl -X POST \
'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/ekyc/submit' \
-H 'Content-Type: application/json' \
-d '{
"idDoc": {
"country": "KEN",
"idDocType": "ID_CARD",
"number": <National ID>
}
}'
// Verification basis: Passport
curl -X POST \
'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/ekyc/submit' \
-H 'Content-Type: application/json' \
-d '{
"idDoc": {
"country": "KEN",
"idDocType": "PASSPORT"
"number": <Passport number>
}
}'
curl -X POST \
'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/ekyc/submit' \
-H 'Content-Type: application/json' \
-d '{
"idDoc": {
"country": "MEX",
"idDocType": "ID_CARD",
"number": <CURP>
}
}'
// Verification basis: BVN
curl -X POST \
'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/ekyc/submit' \
-H 'Content-Type: application/json' \
-d '{
"info": {
"country": "NGA",
"tin": <bvn>
}
}'
// Verification basis: NIN
curl -X POST \
'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/ekyc/submit' \
-H 'Content-Type: application/json' \
-d '{
"idDoc": {
"country": "NGA",
"idDocType": "ID_CARD",
"number": <NIN>
}
}'
// Verification basis: Driver’s License
curl -X POST \
'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/ekyc/submit' \
-H 'Content-Type: application/json' \
-d '{
"idDoc": {
"country": "NGA",
"idDocType": "DRIVERS"
"number": <Driver License number>
}
}'
curl -X POST \
'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/ekyc/submit' \
-H 'Content-Type: application/json' \
-d '{
"idDoc": {
"country": "NLD",
"idDocType": "OTHER",
"firstName": "John",
"lastName": "Doe"
}
}'
curl -X POST \
'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/ekyc/submit' \
-H 'Content-Type: application/json' \
-d '{
"idDoc": {
"country": "VNM",
"idDocType": "DRIVERS"
"number": <Driver License number>,
"dob": <YYYY-MM-DD>
}
}'
curl -X POST \
'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/ekyc/submit' \
-H 'Content-Type: application/json' \
-d '{
"idDoc": {
"country": "ZAF",
"idDocType": "ID_CARD"
"number": <National ID>
}
}'
Response explained
The following table describes the response structure.
Name | Type | Optional | Description |
---|---|---|---|
status | String | No | Verification status:
|
confirmationType | String | Yes | Confirmation type:
|
confirmationId | String | Yes | Confirmation ID. |
confirmationStatus | String | Yes | Confirmation flow status. |
otpConfirmation | Object | Yes | OTP confirmation details if confirmationType is otp . |
oauthConfirmation | Object | Yes | oAuth confirmation details if confirmationType is oAuth . |
Note
Access to the applicant data from some providers needs to be confirmed by the applicant. In that case,
status
will be set toconfirmationRequired
andconfirmationStatus
tocreated
. The confirmation type will be provided in theconfirmationType
field. For details on how to confirm submission, see this article.For example, for an Indian AADHAAR, the applicant receives an SMS with the OTP code on the phone number that is linked to that particular AADHAAR. The applicant should then provide the code to confirm access.
otpConfirmation
attributes
otpConfirmation
attributesName | Type | Description |
---|---|---|
codeLength | Number | The OTP code length. |
oAuthConfirmation
attributes
oAuthConfirmation
attributesName | Type | Description |
---|---|---|
url | String | An external auth URL where applicant should be directed to pass authentication. |
redirectUrl | String | The final URL address where the auth page will be redirected after the applicant finishes the journey. |
Mind the following:
- Applicants should be redirected to the
url
where they can authenticate the external source. At the end of the auth journey, applicants will be redirected to thecompleteUrl
consisting ofredirectUrl
enriched withqueryParams
with the auth result.- If
url
was opened in the child window,postMessage: {type: "ekycOauth", completeUrl: "<completeUrl>"}
will be sent.- Several redirects can be performed during the auth flow. To detect the completion of the journey, redirect to the
redirectUrl
or subscribe topostMessages
.- To complete the Non-Doc oAuth flow, pass the final full url as
completeUrl
to confirm the applicant data.
Response examples
Provided data is valid and no confirmation is required
{
"status" : "completed"
}
Provided data is valid and OTP confirmation is required
{
"status": "confirmationRequired",
"confirmationId": "bzaPxnCpyxEqs0sJKASXxZIk",
"confirmationStatus": "created",
"confirmationType": "otp",
"otpConfirmation": {
"codeLength": "6",
}
}
Provided data is valid and authentication through external services is required
{
"status" : "confirmationRequired",
"confirmationType" : "oAuth",
"confirmationId" : "wXhl47RZeJfoOSTmUFT9j5On",
"confirmationStatus" : "created",
"oauthConfirmation" : {
"url" : "https://ext.auth.service.com/oidc/authorize?param1=value1¶m2=value2",
"redirectUrl" : "https://api.sumsub.com/resources/ekyc/redirect"
}
}