Skip to main content

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

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.
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

Review result object

When reviewResult is present, it has the following fields: Example for a declined verification:

Review result categories

Review result reasons

The default reason codes in pawaPass, grouped by category. The set may be extended over time, so treat unknown codes gracefully and branch on category and sensitive where possible.

Age estimation values

The ageEstimation field on the face scan can be one of:

Signature verification

Webhooks include an X-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

Verify the signature

Always validate the X-SIGNATURE header before processing the webhook payload.

Return 200 OK quickly

Process the webhook asynchronously if needed. Any non-2xx response triggers retries.

Handle duplicate deliveries

Use the notificationId field to deduplicate. Webhooks may be retried.

Route by event type

Use the type field to determine how to process each event.

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.
Only one webhook secret may be active at a time, so rotating it requires coordination with your application. To rotate:
  1. Prepare your application to accept the new secret.
  2. Generate a new secret in the Backoffice and update your application at the same time.
  3. Verify that incoming webhooks pass signature validation.
There may be a short window where some webhook deliveries fail signature validation on your side due to the timing mismatch. These will be retried automatically using the normal retry schedule (see below), so no notifications will be lost.

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
Use List verifications or Get verification to poll for missed updates.