Receive results via API

Understand verification statuses, associated webhooks, and rejection labels.

After applicant verification is complete, we send you the results via the applicantReviewed webhook.

In this webhook, you can find the reviewResult object with the reviewAnswer field that indicates the verification status. If the status 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.
  • reviewAnswer — explains the review result: GREEN — approved, RED — rejected.
  • rejectLabels — enumerates rejection labels.
  • reviewRejectType — Indicates the type of rejection:
    • FINAL — indicates a final rejection, for example, when the applicant is considered to be a fraudster or when the applicant is in a category the client does not accept.
    • RETRY — applicants are allowed to resubmit their documents, for example, by uploading an image of better quality.
  • buttonIds — specific identifiers that are automatically assigned to each rejection of an applicant or a document. For more details, see Resubmission requested and Rejected.

An example webhook payload with a GREEN response:

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

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

{
  "applicantId": "5cb744200a975a67ed1798a4",
  "inspectionId": "5cb744200a975a67ed1798a5",
  "correlationId": "req-fa94263f-0b23-42d7-9393-ab10b28ef42d",
  "externalUserId": "externalUserId",
  "levelName": "id-and-liveness",
  "type": "applicantReviewed",
  "reviewResult": {
    "moderationComment": "We could not verify your profile. If you have any questions, please contact the Company where you try to verify your profile ${clientSupportEmail}",
    "clientComment": "Verification rejected due to excessive file uploads.",
    "reviewAnswer": "RED",
    "rejectLabels": [
      "UNSATISFACTORY_PHOTOS",
      "GRAPHIC_EDITOR",
      "FORGERY"
    ],
    "reviewRejectType": "FINAL",
    "buttonIds": [
      "selfie_badFaceComparison",
      "badPhoto",
      "additionalPages",
      "badDocument",
      "additionalPages_anotherSide",
      "badDocument_withoutFace",
      "badPhoto_screenshot",
      "selfie",
      "spam",
      "badPhoto_dataNotVisible"
    ]
  },
  "reviewStatus": "completed",
  "createdAtMs": "2020-02-21 13:23:19.001"
}

Understand rejection

When applicants are rejected, we automatically assign rejection labels to their profile. We also assign explanatory buttons clarifying the reason for rejection. Explanatory buttons may have a Resubmission requested or Rejected state. To get the list of explanatory buttons by applicantId, use this API method.

❗️

Important

Rejection labels do not define the rejection type. Depending on the check, the same label can indicate either a Rejected or Resubmission requested status. To see the exact state:

Rejection label Description
ADDITIONAL_DATA_REQUIREDAdditional data is required to complete VI verification.
ADDITIONAL_DOCUMENT_REQUIREDAdditional documents required to pass the check (for image review).
ADVERSE_MEDIAThe applicant was found in the adverse media.
AGE_REQUIREMENT_MISMATCHThe age requirement is not met (for instance, cannot rent a car to a person below the age of 25).
APPLICANT_INTERRUPTED_INTERVIEWOn Video Ident call applicant refused to finish the interview.
BACK_SIDE_MISSINGBack side of the document is missing.
BAD_AVATARAvatar does not meet your requirements.
BAD_FACE_MATCHINGFace check between a document and selfie failed.
BAD_PROOF_OF_ADDRESSApplicant uploaded a poor quality proof of address.
BAD_PROOF_OF_IDENTITYApplicant uploaded a poor quality ID document.
BAD_PROOF_OF_PAYMENTApplicant uploaded a poor quality proof of payment.
BAD_SELFIEApplicant uploaded a selfie in poor quality.
BAD_VIDEO_SELFIEApplicant uploaded a video selfie in poor quality.
BEHAVIORApplicant demonstrated inappropriate response to the procedure requirements and/or was in a condition not suitable to complete verification successfully.
BLACK_AND_WHITEApplicant uploaded black and white photos of documents.
BLOCKLISTApplicant is blocklisted by your side.
CAMERA_OR_LIGHTING_ISSUESApplicant had unsuitable camera or lighting conditions.
CHECK_UNAVAILABLEExternal database service is not available at the moment.
COMPANY_DATA_MISMATCHCompany attributes like name and registration on the provided documents do not match state company registry.
COMPANY_INACTIVE_ENTITYAccording to the publicly available state company registry, the entity is inactive, dissolved, or deregistered.
COMPANY_INCORRECT_DATAProvided company attributes like name, registration or tax number do not match the provided documents or the state company registry.
COMPANY_NOT_DEFINED_BENEFICIARIESCould not identify and duly verify the entity's beneficial owners.
COMPANY_NOT_DEFINED_OWNERSHIP_STRUCTURECompany ownership structure has not specified or differs from the one declared by the corporate documents.
COMPANY_NOT_DEFINED_REPRESENTATIVESRepresentatives are not defined.
COMPANY_NOT_DEFINED_STRUCTURECould not establish the entity's control structure.
COMPANY_NOT_VALIDATED_BENEFICIAL_OWNERSNot all beneficial owners have passed the KYC verification procedure.
COMPANY_NOT_VALIDATED_BENEFICIARIESBeneficiaries are not validated.
COMPANY_NOT_VALIDATED_DIRECTORSNot all directors have passed the KYC verification procedure.
COMPANY_NOT_VALIDATED_REPRESENTATIVESRepresentatives are not validated.
COMPANY_PROBLEMATIC_STRUCTUREThere are officials in the control and ownership structure who got rejected.
COMPROMISED_PERSONSApplicant does not correspond to Compromised Person Politics.
CONNECTION_INTERRUPTEDVideo Ident call connection was interrupted.
CONNECTION_ISSUESApplicant had unsuitable internet connection.
CRIMINALThe user is involved in illegal actions.
DB_DATA_MISMATCHInput data/doc does not match data from external database.
DB_DATA_NOT_FOUNDData not found in external database.
DB_NO_DATA_SOURCEInput data is not supported by any enabled source.
DIGITAL_DOCUMENTDocument is digital and cannot be accepted.
DOCUMENT_DAMAGEDDocument is damaged.
DOCUMENT_DEPRIVEDThe user has been deprived of the document.
DOCUMENT_MISSINGOn Video Ident call user refused to show or did not have required documents.
DOCUMENT_PAGE_MISSINGSome pages of a document are missing (if applicable).
DOCUMENT_TEMPLATEApplicant provided documents that are templates downloaded from the Internet.
DUPLICATEApplicant was already created for this client, and duplicates are not allowed by the regulations.
ESIGN_FAILEDE-Sign failed, most likely due personal info mismatch. Required to retry QES flow.
EXPERIENCE_REQUIREMENT_MISMATCHNot enough experience (for instance, driving experience is not enough).
EXTERNAL_DECISION_REJECTIONAlways final client reject (applicant status via API).
EXPIRATION_DATEApplicant uploaded an expired document.
FOREIGNERApplicants from a different country or, for instance, without a residence permit are not accepted.
FORGERYForgery attempt.
FRAUDULENT_LIVENESSAn attempt to bypass liveness check.
FRAUDULENT_PATTERNSFraudulent behavior was detected.
FRONT_SIDE_MISSINGFront side of the document is missing.
GPS_AS_POA_SKIPPEDGpsAsPoa was skipped and no image uploaded.
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_LANGUAGEApplicant should upload translation of their document.
INCOMPLETE_DOCUMENTSome information is missing from the document, or it is partially visible.
INCORRECT_PATTERNSNetwork patterns incorrectly identified.
INCORRECT_SOCIAL_NUMBERIncorrect TIN/SSN was provided to perform the check.
INCONSISTENT_PROFILEData or documents of different persons were uploaded to one applicant.
INSUFFICIENT_DATAInsufficient data to make a determination.
LOW_QUALITYDocuments have low quality that does not allow to make definitive conclusions.
MORE_DOCUMENTS_REQUIREDAdditional documents required to pass the check (for applicant review).
NOT_ALL_CHECKS_COMPLETEDSome of the checks were not completed.
NOT_ALONEApplicant was not alone.
NOT_DOCUMENTApplicant provided documents that are not relevant for the verification procedure.
NO_APPLICANTApplicant could not join the call.
NO_SUITABLE_DOCSApplicant could not provide a suitable document.
OKCustom reject label.
OTHERUnclassified reason.
OTHER_VI_ISSUESApplicant needs to call back later, was not prepared or able to continue now.
OUTDATED_DOCUMENT_VERSIONBased on the publicly available state company register, not the most recent version was provided.
PEPApplicant belongs to the PEP category.
PERSON_MISMATCHVideo call was initiated not by application data holder.
PHONE_VERIFICATION_ISSUESApplicant was not able to complete TAN step.
PROBLEMATIC_APPLICANT_DATAApplicant data does not match the data in the documents.
REFUSED_TO_CONTINUEApplicant refused to continue verification call.
REGULATIONS_VIOLATIONSApplicant violates applicable regulations or compliance requirements..
RESTRICTED_PERSONPerson is found in a restricted list (for instance, prohibited from betting).
REQUESTED_DATA_MISMATCHProvided info does not match the recognized from document data.
SANCTIONSApplicant was found on sanction lists.
SCREENSHOTSApplicant uploaded screenshots.
SELFIE_MISMATCHApplicant photo (profile image) does not match a photo on the provided documents.
SELFIE_WITH_PAPERApplicant should upload a special selfie (for instance, selfie with paper and date on it).
SOUND_ISSUESApplicant had audio input/output device settings issues.
SPAMApplicant has been created by mistake or is just a spam user (irrelevant images were supplied).
SPONSORED_VERIFICATIONApplicant is suspected in paid account opening.
STOLEN_DOCSIf the applicant flagged verification as not them via SNS ID, their documents were suspected stolen.
SUPPORTED_LANGUAGE_IS_NOT_AVAILABLEApplicant could not proceed on selected language.
THIRD_PARTY_GUIDANCEApplicant was misled/forced to create this account by a third party.
THIRD_PARTY_INVOLVEDApplicant was trying to pass verification to pass account to a third party.
UNFILLED_IDApplicant uploaded the document without signatures and stamps.
UNSATISFACTORY_PHOTOSProblems with the photos, like poor quality or masked information.
UNSUITABLE_DOCUMENTDocument either does not fit the required type or lacks obligatory elements, like seal, apostille, or notary certification.
UNSUITABLE_ENVOn Video Ident call, applicant is either not alone or not visible.
UNSUPPORTED_LANGUAGEApplicant do not speak language common to operator.
VIDEO_FILTERS_OR_MASKSVideo filters have been applied.
VI_ATTEMPTS_LIMIT_REACHEDVI attempts limit reached.
WRONG_ADDRESSThe address from the documents does not match the address that the applicant provided.
WRONG_USER_REGIONApplicants from certain regions/countries are not allowed to be registered.