Skip to main content

KYC Webhook

For each KYC status change, a webhook will be sent for the following statuses:

Status Table

Configuring the callback URL

Register the URL that receives the KYC webhooks for the kyc event, using the Webhook Setup API. You can query, update and remove it the same way.
  • The URL is registered per account: send account_id to register it for one of your subaccounts. The same URL can also receive other events — send kyc in the events list together with them.
  • Register a secret to receive the HMAC-SHA256 signature in every KYC webhook.
  • A subaccount without its own kyc webhook receives its KYC webhooks on its main account’s kyc webhook. See Subaccounts without a webhook.
  • When neither the account nor its main account has a kyc webhook registered, KYC webhooks keep being delivered to the callback URL previously configured by our Customer Experience team, if any, without the x-webhook-wp-* headers.
Registering, updating or removing a webhook may take up to 5 minutes to take effect. Until then, webhooks keep being delivered to the previous destination.

Example Payload

The webhook payload contains information about the KYC status change:

Example Headers

The webhook request includes the following headers:
When a webhook is registered for the kyc event, the request also includes the x-webhook-wp-type and x-webhook-wp-timestamp headers, plus x-webhook-wp-signature when a secret is set:
See Webhook Signature to verify the signature.

Field Types

integer
Unique identifier for the KYC record.
integer
Merchant identifier associated with the KYC.
object
Object containing the current status of the KYC.
object
Additional metadata about the KYC process.
string
Timestamp of when the KYC status was updated.Format: <date-time>

Webhook Status Flow

List KYC

List all KYC verifications

Get KYC By ID

Get KYC by ID

Get KYC By Document

Get KYC by document

Webhooks Guide

Learn about webhooks