Getting started
1
Subscribe
Set up a subscription to transfer webhook events.
2
Verify
Implement signature verification in your receiver.
3
Inspect payloads
See the transfer webhook example payloads for full request-body examples.
Event delivery
Design your receiver around these delivery rules:- Final events are always sent. When a transfer finishes, CDP sends either
payments.transfers.completedorpayments.transfers.failed. - Intermediate events are best-effort.
payments.transfers.quotedandpayments.transfers.processingare sent only when the transfer is recorded in that status. A transfer that settles directly to a final status, such as a fast transfer or an instant deposit, can skip them. For example, you can receivepayments.transfers.completedwithout a precedingpayments.transfers.processing. - Deliveries can repeat. Use
eventIDto deduplicate retried deliveries.
payments.transfers.processing before handling a final event, and don’t treat a missing processing event as an error. To confirm a transfer’s current status, call Get a transfer.
Best practices
- Test locally first before enabling production subscriptions.
- Support concurrent delivery at your webhook endpoint.
- Acknowledge quickly (
200), then process in the background. - Monitor delivery health and alert on failures.
- Check subscriptions regularly and confirm critical ones remain
isEnabled: true.
Subscriptions can be auto-disabled after sustained delivery failures. Fix the endpoint issue, then re-enable with the Update Subscription API.