Reading the result
1 · Check the application completed
Section titled “1 · Check the application completed”application.status === "complete"| Value | Meaning |
|---|---|
incomplete |
Created, not submitted. No verification has happened. |
complete |
Submitted. Results are meaningful. |
expired |
The form expired unsubmitted. |
Nothing below is meaningful until this holds — before then other_status.ekyc may
read pending or even pass while nothing has been captured.
2 · Read the results from extra
Section titled “2 · Read the results from extra”extra carries what the verification actually produced. Prefer it over the status
columns: statuses are summaries, and every column except ekyc is
configured per workspace.
extra.ekyc.face_compare selfie against the document portraitextra.ekyc.liveness the liveness capture and its attemptsextra.ekyc.identity_document the document scanextra.identity_aml screening results, when the flow runs themFull field detail: extra.ekyc.
3 · Check the document is in date
Section titled “3 · Check the document is in date”answers.date_of_expiry.valueCompare against the submission date, not today, if you are reprocessing historical applications.
Screening results
Section titled “Screening results”Flows with a screening step also return
extra.identity_aml. Its aggregate verdict:
extra.identity_aml.comply_advantage[0].result| Flag | Matched against |
|---|---|
is_any_in_sanctions |
Sanctions lists |
is_any_in_pep |
Politically exposed persons |
is_any_in_warnings |
Regulator and law-enforcement warning lists |
is_any_in_adverse_media |
Adverse media |
is_any_in_fitness_probity |
Fitness-and-probity registers |
How each maps to your own decision is a policy matter. UpPass reports; you decide.
The webhook payloadEvery field these checks refer to, fully specified, with downloadable examples.