PingOne Platform APIs

Verify Transactions

For each verification attempt, all the necessary information is gathered in a transaction. The verifyTransactions endpoint, /environments/{{envID}}/users/{{userID}}/verifyTransactions, receives all read, status, and control requests associated with the verification attempt.

In the responses is the verificationStatus object, a list that indicates the verification types being verified by the service and the verification status of each step. The verification types are keys in the list and the verification status is the value in the list.

The verification types for a verify transaction are determined from the verify policy.

In the response is expiresAt. Transactions do not allow users an unlimited amount of time to submit verification data and complete the verify transaction. If the verify transaction is not completed before the expiresAt date and time, the transaction fails. If all required documents are collected but are still being processed when expiresAt is reached, document processing continues and the transaction either passes or fails based on the processing result. The default verify transaction timeout is 30 minutes from transaction creation.

Furthermore, data collection is also time-constrained. (Data collected, such as the images of documents and images of the user ("selfies"), are required by the verification service.) Data collection time starts when the user initiates data collection using PingOne Verify web or native SDK. If required data are not submitted by the lesser of the data collection timeout and the time remaining before expiresAt, the transaction fails. The default data collection timeout is 15 minutes from the start of data collection.

To understand the timeouts, particularly the data collection timeout, an example may help. Let us say that the verify transaction timeout is 30 minutes and the data collection timeout is 15 minutes. If the user does not begin data collection for 18 minutes, the data collection timeout becomes 12 minutes - the lesser of the data collection timeout (15 minutes) and the remaining time before expiresAt (12 minutes).

You can create a new verify policy or update an existing verify policy to use different timeouts.

Verify transaction data model

Property Type Required? Mutable? Description

callback

Object

Optional

Immutable

Object containing a callback target. The first time a transaction transitions to SUCCESS or FAIL (expired transactions are ignored when they transition to FAIL), the service makes one GET request to the URL with the expected headers.

callback.headers

Object

Optional

Immutable

Object containing request header fields to include with the callback request. Can contain any number of key-value pairs where the key is a header field name and its value is the header field value, which cannot be null. Duplicate keys are not permitted.

callback.url

String

Required

Immutable

The URL to which a callback is sent. Must use HTTPS protocol and be a valid URL.

createdAt

DateTime

N/A

Read-only

Date and time the ID verification request was sent.

environment.id

String

Required

Immutable

PingOne environment identifier (UUID) for user.

expiresAt

DateTime

N/A

Read-only

Date and time the ID verification expires. A null value indicates it never expires.

id

String

N/A

Read-only

Transaction identifier (UUID).

qrUrl

String

N/A

Read-only

A link to retrieve a QR code image encoded with webVerificationUrl.

redirect

Object

Optional

Mutable

Contains redirect information for where users are redirected after document collection. Refer to redirect object.

requirements

Object

Optional

Mutable

Contains one or more objects that contain information used by the service: requirements object.

sendNotification

Object

Optional

Mutable

Endpoint to which notifications are sent: sendNotification object.

transactionStatus

Object

Required

Immutable

Status of the transaction: transactionStatus object.

updatedAt

DateTime

N/A

Read-only

Date and time the response was received by the identity provider. Can be null.

user.id

String

Required

Immutable

Identifier (UUID) for the user submitting the verify transaction.

verifyPolicy.id

String

Optional

Mutable

Identifier (UUID) of the verify policy.

webVerificationCode

String

N/A

Read-only

A code used to identify a particular transition from the desktop web interface to the mobile web interface.

webVerificationUrl

String

N/A

Read-only

A link to continue the transition from the desktop web interface to the mobile web interface. Refer to the note regarding query parameter options following this table.

