Triggered when a transfer’s status changes. Your API will send a POST request to the webhook URL you configured when subscribing to transfer events. This webhook is sent for all status transitions including:
draft → processing (when execute is called)draft → awaiting_funds (when waiting for manual funding)processing → completed (successful completion)processing → failed (transfer failed)draft → expired (fee quote expired)completed → reversed (transfer was reversed)canceled (transfer was canceled)Security: Requests include an X-Webhook-Signature header containing an HMAC-SHA256 signature of the request body using your webhook secret. Always verify this signature before processing webhook events.
A JWT signed using your CDP API Key Secret, encoded in base64. Refer to the Generate Bearer Token section of our Authentication docs for information on how to generate your Bearer Token.
The updated transfer object with the new status.
Webhook event payload sent when a transfer's status changes. This is the structure of the request body sent to your configured webhook URL.
The type of webhook event.
transfer.status_changed "transfer.status_changed"
Unique identifier for this webhook event. Use this for idempotency.
"123e4567-e89b-12d3-a456-426614174000"
When this event occurred (ISO 8601 format).
"2025-01-01T00:05:00Z"
A Transfer represents all the information needed to execute a transfer and tracks the lifecycle of a transfer from initiation through completion or failure.