Skip to main content
Webhooks let PCX push event notifications to your server the moment something changes — a payment completes, a virtual account receives a deposit, or a KYB check resolves. This eliminates the need to poll for status updates.

Register your endpoint

Add your webhook URL to your organization using the Public service:
Your endpoint must be reachable over HTTPS. PCX starts delivering events immediately after registration. Multiple endpoints can be registered per organization.

Event payload structure

Every event follows the same envelope:
Use event_id to deduplicate — in rare retry scenarios, PCX may deliver the same event more than once. Process each event_id exactly once.

Verify the signature

PCX signs every event with HMAC-SHA256 and sends the result in the X-PCX-Signature header. Always verify this before processing the payload.
Reject any webhook event where the signature does not match. Never process unverified payloads — they may be spoofed.

Acknowledge receipt

Return a 2xx HTTP status within 10 seconds. PCX does not inspect the response body — any 2xx counts as a successful acknowledgement. If your processing logic takes longer than 10 seconds, acknowledge immediately and handle the event asynchronously:

Retry schedule

Failed deliveries — non-2xx responses or connection timeouts — are retried automatically with exponential backoff: Events that exhaust all retries are moved to a Dead Letter Queue (DLQ). Contact support to replay DLQ events manually.

Key event types

See Webhooks in Concepts for the full event reference, including KYC events, virtual account freeze events, and the complete data payload schema per event type.

Test your integration

Trigger a manual notification to all registered endpoints for your organization:
Use this during development to verify your endpoint receives and processes events correctly before going live.