KYC Completion Webhook
Business clients receive a notification when a customer's identity verification is finished. This webhook is only sent when every required identity check for that customer has cleared.
When is this webhook sent?
The kyc_completed webhook is sent when:
- The customer belongs to your business
- Your business API key has a webhook URL configured
- Every required identity verification check for that customer has completed successfully
A single identity check clearing is not enough. For example, a customer who has passed the first identity check but is still pending a second required check will not receive this webhook yet. The webhook fires once, when the last required check clears.
A terminal identity rejection can also send this webhook with status: "REJECTED".
Payload Schema
Payload Fields
Status Values
Intermediate states such as PENDING do not trigger this webhook.
Example Payloads
Example 1: KYC Approved
Example 2: KYC Rejected
Important Notes
-
All checks must clear: This webhook is sent only after every required identity verification check has completed. Use
GET /api/v1/client/customers/:customer_id/onboarding-statusand thekyc_statefield if you need to poll while checks are still in progress. -
Webhook Security: This webhook uses the same security mechanism as other business webhooks:
- Signed with HMAC-SHA256 using your API key's secret
- Includes
X-Transfaar-Signatureheader for verification - Same retry logic applies (up to 10 attempts with exponential backoff, only retries if response is not 200 OK)
-
Idempotency: The completion event is emitted once per customer when KYC becomes fully complete. Your webhook receiver should still treat deliveries as at-least-once and deduplicate by
customer_idandstatus.