Get started with Non-Doc Identity Verification
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.
- To view and manage your available and active Non-Doc Identity Verification products, refer to this article
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
levelNamequery 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 15 days ago