Skip to main content
Document Verification V2 runs a set of checks on every uploaded document. This page explains each check that appears in the Verification Details section of the Trust Validation Results page and in the verificationStatuses, securityChecks and imageQuality arrays of the API response. For the checks supported by each document, see Supported documents.

How the response is structured

The checks perform during Document Verification V2 is shown in the table below: Example of Document Verification V2 response

Check statuses

Every check returns one of three values.
Not Performed is not a failure. It means the check was not run, because:
  • the check is not supported for this document type or version
  • the information the check needs is missing from the document (for example, no expiry date or no portrait area)
  • image quality was too low for the check to run
  • only one side was uploaded and the check needs the other side
  • the check is not enabled for your template (for example, MinAgeRequirement)

1. Document Type Check

verificationType: "DocumentTypeCheck" Checks whether the document was recognized as a known, valid version of a document in the reference database (country, document type and design year). If Document Type Filtering is enabled, it also matches the document type filtering based on allowed country and document types. The recognized document is returned in documentType:
documentTypeMatchesFilter shows the result of the document type filter set up in Trust Flow Tool Settings: If the uploaded document does not match the allowed document type in filteredDocumentTypes, the entire verification will be rejected. Example of rejected document type response due to not matching the document type filter:

2. Document Security Check

verificationType: "DocumentSecurityCheck" Checks whether the document is genuine and has not been forged. It looks for signs of counterfeiting, a replaced or pasted-on photo, a photocopy, a document shown on a screen instead of held in front of the camera, and parts of the document being covered. Types of security checks:

3. Document Quality Check

verificationType: "DocumentQualityCheck" Groups the capture-quality checks below. These check the photo, not the document, so a failure usually means the user should take the picture again. The parent status is derived the same way as for the security check. A quality failure on its own leads to Review Needed, not Rejected.

4. Document Text Check

verificationType: "DocumentTextExtraction" Checks the text read from the document (OCR). Each field is checked in two ways:
  1. Source validity: each value is checked on its own: check digits, date and number formats, and consistency between pages.
  2. Source comparison: when a field appears in more than one place on the document, the values must match. For example, the document number in the MRZ against the printed (VISUAL) number, or the barcode against the printed text.
Many national ID cards have no MRZ or barcode, so there is no second source to compare against. In that case the check returns Passed as long as text was extracted and no field was flagged. It does not return Not Performed just because there was nothing to compare.
When a field has values from several sources, textFields contains one entry per source, tagged with source:

Failure reasons

The reason of failure is displayed in extractedData.textExtractionFailures.reasons[].type A text failure on its own leads to Review Needed, because it is usually caused by a poor capture rather than by fraud.

5. Minimum Age Requirement

verificationType: "MinAgeRequirement"
This entry is only included when Restrict Age is turned on in your template and the minimum age is above 0.
Calculates the holder’s current age from the Date of Birth field. If the date can’t be read, it uses the document’s own Age field.

6. Document Expiration Check

verificationType: "DocumentExpirationCheck" Checks the document’s Date of Expiry against the current date.

How the final verdict is decided

The overall result (verificationStatusCode, also sent in the webhook) is decided in this order. The first rule that matches wins.

Document-specific adjustments

Some genuine documents always trip a particular check because of how they are made (for example, a photo glued onto thin card stock, or a card that is always printed in black and white). For these documents, IDmeta overrides the check before the result is stored. The API response, the dashboard and the webhook therefore always show the same result.

Key takeaways

  • Not Performed never counts against a document.
  • A failed security check always rejects the verification.
  • Quality and text failures on their own lead to Review Needed. Ask the user to retake the photo.
  • On two-sided documents, a failure on either side counts.