The webVerificationUrl has query parameter options:

  1. You can append a &dt=1 query parameter to webVerificationUrl. You can offer to redirect your users to a mobile or desktop browser-based verification. By default, on laptop or desktop browsers, you present to the user a page with the QR code to continue verification on their mobile device. A &dt=1 query parameter also permits verification on laptop or desktop browsers.

  2. You can append a &auth=1 query parameter to webVerificationUrl. When you redirect your user to the PingID app for verification, you can suppress the instruction pages.

  3. Deprecated - This query parameter is replaced by message in the redirect object. You can append a &redirectMessage=<message> query parameter to webVerificationUrl, where <message> is an unquoted, URL-encoded text string. The message appears after document collection. For example: &redirectMessage=You%27ve%20successfully%20collected%20all%20document%2e%20Return%20to%20registration.

  4. Deprecated - This query parameter is replaced by url in the redirect object. You can append a &redirectUrl=<redirect URL> query parameter to webVerificationUrl, where <redirect URL> is a URL-encoded redirect URL. The redirect URL appears after document collection. For example: &redirectUrl=https%3A%2F%2Fhome.example.com%2Fs%2Fmembership.

For web-based verification, PingOne Verify permits custom domains for the webVerificationUrl returned by the Create Verify Transaction request. The service then serves the web verification single-page app (SPA) from {{customDomain}} instead of apps.pingone.com. The service also uses that domain in all SMS messages, email messages, and the QR code during web verification. The custom domain status must be ACTIVE and certificate must be unexpired.

For more information regarding custom domains, refer to Custom Domains.

redirect object

Used only in the request body of Create Verify Transaction and never returned by any API response.

Property Type Required? Mutable? Description

redirect.url

String

Required

Mutable

Redirect URL where the user is returned to after document collection.

redirect.message

String

Optional

Mutable

Message presented to the user after document collection for redirecting to the redirect.url. Refer to Interaction of redirect.auto and redirect.message.

redirect.auto

Boolean

Optional

Mutable

Whether or not the user, after document collection, is automatically redirected to the redirect.url. Default is false. Refer to Interaction of redirect.auto and redirect.message.

Interaction of redirect.auto and redirect.message

  • If redirect.auto is true and redirect.message is absent, the user is briefly presented with the message from the language pack of the environment before automatically following the redirect.url. The language pack key for this message is named verify.label.completeRedirectDescription.

  • If redirect.auto is true, then redirect.message is not permitted and causes an error if present.

  • If redirect.auto is false (or absent) and redirect.message is present, the user is presented the message with a Return button to click to follow the redirect.url.

  • If redirect.auto is false (or absent) and redirect.message is absent, the user is presented with a generic completion message with a Return button to click to follow the redirect.url. The language pack key for this generic message is named verify.label.completeDescription.

requirements object

Biographic matching occurs when the Verify Policy includes governmentId and the Create Verify Transaction includes the optional biographic matching data requirements (given_name, family_name, name, address, and birth_date). If the client does not provide biographic matching data, the service performs the verifications required by the verify policy. If the client does provide biographic matching data, the service performs the verifications required by the verify policy and then compares the data extracted from the government identity document to the data provided by the client.

Identity record matching occurs when the Verify Policy includes governmentId and the Create Verify Transaction includes the optional biographic matching data requirements (given_name, family_name, name, address, and birth_date). If the identityRecordMatching configuration object has at least one field defined with a threshold and the client does not provide biographic matching data corresponding to the required fields in the identityRecordMatching configuration object, an error is returned. If the client does provide biographic matching data, the service performs the verifications required by the verify policy and then compares the data extracted from the government identity document to the data provided by the client. If name is required by the identityRecordMatching configuration object but only given_name and family_name are submitted in requirements, given_name and family_name are combined as name. If address is required by the identityRecordMatching configuration object and databasedIdentityVerification is enabled in the verify policy, but only address_city, address_state, address_street, and address_zip are submitted in requirements, then address_city, address_state, address_street, and address_zip are combined as address.

If verifyPolicy.id is a policy that includes data based identity verification, then address_city, address_state, address_street, address_zip, birth_date, family_name, given_name, and national_id_number can have only one value. For non-US-based identities, address_street_line2 and country_code also can have only one value. You can use either value or options for the single value. However, use of options with more than one value returns an error. Furthermore, if an address is needed for data based identity verification, submitting only address returns an error. For US-based identities, the service requires at minimum for verification either name (or given_name and family_name) and national_id_number, which is a Social Security Number, or name (or given_name and family_name) and birth_date. Personally identifiable information (PII) is not returned unless Social Security Number or birth date are an exact match, and given name and family name are either a partial match or an exact match. If Social Security Number is not provided in requirements when creating the transaction, it is not returned.

