Receive and interpret results via API

Understand verification statuses, associated webhooks, and rejection labels.

Verification can either be passed or not passed and marked with a GREEN or RED flag, respectively. The results are delivered with the applicantReviewed webhook expected to arrive at average in 3-5 minutes upon verification, but in some cases can take up to 24 hours.

👍

Tip

We recommend that you wait for the webhook no more than a day, and then send a request to our server for information about the applicant status.

This webhook contains the reviewResult object that includes the reviewAnswer field, indicating the verification status. If it is GREEN, it means verification went well. If it is RED, additional fields are added:

  • moderationComment — a human-readable comment that can be shown to your applicants. Note that some images may also contain additional document-specific comments, in which case the field might be empty. To get the additional comments, use this method.
  • clientComment — a human-readable comment that should not be shown to your applicants. This field will contain applicant top-level comments and—if reviewRejectType is FINAL—it may also contain some private information which should not be shared with anyone except administrative personnel on the client side.
  • rejectLabels — enumerates rejection labels.
  • reviewRejectType — Indicates the type of rejection:
    • FINAL — indicates a final rejection, e.g. when the applicant is considered to be a fraudster, or a client does not want to accept such types of clients.
    • RETRY — applicants are allowed to resubmit their documents, e.g. by uploading an image of better quality.

An example webhook payload with the RED (final rejection) response:

{
  "applicantId": "5cb744200a975a67ed1798a4",
  "inspectionId": "5cb744200a975a67ed1798a5",
  "correlationId": "req-fa94263f-0b23-42d7-9393-ab10b28ef42d",
  "externalUserId": "externalUserId",
  "levelName": "basic-kyc-level",
  "type": "applicantReviewed",
  "reviewResult": {
    "moderationComment": "We could not verify your profile. Please contact support: [email protected]",
    "clientComment": " Suspected fraudulent account.",
    "reviewAnswer": "RED",
    "rejectLabels": ["UNSATISFACTORY_PHOTOS", "GRAPHIC_EDITOR", "FORGERY"],
    "reviewRejectType": "FINAL"
  },
  "reviewStatus": "completed",
  "createdAtMs": "2020-02-21 13:23:19.001"
}

An example webhook payload with the GREEN response:

{
  "applicantId": "5cb56e8e0a975a35f333cb83",
  "inspectionId": "5cb56e8e0a975a35f333cb84",
  "correlationId": "req-a260b669-4f14-4bb5-a4c5-ac0218acb9a4",
  "externalUserId": "externalUserId",
  "levelName": "basic-kyc-level",
  "type": "applicantReviewed",
  "reviewResult": {
    "reviewAnswer": "GREEN"
  },
  "reviewStatus": "completed",
  "createdAtMs": "2020-02-21 13:23:19.321"
}

Understand rejection

When applicants are rejected, their profiles are labeled with rejection labels. Depending on the reason, applicants may be rejected either temporarily or finally.

📘

Info

In addition to the temporary and final rejection labels, we assign specific explanatory buttons, clarifying the reason of rejection. For more information, see this API request.

Temporary rejection labels

Temporary rejection usually occurs when the required documents are unsuitable or uploaded in poor quality.

Temporarily rejected applicants may correct any outstanding issues in accordance with the system instructions and attempt verification again.

The following table lists temporary rejection labels.

ValueDescription
APPLICANT_INTERRUPTED_INTERVIEWOn the Video identification call, the applicant refused to finish the interview.
BAD_FACE_MATCHINGFace check between document and selfie failed.
BAD_PROOF_OF_ADDRESSThe applicant uploaded a bad proof of address.
BAD_PROOF_OF_IDENTITYThe applicant uploaded a bad ID document.
BAD_PROOF_OF_PAYMENTThe applicant uploaded a bad proof of payment.
BAD_SELFIEThe applicant uploaded a bad selfie.
BAD_VIDEO_SELFIEThe applicant uploaded a bad video selfie.
BLACK_AND_WHITEThe applicant uploaded black and white photos of documents.
COMPANY_NOT_DEFINED_BENEFICIARIESCould not identify and duly verify the entity's beneficial owners.
COMPANY_NOT_DEFINED_REPRESENTATIVESRepresentatives are not defined.
COMPANY_NOT_DEFINED_STRUCTURECould not establish the entity control structure.
COMPANY_NOT_VALIDATED_BENEFICIARIESBeneficiaries are not validated.
COMPANY_NOT_VALIDATED_REPRESENTATIVESRepresentatives are not validated.
CONNECTION_INTERRUPTEDVideo Ident call connection was interrupted.
DOCUMENT_DAMAGEDDocument is damaged.
DOCUMENT_MISSINGOn the Video Ident call, the applicant refused to show or did not have required documents.
DOCUMENT_PAGE_MISSINGSome pages of a document are missing.
EXPIRATION_DATEThe user uploaded expired document.
GRAPHIC_EDITORThe document has been edited by a graphical editor.
ID_INVALIDA document that identifies a person (like a passport or an ID card) is not valid.
INCOMPATIBLE_LANGUAGEThe applicant should upload translation of his document.
INCOMPLETE_DOCUMENTSome information is missing from the document, or it's partially visible.
INCORRECT_SOCIAL_NUMBERThe applicant provided an incorrect social number (SSN, for example).
PROBLEMATIC_APPLICANT_DATAApplicant data does not match the data in the documents.
SCREENSHOTSThe applicant uploaded screenshots.
UNSATISFACTORY_PHOTOSThere were problems with the photos, like poor quality or masked information.
UNSUITABLE_ENVOn Video Ident call, the applicant is either not alone or nor visible.
WRONG_ADDRESSThe address from the documents doesn't match the address that the user entered.

Final rejection labels

Final rejections are due to major violations of the verification rules, such as fraud attempts. Finally rejected applicants are blocked and cannot attempt verification again.

The following table lists final rejection labels.

ValueDescription
ADVERSE_MEDIAThe applicant was found in the adverse media.
AGE_REQUIREMENT_MISMATCHAge requirement is not met (e.g. cannot rent a car to a person below 25yo).
BLACKLISTApplicant is blocklisted by our side.
BLOCKLISTApplicant is blocklisted by your side.
CHECK_UNAVAILABLEThe database is not available.
COMPROMISED_PERSONSThe applicant does not correspond to Compromised Person Politics.
CRIMINALThe applicant is involved in illegal actions.
DUPLICATEThis applicant was already created for this client, and duplicates are not allowed by the regulations.
FORGERYForgery attempt has been made.
FRAUDULENT_LIVENESSThere was an attempt to bypass liveness check.
FRAUDULENT_PATTERNSFraudulent behaviour was detected.
INCONSISTENT_PROFILEData or documents of different persons were uploaded to one applicant.
PEPThe applicant belongs to the PEP category.
REGULATIONS_VIOLATIONSRegulations violations.
SANCTIONSThe applicant was found on sanction lists.
SELFIE_MISMATCHAn applicant photo (profile image) does not match a photo on the provided documents.
SPAMAn applicant has been created by mistake or is just a spam user (irrelevant images were supplied).
NOT_DOCUMENTDocuments supplied are not relevant for the verification procedure.
THIRD_PARTY_INVOLVEDThe applicant is doing verification from a third party for a fee.
UNSUPPORTED_LANGUAGEUnsupported language for video identification.
WRONG_USER_REGIONWhen applicants from certain regions/countries are not allowed to be registered.