Skip to content

Accepted documents

You decide which documents a verification will accept by passing allowed_documents to POST /v1/verifications (or by configuring the document step of a Flow). The applicant then picks one of them on the hosted page. If you omit it, the applicant gets the default Mozambique surface.

allowed_documents is a list of { country, document_type } entries. The country is an explicit ISO-3166-1 alpha-2 code — wildcards ("*") are rejected at request time; always pin the countries you accept.

{
"type": "kyc",
"allowed_documents": [
{ "country": "MZ", "document_type": "bilhete_identidade" },
{ "country": "MZ", "document_type": "passport" },
{ "country": "PT", "document_type": "passport" }
]
}

The applicant flow follows from the list:

  • One entry → pinned; the applicant goes straight to capture.
  • Multiple → the applicant picks the issuing country first, then the document type allowed for it.

Every (country, document_type) pair falls into one of three groups. The group determines what the verification can return — never whether your request is accepted.

Four documents have per-country tuning: templates, MRZ rules, document-side profiles, and thresholds. They get the full range of assessments, including no_material_concerns.

Country document_type Document
MZ bilhete_identidade Mozambique Bilhete de Identidade
MZ passport Mozambique passport
MX national_id Mexico national ID (INE)
MX passport Mexico passport

2. Accepted for manual review, not assessed

Section titled “2. Accepted for manual review, not assessed”

The other accepted documents are accepted for manual review, not assessed:

Country document_type Document
any explicit country passport ICAO 9303 machine-readable passport
MZ drivers_license Carta de condução
MZ dire DIRE residence permit
MX drivers_license Licencia de conducir
MX residence_permit Tarjeta de residente

A verification with one of them never returns no_material_concerns. Expect manual_review_recommended with the reason uncalibrated_document_scope, and review the capture yourself before you act.

So a foreigner resident in Mozambique can still go through your flow with their home-country passport: list { "country": "PT", "document_type": "passport" } (or whichever countries you serve) alongside your MZ documents, and plan to review those verifications.

Any other pair — say a national ID from a country without tuning — is not rejected at creation, but it is not assessed either: once the applicant submits, the verification ends failed with assessment_incomplete (and a verification.failed webhook) without running the checks.

Validation is composed from open standards — no proprietary per-country template database:

  • ICAO 9303 MRZ check-digits (TD3) — universal across machine-readable passports; picking passport locks MRZ validation in.
  • Tuned per-country templates (MZ BI/passport, MX national ID/passport) — format-aware field validation and tuned thresholds.

Adding a document to the tuned group is a registration plus its tuning assets.