Property Type Required? Mutable? Description

address_city

Object

Optional

Immutable

Object containing address cities. Can contain value or options, but not both

address_city.options

String[]

Required/Optional

Immutable

An array of address cities

address_city.value

String

Required/Optional

Immutable

One address city

address_state

Object

Optional

Immutable

Object containing address states. Can contain value or options, but not both

address_state.options

String[]

Required/Optional

Immutable

An array of address states

address_state.value

String

Required/Optional

Immutable

One address state

address_street

Object

Optional

Immutable

Object containing address streets. Can contain value or options, but not both

address_street.options

String[]

Required/Optional

Immutable

An array of address streets

address_street.value

String

Required/Optional

Immutable

One address street

address_street_line2

Object

Optional

Immutable

Object containing address second lines for street. Can contain value or options, but not both

address_street_line2.options

String[]

Required/Optional

Immutable

An array of address second lines for street

address_street_line2.value

String

Required/Optional

Immutable

One address second line for street

address_zip

Object

Optional

Immutable

Object containing address postal codes. Can contain value or options, but not both

address_zip.options

String[]

Required/Optional

Immutable

An array of address postal codes

address_zip.value

String

Required/Optional

Immutable

One address postal code

address

Object

Optional

Immutable

Object containing addresses. Can contain value or options, but not both

address.options

String[]

Required/Optional

Immutable

An array of addresses

address.value

String

Required/Optional

Immutable

One address

birth_date

Object

Optional

Immutable

Object containing the birth date. Can contain value or options, but not both

birth_date.options

String[]

Required/Optional

Immutable

An array of one birth date in YYYY-MM-DD format; more than one element is not supported.

birth_date.value

String

Required/Optional

Immutable

One birth date in YYYY-MM-DD format

country_code

Object

Optional

Immutable

Object containing the two character country codes. Can contain value or options, but not both

country_code.options

String[]

Required/Optional

Immutable

An array of country codes

country_code.value

String

Required/Optional

Immutable

One country code

email

Object

Optional

Immutable

Object containing email addresses.

email.options

String[]

Required

Immutable

An array of email addresses to send email one-time password to.

email.value

String[]

Required

Immutable

One address to send email one-time password to.

family_name

Object

Optional

Immutable

Object containing the family name. Can contain value or options, but not both

family_name.options

String[]

Required/Optional

Immutable

An array of family names

family_name.value

String

Required/Optional

Immutable

One family name

given_name

Object

Optional

Immutable

Object containing given names. Can contain value or options, but not both

given_name.options

String[]

Required/Optional

Immutable

An array of given names

given_name.value

String

Required/Optional

Immutable

One given name

name

Object

Optional

Immutable

Object containing the full name (given name and family name). Can contain value or options, but not both

name.options

String[]

Required/Optional

Immutable

An array of full names

name.value

String

Required/Optional

Immutable

One full name

national_id_number

Object

Optional

Immutable

Object containing national identification numbers. Can contain value or options, but not both

national_id_number.options

String[]

Required/Optional

Immutable

An array of national identification numbers

national_id_number.value

String

Required/Optional

Immutable

One national identification number

phone

Object

Optional

Immutable

Object containing a mobile phone number. Refer to Note on phone property.

phone.options

String

Required

Immutable

An array of mobile phone numbers to send SMS text one-time password (OTP) to.

phone.value

String

Required

Immutable

Mobile phone number to send SMS text one-time password (OTP) to.

referenceSelfie

Object

Required/Optional

Immutable

Object containing a reference self image. Refer to Note on referenceSelfie property

referenceSelfie.value

String

Required

Immutable

A base64-encoded reference self image. Image must be JPEG format.

If the verify policy includes dataBasedIdentityVerification, biographic matching objects (address, birth_date, email, family_name, and given_name) can have only one value, either with a .value or with an .options array containing only one element.

Note on phone property

When a phone number is needed, a valid phone number string must be provided in international format consisting of a leading plus sign, 1 to 3-digit country code, and 4 to 14-digit phone number, for example, +14155552671.

