Skip to main content

Statuses and codes

This page is the authoritative vocabulary for statuses, webhook events, and structured reasons you will see in the dashboard, webhooks, and API. Prefer these enums over free-text errorMessage when branching application logic.

Payload field layout lives in Webhook Payload. Failure handling is in Failure and Review Events.


Three layers of status

A single webhook can carry different statuses at different layers. Do not treat them as synonyms.

LayerFieldScope
Delivery eventtop-level eventWhy this webhook was sent
Flow / requestflowStatus (webhook) · status on a flow result / verification request (API)Overall outcome of the verification run
Step resultdata.<type>.statusOutcome of one step (DV, PoA, form, …)

Example: a DV step can be FAILED with reasons: ["DOCUMENT_EXPIRED"] while you still handle a later step, or the whole flow can move to REQUIRES_MANUAL_REVIEW after a REVIEW event.


Webhook event values

Verification results

ValueMeaningTypical next action
COMPLETEDThe step or flow completed successfullyTrust data / flowStatus; provision the user
FAILEDThe step or flow failed automaticallyRead structured reasons; allow retry or reject
REVIEWHuman review is requiredDo not reject yet. Wait for a later final event
REJECTEDExplicit rejection (often after manual review)Treat as declined
NOTIFICATIONLifecycle notification (not a step result)Route on eventData.type

AML updates

ValueMeaning
PRODUCEDInitial AML screening result produced
REFRESHEDOngoing monitoring refreshed matches
MODERATEDAn AML match was moderated (approved / rejected / escalated)

Notification eventData.type

Used only when event is NOTIFICATION:

TypeMeaning
DOCUMENT_EXPIREDA verified identity document has expired
KYC_RESULT_EXPIREDA KYC / flow result has passed its retention or validity window
FLOW_RISK_REEVALUATEDRisk scores were recomputed (for example after tag changes)

Flow and verification-request status

flowStatus on result webhooks and status on verification requests / flow results use the same overall lifecycle:

StatusMeaning
PENDINGCreated; user has not finished
QUEUEDWaiting to be processed
PROCESSINGAutomated checks in progress
COMPLETEDFinished successfully
FAILEDFinished with an automatic failure
CANCELLEDCancelled before completion
REQUIRES_MANUAL_REVIEWWaiting on an operator decision
REQUIRES_ADMIN_REVIEWWaiting on an admin-level decision
REJECTEDExplicitly rejected

Step result status (data.<type>.status)

Individual step results (document verification, PoA, form, and related types) use:

StatusMeaning
PASSEDStep checks passed
FAILEDStep checks failed
PARTIALIncomplete or partially successful result
REQUIRES_MANUAL_REVIEWOperator must decide
REQUIRES_ADMIN_REVIEWAdmin must decide
warning

Webhook examples may show intermediate labels such as REVIEW on a nested result while the flow is under review. Treat REVIEW at the event / flow layer as “keep pending,” and use the final COMPLETED / FAILED / REJECTED event as the decision to act on in your product.


Document verification reasons (data.dv.reasons[])

Empty when no reason is reported. Values come from the API DvReason enum.

Document quality and authenticity

CodeTypical meaning
WRONG_DOCUMENT_TYPESubmitted type does not match what the step allows
DOCUMENT_TYPE_NOT_DEFINEDType could not be determined
DOCUMENT_TYPE_CHECKType validation failed
DOCUMENT_NOT_FOUNDNo usable document in the capture
DOCUMENT_SCORE_BELOW_THRESHOLDAuthenticity / quality score below configured minimum
SECURITY_CHECK_FAILEDBuilt-in security features failed checks
DOCUMENT_ALTERATION_DETECTEDSigns of alteration
DOCUMENT_TAMPERING_DETECTEDSigns of tampering
FAKE_DOCUMENT_DETECTEDClassified as fake
SCREEN_REPLAY_ATTACK_DETECTEDScreen / replay presentation attack
PAPER_COPY_DETECTEDPaper copy rather than original
BLACK_AND_WHITE_COPYB/W copy of a color document
ELECTRONIC_DEVICECapture from another screen/device
SECURITY_TEXTSecurity text check failed
IMAGE_PATTERNSImage-pattern check failed
PHOTO_EMBEDDINGSPortrait embedding consistency failed

