Overview
pawaPass sends webhook notifications to your configured URL when verification events occur. This allows you to track the entire lifecycle of a verification in real-time.Setup
You can configure your webhook target URL and signing secret in the Backoffice (Production, Sandbox). Each environment is configured separately.Events
VERIFICATION.STATUS_CHANGE
VERIFICATION.STATUS_CHANGE
Sent each time a verification’s status changes, from
CREATED through STARTED, USER_DATA_COLLECTED, to a final state like APPROVED or DECLINED.This is the primary webhook for monitoring verification progress.VERIFICATION.IDENTITY_DOCUMENT_CHANGE
VERIFICATION.IDENTITY_DOCUMENT_CHANGE
Sent when an agent manually corrects identity document data after a verification has concluded (e.g., fixing a typo in a name or date of birth).Does not fire during initial data collection.
Payload format
All webhook payloads follow the same structure:Field reference
| Field | Type | Description |
|---|---|---|
country | string | null | ISO 3166-1 alpha-2 country code associated with this verification. |
phoneNo | string | null | Phone number associated with this verification. |
reviewResult | object | null | Review outcome details. null when verification has not been reviewed or no review reason is available. Contains a reason field when present. |
Review result reasons
| Value | Description |
|---|---|
CAPTURE_ISSUE | Problem with the document capture (e.g. blurry photo, glare) |
DOCUMENT_VALIDITY | The document could not be validated (e.g. expired, tampered) |
IMAGE_QUALITY | The submitted image did not meet quality requirements |
GENERIC | General decline reason |
Age estimation values
TheageEstimation field on the face scan can be one of:
| Value | Age |
|---|---|
UNDER_8 | Under 8 years |
OVER_8 | Over 8 years |
OVER_13 | Over 13 years |
OVER_16 | Over 16 years |
OVER_18 | Over 18 years |
OVER_21 | Over 21 years |
OVER_25 | Over 25 years |
OVER_30 | Over 30 years |
UNKNOWN | Could not be estimated |
Signature verification
Webhooks include anX-SIGNATURE header containing a SHA256 HMAC signature of the raw request body, signed with your secret key. Verify this signature to confirm the webhook is authentic.
Best practices
Return 200 OK quickly
Process the webhook asynchronously if needed. Any non-
2xx response triggers retries.Secret rotation
Legacy integrations used a single shared secret for both API authentication and webhook signing. If you have not yet rotated your webhook secret, the legacy secret is still used for signing. Rotating the webhook secret does not affect your API key, and vice versa. These are now fully independent.
- Prepare your application to accept the new secret.
- Generate a new secret in the Backoffice and update your application at the same time.
- Verify that incoming webhooks pass signature validation.
Retries
If your endpoint returns a non-2xx status code or times out, pawaPass will retry delivery using capped exponential backoff with jitter:
- 55 attempts over approximately 1 week
- Delay starts at 1 second, doubles each time (1s, 2s, 4s, 8s, …), capped at 4 hours
- Each delay includes ±25% random jitter to prevent thundering herd
- If all retries are exhausted, the notification is dropped