Always include the country code in the value you provide for the phone parameter. Phone formats across the globe are constantly expanding and changing. If the country code is not included, issues might occur with message delivery.

The following sample shows acceptable valid phone attribute formatting for the same number:

+1.5125201234
+15125201234
+1.512.520.1234
+1 (512) 520-1234

Note on referenceSelfie property

Whether a reference self image is required depends on the interaction of several properties of the verify policy referenced by verifyPolicy.id (or the default verify policy) and the verify transaction as it interacts with the user.

Optional and ignored when present if facialComparison.verify is DISABLED.

Optional and verified when facialComparison.verify is REQUIRED and governmentID.verify is REQUIRED or OPTIONAL

Required and verified when facialComparison.verify is REQUIRED or OPTIONAL and governmentID.verify is DISABLED

sendNotification object

Property Type Required? Mutable? Description

email

String

Optional

Mutable

The email address to send email verification notifications to

phone

String

Optional

Mutable

The phone number to send SMS text verification notifications to. Refer to the note regarding phone numbers following the requirements object table.

results

Object[]

N/A

Read-only

Array of objects that contain the results of attempts to notify the user. Provided only in the response to Create Verify Transaction.

results.error

Object

N/A

Read-only

Contains information regarding why a notification failed to send.

results.error.code

String

N/A

Read-only

A short alphanumeric code identifying the error.

results.error.details

Object[]

N/A

Read-only

Array of objects that contain details of the error as provided by the source of the error. Exact format varies by source.

results.error.id

String

N/A

Read-only

Identifier (UUID) of the error message.

results.error.message

String

N/A

Read-only

A textual message explaining the error.

results.method

String

N/A

Read-only

Method used in the attempt to notify the user. Can be EMAIL or SMS.

results.notification.id

String

N/A

Read-only

Identifier (UUID) of the notification that was sent.

results.sent

Boolean

N/A

Read-only

Whether the notification was successfully sent.

transactionStatus object

Property Type Required? Mutable? Description

providerMessagesList

Object

Optional

Immutable

Present when one or more verification types fail

providerMessagesList.messages

Object

Required

Immutable

Contains name-value pairs where name is the error code and value is a textual error description. Some error messages are listed in Verification error messages.

providerMessagesList.providerId

String

Required

Immutable

A generic descriptor of the provider. Can be ID_VALIDATION, Mitek, Amazon, IdFace, or IdVoice.

providerMessagesList.verificationType

String

Required

Immutable

Verification type to which the message applies; refer to Verification types

status

String

Required

Mutable

Status of the transaction, an enumerated list

verificationStatus

Object

Required

Immutable

Contains name-value pairs where name is a verification type and value is the status of the verification type, an enumerated list

Transaction level status definitions

Status Definition

APPROVED_MANUALLY

The administrator has decided to override the result of the verification. The service providers were unable to provide a positive response but the administrator was able to peruse the physical documents.

APPROVED_NO_REQUEST

The administrator perused the physical documents of the user and approved the request without the need for third party verification.

FAIL

All of the service providers have responded and some of the results are not positive. The transactionStatus object contains error messages.

IN_PROGRESS

The user scanned the QR code and submitted the data. The service prepares to submit the data to third party providers.

INITIATED

User has started collecting documents but has not sent them to the service to be processed.

NOT_REQUIRED

The administrator has decided that this user does not require to be verified.

PARTIAL

Some, but not all, service providers have responded. The service is waiting on responses from other providers.

REQUESTED

The transaction is initiated but user has not scanned the QR code or submitted the data.

SUCCESS

All of the service providers have responded and the result of the verification is positive from all providers.

Verification types

Verification type Definition

EMAIL

Verifies the user’s email address by sending a one time password (OTP) and having the user send that to PingOne Verify.

FACIAL_COMPARISON_GOVERNMENT_ID

Accepts a new self-image (selfie) and compares it to the image on the government identity document.

FACIAL_COMPARISON_REFERENCE_SELFIE

Accepts a new selfie and a reference selfie and compares the two selfies.

GOVERNMENT_ID