Country, age, and field rules

CodeTypical meaning
COUNTRY_FILTERCountry not allowed by whitelist/blacklist
DOCUMENT_COUNTRY_MISMATCHCountry does not match expected value
DOCUMENT_COUNTRY_MISSINGCountry could not be read
DATE_OF_EXPIRY_NOT_VALIDExpiry invalid or document expired
DATE_OF_EXPIRY_NOT_READABLEExpiry unreadable
DATE_OF_EXPIRY_FIELD_MISSINGExpiry field missing
DATE_OF_BIRTH_BELOW_MINIMUM_AGEBelow the flow’s minimum age
REQUIRED_FIELDS_MISMATCHRequired extracted fields inconsistent

Face, liveness, and uniqueness

CodeTypical meaning
FACE_MATCH_CHECKFace match against the document failed
FACE_MATCH_CHECK_ONE_CLICKFace match failed in a one-click / reuse path
LIVENESS_CHECK_FAILEDLiveness overall failed
LIVENESS_ANTISPOOF_FAILEDAnti-spoofing failed
LIVENESS_BRIGHTNESS_FAILEDLighting / brightness out of range
LIVENESS_EYES_CLOSED_FAILEDEyes closed
LIVENESS_WEARING_SUNGLASSES_FAILEDSunglasses detected
LIVENESS_FACE_OCCLUDED_FAILEDFace occluded
LIVENESS_SHARPNESS_FAILEDImage not sharp enough
LIVENESS_FACE_CONSISTENCY_FAILEDFace consistency across frames failed
UNIQUENESS_CHECKBiometric uniqueness / duplicate identity check failed
DOCUMENT_ALREADY_USED_BY_ANOTHER_USERDocument already bound to another identity
DOCUMENT_FINGERPRINT_COMPUTATIONDocument fingerprinting failed

Other

CodeTypical meaning
OVERALL_STATUSAggregate step status failed without a more specific code
UNKNOWNUnclassified reason

Proof of address reasons (data.poa.reason)

CodeTypical meaning
DOCUMENT_TYPE_NOT_ALLOWEDType not accepted for PoA
NAME_MISMATCHName does not match the verified identity
DATE_TOO_OLDDocument older than allowed window
INVALID_DOCUMENTDocument not valid for PoA
UNRECOGNIZED_ADDRESSAddress could not be recognized
UNKNOWNUnclassified reason

Other step types (form, phone, wallet, kyb, geolocation, spid) may expose optional reason / errorMessage strings. Prefer structured fields when present; use errorMessage for diagnostics only.


KYB and AML statuses

KYB moderation (ModerationResultStatus)

StatusMeaning
ACQUIRINGCollecting company / ownership data
PENDING_MODERATIONWaiting for review
REVIEW_REQUIREDNeeds human review
SUCCESSModerated successfully
FAILEDFailed

PEP & sanctions (KYB)

StatusMeaning
PENDINGNot started
IN_PROGRESSScreening in progress
REVIEWMatch requires review
SUCCESSCleared
FAILEDFailed

AML moderation decisions

When an AML match is moderated: approved, rejected, or escalated.

See AML and KYB for operational workflows.


Transaction monitoring decisions

Transaction monitoring returns a synchronous verdict derived from combined rule risk:

DecisionMeaning
ALLOWBelow review threshold, proceed
REVIEWAt or above review threshold, hold for investigation
BLOCKAt or above block threshold, do not proceed

See Transaction Monitoring for the Allow / Review / Block model and TM guides for rules and thresholds.


Manual review

ConceptValue / event
Flagged for reviewResult status REQUIRES_MANUAL_REVIEW · webhook event: REVIEW
Operator decisionManual review result: approved, rejected, or failed
After decisionFollow-up webhook with COMPLETED, FAILED, or REJECTED

Do not mark the end user as rejected on REVIEW alone. See Manual review.