Document types the reader returns
documents[].doc_type is one of these codes, or another lowercase string, or null.
Every document also gets the checks that do not depend on its type: the
doctype: gate when a step or hint gates (below), expiry: when an id_expiry was read, an MRZ check when MRZ lines were read, provenance: file checks and the authenticity:specimen: check. The verification guide explains each.
The reader is told to answer other when unsure, because a confident wrong label gets a client’s document refused. Free-form legal documents (the last group) are accepted alongside other by the steps that expect them. Free text from the reader is mapped to these codes by stem, so “Driver License”, “PR Card” and “Void Cheque” arrive as drivers_license, pr_card and void_cheque.
Two address documents are accepted as proof of address: utility_bill and bank_statement. A cheque is never one.
Field keys
Every key the reader may return, grouped. A key not in this list is dropped.id_type is one of Passport, Driver License, National ID, Residence Permit (a PR card and a green card are Residence Permit).
The reader is told which side of a document is the client’s. On an invoice, a bill or a statement the client is the recipient (the “bill to” party), never the issuer. document_holder_name, legal_name, address and contact keys describe the recipient.
Fields by document type
What the reader is asked to look for on each type, and what the checks need. The reader returns only what is printed and legible. Nothing below is guaranteed to come back.
If every expected field of a type is missing,
legible: is critical. If only some are missing it is a warning that names them (could not read: id_number).
Money amounts are read only from a document that states them. A payslip shows pay for a period. The reader is told never to estimate, so
annual_income is absent unless it is printed. Do not rely on a payslip alone for annual income. See the walkthrough.Which fields reach fields
Gating: step_key and doc_type
step_key makes the call check that the document is one the step expects. The doctype: check is critical: if the reader says “utility bill” and the step takes a photo ID, the answer says this is a utility bill; this step takes a passport, a national ID card, a driver's licence... and the entry fails.
If you send no step_key, the doc_type text is also used as a gate when it contains one of these phrases (lowercase, spaces matter): photo id, passport, pr card, proof of address, bank, articles of incorporation, business registration. For example doc_type=passport accepts a passport, national ID, driver’s licence or residence permit. doc_type=bank_statement contains bank and accepts a bank statement, utility bill or void cheque. doc_type=payslip matches nothing and is not gated. Use step_key when you want a precise gate.
A known step with no type gate (banking, rib and a few others) accepts any document.
Step keys
A step marked
address is a proof-of-address step. A utility_bill, proof_of_address or bank_statement read there has a blocking recency check (critical, 90 days by default). A utility_bill or proof_of_address is also critical on any step. A bank_statement on any other step is a warning.