Accepts a government-issued identity document, such as drivers license or passport, and verifies it with verification providers.

IDENTITY_RECORD_MATCHING

Accepts biographic data and verifies it to identity document data.

LIVENESS

Accepts a single selfie and checks it for liveness.

PHONE

Verifies the user’s phone number by sending an OTP and having the user send that to PingOne Verify.

VOICE_ENROLLMENT

Performs voice enrollment with recordings provided by the user or by PingOne Verify’s customer.

VOICE_VERIFICATION

Performs voice verification with 1 recording provided by the end user or by PingOne Verify’s customer.

Voice verification is deprecated and will be removed on November 25, 2026.

Verification type level status definitions

Status Definition

DEPENDENCY_FAILED

Another verification type already failed and this verification type is not being processed. For example, Government ID will not be verified if the Facial Comparison or Liveness check failed.

DOCUMENT_COLLECTED

Documents were collected but not processed.

FAIL

The verification type completed and the result is not positive. The transactionStatus object contains error message.

IN_PROGRESS

The user has submitted the data and the service will perform the verification type.

MANUAL_INSPECTION

For government ID only: Verification submitted for manual inspection.

OTP_RETRYABLE

One Time Passcode (OTP) was returned but did not match the code sent. Retries are permitted if the retry count is less than the maximum.

OTP_SENT

One Time Passcode (OTP) was sent to the user.

OTP_VERIFIED

One Time Passcode (OTP) was returned by the user and verified.

REQUESTED

The verification type is requested but the user has not submitted the data.

RETRYABLE

The verification type completed but the image submitted is unacceptable. Retries are permitted, the retry count is less than the maximum, and the transaction has not timed out.

SKIPPED

The verify property of a verification type is OPTIONAL and the user chose to skip submitting it.

SUCCESS

The verification type completed and the result is positive.

TRANSACTION_TIMED_OUT

Transaction was not completed within the timeout period.

Verification error messages

Errors returned vary by vendor:

Mitek errors

API errors

If the transaction receives an error for reason code 144, DOCUMENT_IMAGES_MISMATCH - Document images do not match input type, you can ask the user to retry taking a document image.

Reason
Code

Error Code

Message

100

INTERNAL_ERROR

Internal Error

101

NO_RECORD

No record found

102

VALIDATION_IN_PROGRESS

Validation process has already been started

103

MISSING_SHOCARD_ID

Shocard Id is missing

104

MISSING_PUBLIC_KEY

App public key is not set

105

MISSING_CLAIM

Claim is missing

106

LIMIT_EXCEEDED

Exceeded number of validation requests

107

INVALID_REQUEST

Invalid Request

108

MISSING_DATA

Missing Shared data in request

109

DECRYPTION_ERROR

Error in decrypting data

110

FACE_VALIDATION_ERROR

Face validation failed

111

DOCUMENT_VALIDATION_ERROR

Document validation failed

112

DOCUMENT_VALIDATION_MISSING_DATA_ERROR

Document validation missing data

113

DOCUMENT_VALIDATION_INTERNAL_ERROR

Document validation internal error

114

JSON_READ_ERROR

JSON read error

115

JSON_WRITE_ERROR

JSON write error

116

FAILED_GETTING_TRANS_STATUS

Failed getting transaction status

117

INVALID_TRANSACTION_STATE

Invalid transaction state

118

DOCUMENT_VALIDATION_PROVIDER_INTERNAL_ERROR

Document validation provider internal error

119

DOCUMENT_VALIDATION_PROCESSING_RESULT_ERROR

Document validation processing result error

120

VALIDATION_NOT_IN_REQUESTED_STATUS

Validation status not in the REQUESTED STATUS

121

ENVIRONMENT_COULD_NOT_BE_FOUND

Could not find Environment

122

VERIFICATION_CAPABILITIES_ERROR

Environment does not have verification capabilities

123

ORGANIZATION_COULD_NOT_BE_FOUND

Could not find Organization

124

ORGANIZATION_QUOTA_ERROR

No organization quota

125

ORGANIZATION_QUOTA_DATE_ERROR

Current date is out of quota dates range

126

MISSING_UNIQUE_TOKEN

