# Reason codes

`outcome_reason` in the signed result says why a verification was held, declined by a workflow setting, or could not finish. When a document is rejected, `document.outcome` says why. Reasons marked configurable can be set to approve, review or decline per workflow, within the limits shown in the workflow builder.

| Code | Kind | Usual status | Configurable | Meaning |
| --- | --- | --- | --- | --- |
| `SWISS_EID_PORTRAIT_MISMATCH` | Outcome reason | FAILED | no | The person presented a valid Swiss e-ID, but the liveness selfie does not match the e-ID portrait (identification_method swiss_eid). |
| `SWISS_EID_AGE_NOT_MET` | Outcome reason | FAILED | no | The Swiss e-ID was verified, but its age attribute (for example age_over_18) says the person is younger than the workflow's minimum age. |
| `CAPTURE_ATTEMPTS_EXHAUSTED` | Outcome reason | CHECK_ERROR | no | The person used up their capture attempts without a usable document or selfie. |
| `CAPTURE_ENVIRONMENT_REVIEW` | Outcome reason | REVIEW_REQUIRED | yes | A virtual camera, automation or an inconsistent browser was seen during capture. |
| `DOCUMENT_AUTHENTICITY_REVIEW` | Outcome reason | REVIEW_REQUIRED | yes | The document's security features could not be confirmed with enough confidence. |
| `FACE_REGISTRY_REVIEW` | Outcome reason | REVIEW_REQUIRED | yes | The face matches a rejected or differently named verification in your organization. |
| `INSTALLATION_VELOCITY_REVIEW` | Outcome reason | REVIEW_REQUIRED | yes | Many verifications were started from the same browser installation in a short time. |
| `EXPECTED_DETAILS_REVIEW` | Outcome reason | REVIEW_REQUIRED | yes | A field you sent in expected_details disagrees with the document. |
| `DOCUMENT_REGISTRY_REVIEW` | Outcome reason | REVIEW_REQUIRED | yes | The document is blocked, or was used by a different person in your organization. |
| `CONTACT_RISK_REVIEW` | Outcome reason | REVIEW_REQUIRED | yes | The verified email or phone number looks risky, for example a disposable address. |
| `AML_REVIEW` | Outcome reason | REVIEW_REQUIRED | no | AML screening found a possible match on a sanctions or PEP list. A person must decide. |
| `IP_COUNTRY_RESTRICTED` | Outcome reason | REVIEW_REQUIRED | yes | A capture came from a country the workflow's IP country rule does not allow. |
| `IP_COUNTRY_DIFFERS` | Outcome reason | REVIEW_REQUIRED | yes | A capture came from a country other than the one that issued the document. |
| `FLASH_REFLECTION_REVIEW` | Outcome reason | REVIEW_REQUIRED | yes | During the flash, the background changed colour almost as much as the face. A real screen lights the near face far more than the room, so the colours may have been added to a video. |
| `CAMERA_INJECTION` | Outcome reason | FAILED | yes | The selfie came through a known virtual camera, or the browser's camera function had been rewritten to feed in other video. |
| `LIST_BLOCK` | Outcome reason | FAILED | yes | A value of the verification (email, phone, IP address, device, document country or vendor_data) is on the organization's blocklist. |
| `AGE_ESTIMATION_REVIEW` | Outcome reason | REVIEW_REQUIRED | yes | Age-gated workflow without an ID fallback: the age estimated from the selfie was below the workflow's pass age, or could not be estimated. |
| `STATUS_RULE` | Outcome reason | REVIEW_REQUIRED | no | One of the workflow's own status rules matched (for example a document country or a metadata value). The report lists the rules in outcome_decision.rules. |
| `FACE_MATCH_REVIEW` | Outcome reason | REVIEW_REQUIRED | yes | The face matched the document, but below the stricter face match score the workflow asks for. |
| `PROOF_OF_ADDRESS_REVIEW` | Outcome reason | REVIEW_REQUIRED | yes | The proof of address needs a person: the workflow reviews every one, or the reader found a different name, no date or issuer, an unclear or foreign address, weak edit signs, or could not read the file in time. |
| `PROOF_OF_ADDRESS_OUTDATED` | Outcome reason | FAILED | yes | The proof of address is older than the workflow's maximum age, or its issue date lies in the future. |
| `PROOF_OF_ADDRESS_NO_NAME_OR_ADDRESS` | Outcome reason | FAILED | yes | The proof of address was readable, but neither the person's name nor an address is on it. |
| `PROOF_OF_ADDRESS_WRONG_DOCUMENT` | Outcome reason | FAILED | yes | The upload is not a bill or statement: an identity document, a selfie or a blank page. |
| `PROOF_OF_ADDRESS_EDITED` | Outcome reason | FAILED | yes | The proof of address PDF shows strong signs of editing after issue: saved again after its signature, or the name, address or date replaced in a later revision. |
| `CONTENT_CREDENTIALS_AI_GENERATED` | Outcome reason | FAILED | yes | The Content Credentials (C2PA) of a document photo or an uploaded file say it was generated or composed with AI. Declined unless the workflow sends it to review. |
| `CONTENT_CREDENTIALS_INVALID` | Outcome reason | REVIEW_REQUIRED | yes | The Content Credentials (C2PA) of a document photo or an uploaded file no longer match it: it was changed after signing, or the signature is broken. |
| `CONTENT_CREDENTIALS_EDITED` | Outcome reason | REVIEW_REQUIRED | yes | The Content Credentials (C2PA) of a document photo or an uploaded file record edits to its content (for example drawing, placing or removing parts) or a composite. |
| `NFC_REQUIRED_REVIEW` | Outcome reason | REVIEW_REQUIRED | yes | The workflow requires a chip read, and the session ended without a verified chip. |
| `FINMA_CHIP_NOT_VERIFIED` | Outcome reason | REVIEW_REQUIRED | yes | The FINMA profile requires a verified chip read (Rz 33.1); the document has no chip, or its chip was not read or verified. |
| `FINMA_PORTRAIT_MISMATCH` | Outcome reason | REVIEW_REQUIRED | yes | The selfie matched the chip portrait but not the printed document portrait, or that second comparison could not run (FINMA profile). |
| `SECURITY_FEATURES_INSUFFICIENT` | Outcome reason | REVIEW_REQUIRED | yes | Fewer than two security features could be checked for this document, so the random selection FINMA Rz 32 requires was not possible. |
| `SECURITY_FEATURE_FAILED` | Outcome reason | REVIEW_REQUIRED | yes | One of the randomly selected security features did not pass (FINMA profile). |
| `FINMA_MRZ_NOT_CROSSCHECKED` | Outcome reason | REVIEW_REQUIRED | yes | The MRZ could not be decoded and compared with the printed data (FINMA Rz 32); QR-code documents are not supported yet. |
| `FINMA_ADDRESS_UNVERIFIED` | Outcome reason | REVIEW_REQUIRED | yes | No proof of address, and the digital address evidence was missing or inconsistent (FINMA Rz 34–37.1). |
| `FINMA_HIGHER_RISK` | Outcome reason | REVIEW_REQUIRED | yes | A higher-risk case under FINMA Rz 31.2 (PEP or sanctions hit, FATF high-risk country): approval needs a second reviewer. |
| `FINMA_EID_NOT_VERIFIED` | Outcome reason | REVIEW_REQUIRED | yes | On the FINMA e-ID route (Rz 44.1–44.4) the credential's validity, trusted issuer or holder binding was not established. |
| `FINMA_EID_BETA_CREDENTIAL` | Outcome reason | REVIEW_REQUIRED | yes | The person presented a swiyu beta credential, which is not a proof of identity for the FINMA profile. |
| `BENEFICIAL_OWNER_NOT_CONFIRMED` | Outcome reason | REVIEW_REQUIRED | yes | The workflow asks for a beneficial owner declaration, and none was confirmed with the one-time code. |
| `BENEFICIAL_OWNER_THIRD_PARTY` | Outcome reason | REVIEW_REQUIRED | yes | The person declared that someone else is the beneficial owner of the assets. |
| `MORPH_REVIEW` | Outcome reason | REVIEW_REQUIRED | yes | The document portrait may blend two faces. |
| `MORPH_ERROR` | Outcome reason | CHECK_ERROR | no | The morph check could not run. |
| `MORPH_SKIPPED` | Outcome reason | CHECK_ERROR | no | The morph check was skipped because the document portrait was not usable. |
| `LIVENESS_REVIEW` | Outcome reason | REVIEW_REQUIRED | yes | The liveness check could not confirm a live person. |
| `DEEPFAKE_REVIEW` | Outcome reason | REVIEW_REQUIRED | yes | The selfie may be generated or manipulated. |
| `REQUIRED_SELFIE_CHECK_ERROR` | Outcome reason | CHECK_ERROR | no | A required selfie check (liveness, face match or deepfake) could not run. |
| `WORKER_RETRIES_EXHAUSTED` | Outcome reason | CHECK_ERROR | no | A processing step failed repeatedly on our side. |
| `ORCHESTRATION_RETRIES_EXHAUSTED` | Outcome reason | CHECK_ERROR | no | The verification could not be moved to its next step after repeated attempts on our side. |
| `SELFIE_QUEUE_UNAVAILABLE` | Outcome reason | CHECK_ERROR | no | Selfie processing was unavailable. |
| `DOCUMENT_IMAGE_UNAVAILABLE` | Outcome reason | CHECK_ERROR | no | The document image could not be loaded for processing. |
| `DOCUMENT_PROCESSING_ERROR` | Outcome reason | CHECK_ERROR | no | Document processing failed on our side. |
| `DOCUMENT_OCR_ERROR` | Outcome reason | CHECK_ERROR | no | Reading the document text failed on our side. |
| `DOCUMENT_QUEUE_UNAVAILABLE` | Outcome reason | CHECK_ERROR | no | Document processing was unavailable. |
| `FRAUD_IMAGE_UNAVAILABLE` | Outcome reason | CHECK_ERROR | no | The document image could not be loaded for the authenticity checks. |
| `FRAUD_DOCUMENT_CROP_UNAVAILABLE` | Outcome reason | CHECK_ERROR | no | The cropped document could not be loaded for the authenticity checks. |
| `FRAUD_EVIDENCE_UNAVAILABLE` | Outcome reason | CHECK_ERROR | no | Evidence needed by the authenticity checks was missing. |
| `FRAUD_TAMPER_ERROR` | Outcome reason | CHECK_ERROR | no | The tamper check failed on our side. |
| `FRAUD_IDENTITY_ERROR` | Outcome reason | CHECK_ERROR | no | The document consistency check failed on our side. |
| `FRAUD_QUEUE_UNAVAILABLE` | Outcome reason | CHECK_ERROR | no | Authenticity checking was unavailable. |
| `CATALOG_REVISION_UNAVAILABLE` | Outcome reason | CHECK_ERROR | no | The document rules the session was started with could not be loaded. |
| `UNSUPPORTED_DOCUMENT` | Document outcome | FAILED | no | We do not support this country and document type. |
| `UNREADABLE_DOCUMENT` | Document outcome | FAILED | no | The document is supported, but the photo could not be read (blur, glare, cropped). |
| `TAMPERED` | Document outcome | FAILED | no | The document image has been edited. |
| `IDENTITY_MISMATCH` | Document outcome | FAILED | no | The document disagrees with itself, for example the MRZ and the printed fields. |
| `SPECIMEN_DOCUMENT` | Document outcome | FAILED | no | The document is a published specimen, not a real document. |
| `DOCUMENT_EXPIRED` | Document outcome | FAILED | no | The document has expired. |
| `WRONG_DOCUMENT_TYPE` | Document outcome | FAILED | no | The document is real, but not the type the person selected. |
| `WRONG_COUNTRY` | Document outcome | FAILED | no | The document is real, but from a country the person did not select. |
| `AGE_REQUIREMENT_NOT_MET` | Document outcome | FAILED | no | The verified holder is younger than the workflow's minimum age. |
