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—ifreviewRejectTypeisFINAL—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:
- Refer to the
reviewRejectTypefield in the applicantReviewed webhook.- Refer to the
reviewResult.reviewRejectTypefield in the response when getting the applicant review status.- Refer to the
review.reviewResult.reviewRejectTypefield in the response when requesting applicant data.
| Rejection label | Description |
|---|---|
ADDITIONAL_DATA_REQUIRED | Additional data is required to complete VI verification. |
ADDITIONAL_DOCUMENT_REQUIRED | Additional documents required to pass the check (for image review). |
ADVERSE_MEDIA | The applicant was found in the adverse media. |
AGE_REQUIREMENT_MISMATCH | The age requirement is not met (for instance, cannot rent a car to a person below the age of 25). |
APPLICANT_INTERRUPTED_INTERVIEW | On Video Ident call applicant refused to finish the interview. |
BACK_SIDE_MISSING | Back side of the document is missing. |
BAD_AVATAR | Avatar does not meet your requirements. |
BAD_FACE_MATCHING | Face check between a document and selfie failed. |
BAD_PROOF_OF_ADDRESS | Applicant uploaded a poor quality proof of address. |
BAD_PROOF_OF_IDENTITY | Applicant uploaded a poor quality ID document. |
BAD_PROOF_OF_PAYMENT | Applicant uploaded a poor quality proof of payment. |
BAD_SELFIE | Applicant uploaded a selfie in poor quality. |
BAD_VIDEO_SELFIE | Applicant uploaded a video selfie in poor quality. |
BEHAVIOR | Applicant demonstrated inappropriate response to the procedure requirements and/or was in a condition not suitable to complete verification successfully. |
BLACK_AND_WHITE | Applicant uploaded black and white photos of documents. |
BLOCKLIST | Applicant is blocklisted by your side. |
CAMERA_OR_LIGHTING_ISSUES | Applicant had unsuitable camera or lighting conditions. |
CHECK_UNAVAILABLE | External database service is not available at the moment. |
COMPANY_DATA_MISMATCH | Company attributes like name and registration on the provided documents do not match state company registry. |
COMPANY_INACTIVE_ENTITY | According to the publicly available state company registry, the entity is inactive, dissolved, or deregistered. |
COMPANY_INCORRECT_DATA | Provided company attributes like name, registration or tax number do not match the provided documents or the state company registry. |
COMPANY_NOT_DEFINED_BENEFICIARIES | Could not identify and duly verify the entity's beneficial owners. |
COMPANY_NOT_DEFINED_OWNERSHIP_STRUCTURE | Company ownership structure has not specified or differs from the one declared by the corporate documents. |
COMPANY_NOT_DEFINED_REPRESENTATIVES | Representatives are not defined. |
COMPANY_NOT_DEFINED_STRUCTURE | Could not establish the entity's control structure. |
COMPANY_NOT_VALIDATED_BENEFICIAL_OWNERS | Not all beneficial owners have passed the KYC verification procedure. |
COMPANY_NOT_VALIDATED_BENEFICIARIES | Beneficiaries are not validated. |
COMPANY_NOT_VALIDATED_DIRECTORS | Not all directors have passed the KYC verification procedure. |
COMPANY_NOT_VALIDATED_REPRESENTATIVES | Representatives are not validated. |
COMPANY_PROBLEMATIC_STRUCTURE | There are officials in the control and ownership structure who got rejected. |
COMPROMISED_PERSONS | Applicant does not correspond to Compromised Person Politics. |
CONNECTION_INTERRUPTED | Video Ident call connection was interrupted. |
CONNECTION_ISSUES | Applicant had unsuitable internet connection. |
CRIMINAL | The user is involved in illegal actions. |
DB_DATA_MISMATCH | Input data/doc does not match data from external database. |
DB_DATA_NOT_FOUND | Data not found in external database. |
DB_NO_DATA_SOURCE | Input data is not supported by any enabled source. |
DIGITAL_DOCUMENT | Document is digital and cannot be accepted. |
DOCUMENT_DAMAGED | Document is damaged. |
DOCUMENT_DEPRIVED | The user has been deprived of the document. |
DOCUMENT_MISSING | On Video Ident call user refused to show or did not have required documents. |
DOCUMENT_PAGE_MISSING | Some pages of a document are missing (if applicable). |
DOCUMENT_TEMPLATE | Applicant provided documents that are templates downloaded from the Internet. |
DUPLICATE | Applicant was already created for this client, and duplicates are not allowed by the regulations. |
ESIGN_FAILED | E-Sign failed, most likely due personal info mismatch. Required to retry QES flow. |
EXPERIENCE_REQUIREMENT_MISMATCH | Not enough experience (for instance, driving experience is not enough). |
EXTERNAL_DECISION_REJECTION | Always final client reject (applicant status via API). |
EXPIRATION_DATE | Applicant uploaded an expired document. |
FOREIGNER | Applicants from a different country or, for instance, without a residence permit are not accepted. |
FORGERY | Forgery attempt. |
FRAUDULENT_LIVENESS | An attempt to bypass liveness check. |
FRAUDULENT_PATTERNS | Fraudulent behavior was detected. |
FRONT_SIDE_MISSING | Front side of the document is missing. |
GPS_AS_POA_SKIPPED | GpsAsPoa was skipped and no image uploaded. |
GRAPHIC_EDITOR | The document has been edited by a graphical editor. |
ID_INVALID | A document that identifies a person (like a passport or an ID card) is not valid. |
INCOMPATIBLE_LANGUAGE | Applicant should upload translation of their document. |
INCOMPLETE_DOCUMENT | Some information is missing from the document, or it is partially visible. |
INCORRECT_PATTERNS | Network patterns incorrectly identified. |
INCORRECT_SOCIAL_NUMBER | Incorrect TIN/SSN was provided to perform the check. |
INCONSISTENT_PROFILE | Data or documents of different persons were uploaded to one applicant. |
INSUFFICIENT_DATA | Insufficient data to make a determination. |
LOW_QUALITY | Documents have low quality that does not allow to make definitive conclusions. |
MORE_DOCUMENTS_REQUIRED | Additional documents required to pass the check (for applicant review). |
NOT_ALL_CHECKS_COMPLETED | Some of the checks were not completed. |
NOT_ALONE | Applicant was not alone. |
NOT_DOCUMENT | Applicant provided documents that are not relevant for the verification procedure. |
NO_APPLICANT | Applicant could not join the call. |
NO_SUITABLE_DOCS | Applicant could not provide a suitable document. |
OK | Custom reject label. |
OTHER | Unclassified reason. |
OTHER_VI_ISSUES | Applicant needs to call back later, was not prepared or able to continue now. |
OUTDATED_DOCUMENT_VERSION | Based on the publicly available state company register, not the most recent version was provided. |
PEP | Applicant belongs to the PEP category. |
PERSON_MISMATCH | Video call was initiated not by application data holder. |
PHONE_VERIFICATION_ISSUES | Applicant was not able to complete TAN step. |
PROBLEMATIC_APPLICANT_DATA | Applicant data does not match the data in the documents. |
REFUSED_TO_CONTINUE | Applicant refused to continue verification call. |
REGULATIONS_VIOLATIONS | Applicant violates applicable regulations or compliance requirements.. |
RESTRICTED_PERSON | Person is found in a restricted list (for instance, prohibited from betting). |
REQUESTED_DATA_MISMATCH | Provided info does not match the recognized from document data. |
SANCTIONS | Applicant was found on sanction lists. |
SCREENSHOTS | Applicant uploaded screenshots. |
SELFIE_MISMATCH | Applicant photo (profile image) does not match a photo on the provided documents. |
SELFIE_WITH_PAPER | Applicant should upload a special selfie (for instance, selfie with paper and date on it). |
SOUND_ISSUES | Applicant had audio input/output device settings issues. |
SPAM | Applicant has been created by mistake or is just a spam user (irrelevant images were supplied). |
SPONSORED_VERIFICATION | Applicant is suspected in paid account opening. |
STOLEN_DOCS | If the applicant flagged verification as not them via SNS ID, their documents were suspected stolen. |
SUPPORTED_LANGUAGE_IS_NOT_AVAILABLE | Applicant could not proceed on selected language. |
THIRD_PARTY_GUIDANCE | Applicant was misled/forced to create this account by a third party. |
THIRD_PARTY_INVOLVED | Applicant was trying to pass verification to pass account to a third party. |
UNFILLED_ID | Applicant uploaded the document without signatures and stamps. |
UNSATISFACTORY_PHOTOS | Problems with the photos, like poor quality or masked information. |
UNSUITABLE_DOCUMENT | Document either does not fit the required type or lacks obligatory elements, like seal, apostille, or notary certification. |
UNSUITABLE_ENV | On Video Ident call, applicant is either not alone or not visible. |
UNSUPPORTED_LANGUAGE | Applicant do not speak language common to operator. |
VIDEO_FILTERS_OR_MASKS | Video filters have been applied. |
VI_ATTEMPTS_LIMIT_REACHED | VI attempts limit reached. |
WRONG_ADDRESS | The address from the documents does not match the address that the applicant provided. |
WRONG_USER_REGION | Applicants from certain regions/countries are not allowed to be registered. |
Updated 8 days ago