Get started with identity verification
Start conducting effective identity verification with the Non-Doc solution.
To start using Non-Doc Identity Verification, you can opt for:
- Code-free integration involving our SDKs.
- API integration.
Note
Non-Doc Identity Verification comes at an additional cost regardless of the integration method. Make sure to contact us before starting the integration.
Verify identity via Web and Mobile SDKs
Use our Web and Mobile SDKs to conduct Non-Doc Identity Verification code-free:
- Set up the integration, as described in the WebSDK integration article and MobileSDK integration article.
- Create a verification level and add a Non-Doc verification step.
- Conduct verification and handle verification results.
Use Sumsub API
You can utilize our public API endpoints to conduct identity verification using the Non-Doc solution:
- Create a verification level with a Non-Doc step.
- Create an applicant and pass the level name created at step 1 as the
levelName
query parameter.
curl -X POST \
'https://api.sumsub.com/resources/applicants?levelName=doc-free-level' \
-H 'Content-Type: application/json' \
-d '{
"externalUserId": "someUniqueUserId",
}'
{
"id": "65d72c063cf64929770e36c7",
"createdAt": "2024-02-22 11:12:06",
"key": "EJBDYWTFWAQXSH",
"clientId": "client_id",
"inspectionId": "65d72c063cf64929770e36c8",
"externalUserId": "someUniqueUserId",
"info": {},
"applicantPlatform": "API",
"requiredIdDocs": {
"videoIdent": true,
"videoIdentUploadTypes": [
"ID_CARD",
"PASSPORT"
],
"docSets": [
{
"idDocSetType": "IDENTITY",
"types": [
"ID_CARD",
"PASSPORT",
"RESIDENCE_PERMIT",
"DRIVERS"
],
"subTypes": [
"FRONT_SIDE",
"BACK_SIDE"
],
"videoRequired": "disabled",
"captureMode": "manualAndAuto",
"uploaderMode": "always"
},
{
"idDocSetType": "IDENTITY2",
"types": [
"VISA"
]
}
]
},
"review": {
"reviewId": "GwVKG",
"attemptId": "VrrHy",
"attemptCnt": 0,
"levelName": "basic-kyc-level",
"levelAutoCheckMode": null,
"createDate": "2024-02-22 11:12:06+0000",
"reviewStatus": "init",
"priority": 0
},
"type": "individual",
"inspectionMetadata": []
}
- Submit the applicant data as the following example demonstrates.
curl -X POST \
'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/ekyc/submit' \
-H 'Content-Type: application/json' \
-d '{
"info": {
"country": "IND",
"tin": "999999990019",
}
}'
You will receive one of the following answers, depending on the results and the need for confirmation:
- The provided data is valid and no confirmation is required.
{ "status" : "completed" }
- The provided data is valid and OTP confirmation is required.
{ "status": "confirmationRequired", "confirmationId": "bzaPxnCpyxEqs0sJKASXxZIk", "confirmationStatus": "created", "confirmationType": "otp", "otpConfirmation": { "codeLength": "6", } }
- The 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" } }
If something goes wrong or the provided data is invalid, you will receive an error message with the error code and the applicant must resubmit their information.
- [Optional] Confirm the applicant data if required. If in the previous step, you received
status : confirmationRequired
, you will need to confirm submission by one of the following methods, depending on theconfirmationType
.
curl -X POST \
'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/ekyc/confirm/bzaPxnCpyxEqs0sJKASXxZIk' \
-H 'Content-Type: application/json' \
-d '{
"otp": {
"code": "123456",
}
}'
curl -X POST \
'https://api.sumsub.com/resources/applicants/631f268442d8290001e1eee9/ekyc/confirm/bzaPxnCpyxEqs0sJKASXxZIk' \
-H 'Content-Type: application/json' \
-d '{
"oauth": {
"completeUrl": "https://in.sumsub.com/idensic/ekyc/redirect?code=rUKrpIoRZ44ENZnz8EC6FP",
}
}'
{
"status": "confirmationRequired",
"confirmationType": "otp",
"confirmationId": "bzaPxnCpyxEqs0sJKASXxZIk",
"confirmationStatus": "retry",
"otpConfirmation": {
"codeLength": "6",
}
}
- Upload a selfie with
idDocType: "SELFIE"
.
curl -X POST \
'https://api.sumsub.com/resources/applicants/5b75a5e80a975a3ef2102a87/info/idDoc' \
-H 'Content-Type: multipart/form-data' \
-H 'X-Return-Doc-Warnings: true' \
-F 'metadata={"idDocType":"SELFIE","country":"USA"}' \
-F 'content=@/SumSub/Example/name.jpg'
{
"idDocType" : "SELFIE",
"country" : "USA"
}
curl -X POST \
'https://api.sumsub.com/resources/applicants/5b73b82f0a975a3b46429758/status/pending'
{
"ok": 1
}
Enable Non-Doc Identity Verification at Identity document step
If you want to have both of the options—Non-Doc and Identity document—available as a single verification step in the WebSDK:
- In the Dashboard, open the Supported ID Documents page and enable Non-Doc Check for countries where you want to make this option available.
- Set up a verification level:
- In the General section, select the New version of WebSDK toggle to enable the WebSDK 2.0.
- Add the following verification steps: Identity document, Selfie.
Fallback to standard verification
In case something goes wrong during Non-Doc Identity Verification or you just want to verify applicants using the standard document verification approach:
- For SDKs, use the Workflow Builder to configure the verification flow as necessary.
- For the API, If you already have a complex logic on your side, move the applicants to a desired level by using this API method.
Updated about 2 months ago