Failure Scenarios
Overview
The identity verification process will attempt to exhaust all available options with a user before eventually terminating the verification process. This will happen as early as possible, if there's a strong evidence suggesting that the user will not achieve the relevant identity checking requirements for the requested scheme.
In the event that multiple schemes are requested , the identity verification flow will continue as long as one scheme could still be met.
Failures may include:
- 'Aborted' identity checks: Aborted identity checks are the result of a complete 'dead end' in the journey, meaning an identity profile will not be returned
- Requirements not met: Occurs when an identity profile can be returned, however scheme compliance couldn't be met
- Requirements not met details: Additional information around the failure, explaining which checks were involved, and why they may have failed
When a journey is incomplete, either entirely (aborted) or due to not reaching scheme compliance (requirements not met), a reason code will be returned to explain the failure.
These tables list the reason codes, a description of why they may occur, and the integration type in which they may be returned.
Since some failures can be triggered for multiple reasons, there is a priority for which overall reason code will be used. Details of all failed checks would be available in the failure details.
Retrieving the Profile
The Identity Profile and any failures returned can be retrieved through the Yoti SDKs
IDVClient.getSession(sessionId)
.then((session) => {
const advancedIdentityProfile = session.getAdvancedIdentityProfile();
const result = advancedIdentityProfile.getResult();
const failureReason = advancedIdentityProfile.getFailureReason();
const failureCode = failureReason.getReasonCode();
const requirementsNotMetDetails =
failureReason.getRequirementsNotMetDetails();
// Check if there are any requirements not met details
// This may be empty
// There may be multiple details provided
if (requirementsNotMetDetails.length === 0) {
console.log("No requirements not met details found.");
} else {
const failureType = requirementsNotMetDetails[0].getFailureType();
const documentType = requirementsNotMetDetails[0].getDocumentType();
const countryCode = requirementsNotMetDetails[0].getDocumentCountryIsoCode();
const auditId = requirementsNotMetDetails[0].getAuditId();
const details = requirementsNotMetDetails[0].getDetails();
}
})
.catch((error) => {
console.log(error);
});
Example Failure
"advanced_identity_profile": {
"result": "ABORTED",
"failure_reason": {
"reason_code": "MISSING_LIVENESS",
"requirements_not_met_details": [
{
"failure_type": "LIVENESS",
"details": "USER_FAILED_LIVENESS"
}
]
}
}
Requirements not Met
Code | Description |
---|---|
MANDATORY_DOCUMENT_NOT_PROVIDED | The user does not have sufficient documents to reach the target level of identity verification. *This may be returned as an aborted reason, or a requirements not met reason. |
LEVEL_OF_ASSURANCE_NOT_SUFFICIENT | Some documents were supplied, but scheme compliance could not be reached. |
UNABLE_TO_VERIFY_ADDRESS | Identity profile has been generated but candidates address was not verified. |
Aborted
Reason | Description |
---|---|
MANDATORY_DOCUMENT_NOT_PROVIDED* | The user does not have sufficient documents to reach the target level of identity verification. *This may be returned as an aborted reason, or a requirements not met reason. |
FRAUD_DETECTED | Suspected fraud for the given identity therefore unable to reach the required identity profile. This should be reviewed. |
UNABLE_TO_VALIDATE_DOCUMENT | We have not been able to successfully validate a required document (for reasons other than suspected fraud, e.g. capture error) |
MISSING_LIVENESS | Returned if the session does not have a passed liveness check. |
IDENTITY_CHECK_FAILED | Additional checks on a user’s identity, required to meet the level of confidence, have not been successful. |
UNABLE_TO_COMPLETE_CHECKS | Required checks could not be completed. |
COULD_NOT_VERIFY_ADDRESS | Could occur if the address was not verified for any reason after the applicant leaves the session. |
FACE_MATCH_VERIFICATION_FAILED | The face match check could not be performed. |
FACE_MATCH_HIGHER_THRESHOLD_ VERIFICATION_FAILED | In some circumstances, a higher level of confidence in the face match is required, such as if the presented identity is at higher risk of identity fraud. This reason code is returned if such a higher threshold could not be met. |
IDENTITY_FRAUD_SCORE_INSUFFICIENT | The profile has not reached the identity fraud score for the specified scheme. |
ABANDONED | Expired sessions will eventually be set to ABANDONED, there is approximately a two hour delay between this aborted reason appearing from expiry. |
Requirements not met details
The requirements not met details structure is a list of objects which contains information to supplement the overall returned reason code. This surfaces information around the specific check, or multiple checks, which may have led to the failure.
The following fields are returned per each object in the structure:
failure_type
document_type
document_country_iso_code
audit_id
details
Failure Type | Associated Reason Code(s) |
---|---|
ID_DOCUMENT_EXTRACTION | MANDATORY_DOCUMENT_NOT_PROVIDED |
ID_DOCUMENT_AUTHENTICITY | UNABLE_TO_VALIDATE_DOCUMENT MISSING_FRAUD_LIST_CHECK FRAUD_DETECTED The failure reason details will be populated with the check report recommendation. The list can be found here |
ID_DOCUMENT_COUNTRY | MANDATORY_DOCUMENT_NOT_PROVIDED |
ID_DOCUMENT_FACE_MATCH | FACE_MATCH_VERIFICATION_FAILED FACE_MATCH_VERIFICATION_HIGHER_THRESHOLD_FAILED FRAUD_DETECTED The failure reason details will be populated with the check report recommendation. The list can be found here |
ID_DOCUMENT_ADDRESS_VERIFICATION | See ID Check table below |
IDENTITY_CHECK | See ID Check table below |
LIVENESS | MISSING_LIVENESS |
UNLINKED_DOCUMENT_EVIDENCE | MANDATORY_DOCUMENT_NOT_PROVIDED Documentary evidence may be 'unlinked' if either the name, dob, or both do not match to additional document evidence in the requested scheme. |
ID Check
This table lists the failure details codes that can be returned alongside the failure type of IDENTITY_CHECK
.
Provider | Details | Reason code | Description |
---|---|---|---|
CRA | ERROR_WHEN_PERFORMING_CHECK | UNABLE_TO_COMPLETE_CHECKS | Something when wrong when calling the TransUnion server |
CRA | PEP_WARNING | IDENTITY_CHECK_FAILED | CRA check flagged the user as PEP or the check was not performed (i.e. the user's current address is claimed to be outside of the UK). If flagged as PEP, additional verification checks failed. |
CRA | DECEASED_WARNING | IDENTITY_CHECK_FAILED | CRA check flagged the user as deceased or the check was not performed (i.e. the user's current address is claimed to be outside of the UK) |
CRA | UNABLE_TO_VERIFY_ADDRESS | For DBS basic: When the address could not be verified | |
CRA | UNABLE_TO_VERIFY_ADDRESS | IDENTITY_CHECK_FAILED | For DBS standard/enhanced: When the address could not be verified |
CRA | UNABLE_TO_VERIFY_IDENTITY | IDENTITY_CHECK_FAILED | When the CRA check failed to find a match for the name or DOB |
ID Doc Extraction
This table lists the failure details codes that can be returned alongside the failure type of ID_DOCUMENT_EXTRACTION
.
Details | Description |
---|---|
POOR_FOCUS | The image is too blurry to read the document details |
POOR_LIGHT | The provided document image was not taken in adequate light |
TOO_LIGHT | The provided document image has too much light or glare |
POOR_DOC | The image is too blurry to read the document details |
PARTIAL_SIDE_DOC | Parts of the document are missing from the image (i.e. missing side) |
PARTIAL_PHOTO | Parts of the document side are missing from the image |
DOCUMENT_COPY | The document has not been presented in its original form |
BLACK_AND_WHITE_IMAGE | The document image provided is not in colour |
NO_DOCUMENT | We could not detect a document in the captured image |
TEMPLATE | All parts of the document template could not be detected |
USER_DOES_NOT_HAVE_REQUESTED_DOCUMENTS | If the user did not provide all, or any of the documents required for the scheme, and there is no other failure reason |