Missing/invalid unique token

127

PUBLIC_KEY_NOT_EMPTY

App public key has already been set

128

VERIFY_STATUS_NOT_INITIATED

verifyStatus not initiated

129

VERIFY_STATUS_IS_DISABLED

verifyStatus is disabled

130

LIVENESS_VALIDATION_ERROR

Liveness validation failed

139

DUPLICATE_RECORD_ERROR

There is an existing record

140

VALIDATION_NOT_IN_THE_EXPECTED_STATUS

Validation status not in the Expected STATUS

141

DOCUMENT_AGENT_ASSIST_INTERNAL_ERROR

Document agent assist internal error

142

DOCUMENT_AGENT_ASSIST_RESULT_ERROR

Document agent assist processing result error

143

DOCUMENT_AGENT_ASSIST_REQUEST_ERROR

Document agent assist processing result error

144

DOCUMENT_IMAGES_MISMATCH

Document images do not match input type

145

DEPENDENCY_FAILED

Verification not performed because a dependency failed

146

TRANSACTION_TIMEOUT

Transaction timeout exceeded

147

DATA_COLLECTION_TIMEOUT

Data collection timeout exceeded

148

DATA_COLLECTION_ONLY_NOT_SUPPORTED

Data collection only not supported

149

EXPIRED_GOVERNMENT_ID

Government ID is expired

150

OTP_ATTEMPTS_EXCEEDED

OTP attempts exceeded

151

OTP_SESSION_EXPIRED

OTP session expired

152

OTP_DELIVERY_FAILED

Failed to deliver OTP

153

MISSING_VERIFY_CONFIG

VerifyPolicy could not be found

154

INVALID_PROVIDER_CREDENTIAL_KEY

Invalid Credential Key

155

VOICE_ENROLLMENT_FAILED

Voice Enrollment failed

156

VOICE_VERIFICATION_FAILED

Voice Verification failed

157

VOICE_ENROLLMENT_NOT_FOUND

User has not enrolled in Voice verification

158

VOICE_RECORDING_SPOOFED

Voice recording liveness check failed

159

VOICE_RECORDING_POOR_QUALITY

Voice recording quality too poor

160

VOICE_RECORDING_SPEECH_SHORT

Voice recording speech length is too short

161

VOICE_SAMPLES_DONT_MATCH

Voice enrollment samples do not match

162

VOICE_MATCH_SCORE_TOO_LOW

Voice match score too low

163

VOICE_RECORDING_CHANNEL_CONFLICT

Voice recording channel conflict

164

PHONE_VALIDATION_ERROR

Phone validation failed

Processing reasons for document verification (automated)

If the transaction receives an error for reason codes marked Yes in the Retry column, you can ask the user to retry taking a document image.

Reason
Code

Message

Description

Retry

200

Image quality check failed.

The image has failed image quality check.

Yes

201

The image is not sharp.

The image is out of focus.

Yes

202

The image has glare.

Glare was found on the document preventing extraction or authentication.

Yes

203

The image is too dark.

The image is too dark.

Yes

204

The document on the image is too small. The amount of the image that the document takes up is too small.

Retake Image - Try changing from portrait to landscape mode or getting closer to the image.

Yes

205

The ID document could not be found. This can be caused by the image not showing all four corners of the document.

Retake Image - Ensure all four sides of the document are visible.

Yes

206

The type of ID document could not be determined.

The type of document could not be identified. This could be caused by a low quality image or it could be a document that is not supported.

Yes

208

Invalid Image Type. The encoding of the image is incorrect. It is not in a format that Mitek is able to process.

Take a new image in a supported format.

Yes

209

Image is too small The input image had a width or height less than 400 pixels.

Take a larger image.

Yes

210

Image processing failed after resizing. The input image had a width or height greater than 2000 pixels and was resized. You will only receive this message if processing failed after resizing.

Take a smaller image.

Yes

211

The authenticator could not run because the input image was missing

The authenticator was not able to assess the document because the input image was missing. Ensure that at least one image of an identity document was captured and submitted in the service request.

Yes

212

The image quality of the authenticator input image was poor.

