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:

📘

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 identify verification code-free:

  1. Set up the integration, as described in the WebSDK integration article and MobileSDK integration article.
  2. Create a verification level and add a Doc-free verification step.
  3. 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:

  1. Create a verification level with a Doc-free step.
  2. 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": []
}
  1. 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&param2=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.

  1. [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 the confirmationType.
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",
    }
}
  1. 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"
}
  1. Request an applicant check.
curl -X POST \
  'https://api.sumsub.com/resources/applicants/5b73b82f0a975a3b46429758/status/pending'
{
  "ok": 1
}
  1. Handle verification results.

Enable Doc-free 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:

  1. In the Dashboard, open the Supported ID Documents page and enable Doc-free Check for countries where you want to make this option available.
  2. Set up a verification level:

Fallback to standard verification

In case something goes wrong during Non-Doc 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 request.