Person Verification
Verify an individual end-to-end with document capture, biometric liveness, face matching, database checks, and screening. This guide covers initiating a journey, redirecting the user, and interpreting structured results.What Person Verification checks
A Person Verification journey orchestrates up to six check types:- Identity Document Capture. Passport, national ID, or driving licence scanned with OCR.
- Biometric Liveness. Selfie with liveness detection to confirm the user is physically present.
- Face Match. Compares the selfie against the document photo.
- Document Authenticity. Tamper detection and fraud analysis on the captured document.
- Database Verification. Name, address, and date of birth validated against official databases.
- PEP/Sanctions Screening (WorldCheck). Screening on the individual across PEP, sanctions, adverse media, and watchlist databases.
Data tiers
Tier 1: Minimum
The bare minimum to initiate a Person Verification journey.Tier 2: Standard
Adds date of birth, contact details, and address. This is the recommended minimum for production.Tier 3: Full
Adds nationality, document type preference, and external reference for idempotency.Flow overview
Initiate the journey
Person Verification uses async Model 2 because the user must interact with the verification UI. Post to the Response:Store both tokens immediately:
/kyc/init endpoint.pull. Retrieves verification results.start. Constructs the verification URL for the user.
Construct the verification URL and redirect the user
User completes verification
The user goes through an interactive flow:
- Document selection. Choose a document type: passport, national ID, or driving licence.
- Document capture. Photograph the front (and back if applicable) of the document.
- Selfie capture. Take a selfie for biometric matching.
- Liveness check. Follow on-screen prompts to prove physical presence.
- Submission. Data is sent to Zenoo for processing.
Receive results
Option A: Webhook (recommended)
Configure a webhook endpoint to receiveverification.completed events.Option B: Poll for results
| Status | Meaning |
|---|---|
200 with JSON body | Results are ready |
204 No Content | Still processing, retry after a delay |
404 | Invalid or expired token |
Option C: Both
Use webhooks for real-time notification and polling as a fallback for missed webhooks. This is the most resilient pattern.Interpret the results
A complete Person Verification response includes identity verification, document details, biometric results, screening, phone verification, email verification, address verification, and compliance metadata.
Document statuses:
Biometric statuses:
Screening statuses:
Decision matrix
| Identity | Document | Biometric | Screening | Action |
|---|---|---|---|---|
| Pass | Pass | Pass | No Hit | Auto-approve |
| Pass | Pass | Pass | Hit | Manual screening review required |
| Pass | Attention | Pass | No Hit | Manual document review |
| Pass | Pass | Fail | No Hit | Request new biometric capture |
| Fail | Any | Any | Any | Reject or request re-submission |
| Any | Fail | Any | Any | Reject document, request new submission |
| Any | Any | Any | Sanctions Hit | Immediate halt. Escalate to compliance. |
A document
ATTENTION result means the document requires human review, not necessarily rejection. Check document.validation_result before making a pass/fail decision.Check dimension statuses
Identity statuses:| Status | Meaning |
|---|---|
| Pass | Name, address, and DOB confirmed against database records |
| Fail | Could not verify identity against databases |
| Status | Meaning |
|---|---|
| Pass | Document is authentic, not expired, and data matches |
| Attention | Possible issue detected (blurry image, minor inconsistency). Manual review needed. |
| Fail | Document rejected (expired, tampered, unrecognized) |
| Status | Meaning |
|---|---|
| Pass | Liveness confirmed and face matches document photo |
| Fail | Liveness check failed or face does not match |
| Status | Meaning |
|---|---|
| No Hit | No matches in PEP, sanctions, adverse media, or watchlist databases |
| Hit | One or more potential matches found. Review required. |
Handling edge cases
journey.abandoned
The user closed the browser or navigated away before completing verification.journey.expired
The 24-hour URL expired before the user completed the flow.Document issues
If the document fails authenticity checks,document.validation_result will be ATTENTION or FAILED. Common causes:
- Blurry or glare-obscured image
- Expired document
- Tamper indicators detected
- Document type not supported for the selected country
document.validation_result before making a pass/fail decision. An ATTENTION result means the document requires human review, not necessarily rejection.
Server-side Person Verification (no user interaction)
For database lookups, phone verification, and screening that do not require document capture, use the sync endpoint directly.- Batch processing existing customer data
- Pre-screening before initiating a full journey
- Ongoing monitoring re-checks on known individuals
- Flows where you already have verified identity documents from another source