The authenticator was not able to assess the document because the image quality was too poor. Have the consumer capture a better quality image.

Yes

500

The barcode could not be found.

The document was classified as a type that contains a barcode but the barcode could not be found.

501

The barcode could not be extracted.

The barcode was found but could not be read.

502

The barcode could not be parsed.

The barcode was read but the resulting data was not in the expected format.

503

The barcode could not be processed

A problem was encountered when trying to process barcode extraction and parsing.

510

No data could be extracted for this document.

Data could not be extracted

511

Data could not be extracted from the back of the document.

Data could not be extracted from the back of the document.

512

The front of the ID document could not be extracted.

The front of the ID document could not be extracted.

513

Document not supported for extraction.

The document may or may not be classified but it is currently not supported for extraction.

520

Data extraction was performed, but the system didn’t accept the results.

The data was extracted, but did not pass our additional checks to ensure the extraction is accurate.

600

The Enhanced Security Feature (ESF) was expected for this type of document and not found. The document should have contained an ESF feature but no ESF was found.

601

Only part of the Enhanced Security Feature (ESF) was found; the ID document may have been altered.

Only part of the Enhanced Security Feature (ESF) was found; the ID document may have been altered.

602

Only part of the Enhanced Security Feature (ESF) was found; the ID document may have been altered.

Only part of the Enhanced Security Feature (ESF) was found; the ID document may have been altered.

603

The Enhanced Security Feature (ESF) was found but shows evidence of tampering.

The Enhanced Security Feature (ESF) was found but shows evidence of tampering.

610

The picture area could not be identified.

The portrait on the document could not be located.

611

The picture image quality is too low. the portrait image quality is loo low.

Retake Image

612

The picture image has poor exposure. The picture image has poor exposure.

Retake Image

620

No MRZ was found on the document.

The document was expected to have an MRZ on it based on its classification but no MRZ could be found.

621

The MRZ was detected but was not in the proper format.

The MRZ was detected but was not in the proper format.

630

The MRZ check digits are invalid.

The MRZ check digits are invalid.

650

The fields used to determine font consistency could not be extracted

The fields used to determine font consistency did not return any extraction results

660

The document does not have enough fields to perform data comparison

Field comparison could not be performed because there were not enough fields on the document to perform a data comparison.

680

The barcode could not be found or was only partially detected on the document.

The PDF417 barcode, typically found on USA or Canadian driving licenses or ID cards, could not be detected.

698

The authenticator took too long to process.

The authenticator took longer to process than was allowed to ensure a quick Mobile Verify Auto response.

699

The authenticator is not available for this document.

This message is returned when an authenticity test was not applied to a document because the document doesn’t have the necessary features or some design features prevent evaluation

700

Unavailable due to scheduled maintenance

AAMVA or the document’s issuing jurisdiction is currently in a scheduled maintenance window. In order to avoid a billable event, this transaction was not submitted.

701

Jurisdiction temporarily unavailable

The document’s issuing jurisdiction is currently unable to process transactions.

702

Jurisdiction system error

The document’s issuing jurisdiction encountered an unknown error.

703

Jurisdiction did not respond in a timely manner

The document’s issuing jurisdiction did not respond in a timely manner.

801

Document is too close to the camera

Document Liveness could not be performed, because the document is too close to the camera.

802

Document is too close to the image border

Document Liveness could not be performed, because the distance between document and image border is too small.

803

Part of the document is not present in the image

Document Liveness could not be performed, because a part of the document is not visible in the image.

804

Document is not detected in the image

Document Liveness could not be performed, because the document could not be detected in the image.

805

Document size in the image is too small

Document Liveness could not be performed, because the document size in the image is too small.

806

Too many documents were detected in the image

Document Liveness could not be performed, because there are multiple documents in the image.

807

Document Liveness temporarily unavailable

Document Liveness service did not respond in a timely manner.

Selfie capture

If the transaction receives an error for error codes marked Yes in the Retry column, you can ask the user to retry taking a selfie.

Error Code Error Message Meaning Retry

FACE_ANGLE_TOO_LARGE

Facial out-of-plane rotation angle is extremely large

Facial out-of-plane rotation angle is extremely large

Yes

FACE_CLOSE_TO_BORDER

Face is too close to one or more borders

Face is too close to one or more borders. May reduce the accuracy of spoofing detection because edges of face may not be seen

Yes

FACE_CROPPED

Face is cropped

Face is cropped. May reduce the accuracy of spoofing detection because edges of face may not be seen

Yes

FACE_IS_OCCLUDED

Face is occluded

There is occlusion of a face, which impacts the accuracy of liveness. This detection is designed to work with the medical masks that cover nose and mouth, other occlusions are not guaranteed. Occlusion detection has probabilistic nature and may have errors. The threshold setting for occlusion detection may be tuned by changing face_occlusion_threshold setting. Please refer to PAD Configuration in Docker section for more information.

Yes

FACE_NOT_FOUND

Failed to detect face

Face detector can’t find face on image. Face detection has probabilistic nature and may have errors. It also has some sensitivity level and very small faces may be ignored.

Yes

FACE_TOO_CLOSE

Face is too close to the camera

A distance between face and image border is too small for preprocessing issues

Yes

FACE_TOO_SMALL

Interpupillary distance is too small

Facial area is not big enough for analysis. Interpupillary distance in pixels is below the configured value

Yes

Absolute face size is too small

Facial area is not big enough for analysis. Absolute face size in pixels is below the configured value

Yes

Relative face size is too small

Facial area is not big enough for analysis. The relative proportion of face size in the image is below the configured value

Yes

FAILED_TO_ALLOCATE

Current vm.max_map_count limit is too low

Memory allocation error

FAILED_TO_PREDICT_LANDMARKS

Failed to predict landmarks

Landmarks prediction error

FAILED_TO_PREPROCESS_IMAGE_WHILE_DETECT

Face detection error

Face detection error

FAILED_TO_PREPROCESS_IMAGE_WHILE_PREDICT

Failed to preprocess image for *

Liveness prediction error

FAILED_TO_READ_IMAGE

File decoding error

File decoding error

FAILED_TO_READ_MODEL

Failed to read model

Model deserializing error

FAILED_TO_WRITE_IMAGE

File encoding error

File encoding error

INVALID_CONFIG

Field * not found in config

Configuration file deserializing error

INVALID_FUSE_MODE

Invalid fuse mode provided

Invalid fuse mode provided

INVALID_META

Invalid OS value provided in meta, should be one of: UNKNOWN, DESKTOP, ANDROID, IOS

Invalid facesdk::Meta value

LICENSE_ERROR

Some error occurred during license checking

Some error occurred during license checking

NO_SUCH_OBJECT_IN_BUILD

Object * not found

Engine or backend is not supported by the build

NULLPTR

Empty image

Nullptr provided

TOO_MANY_FACES

Too many faces detected

Face detector found more than one face on image. Please, note, that very small faces may be ignored if they are below the sensitivity level.

UNKNOWN

JNI: unknown exception

Unhandled exception in the code

Veriff errors

If the transaction receives an error for reason codes marked Yes in the Retry column, you can ask the user to retry taking a document image.

Reason
Code

Message

Retry

105

Suspicious behavior

204

Poor image quality

504

Attempted deceit, device screen used

505

Attempted deceit, printout used

507

Presented document tampered, data cross reference

508

Presented document tampered, document similarity to specimen

602

Presented document type not supported

608

Document front missing

Yes

614

Document front not fully in frame

Yes

619

Document data not visible

Yes

621

Document annulled or damaged

Yes

625

Unable to collect surname

Yes

627

Unable to collect date of birth

Yes

628

Unable to collect issue date

Yes

629

Unable to collect expiry date

Yes

630

Unable to collect gender

Yes

631

Unable to collect document number

Yes

632

Unable to collect personal number

Yes

633

Unable to collect nationality

Yes

634

Unable to collect home address

Yes

644

Unable to collect Identificador de Ciudadano (INE)

Yes

645

Resubmit - Unable to collect OCR (IFE)

Yes

647

Document not recognized

Yes

648

Technical issues

Yes

653

Unable to collect residence permit type

Yes

654

Unable to collect driver’s license number

Yes