withdrawal.processing— the withdrawal has been accepted and is moving through the payment rail.withdrawal.completed— the withdrawal has settled successfully.withdrawal.failed— the withdrawal has reached a terminal failure state.
data that follows the same field conventions as v3 REST API responses — camelCase fields, string amounts, RFC 3339 timestamps. The data object matches what GET /v3/fx/withdrawals/{id} returns for the same record.
Event envelope
This routing-only example collapsesdata to an empty object. It deliberately omits the required Withdrawal fields shown in the complete, schema-checked examples below.
Payload
- Fiat (Fedwire / SEPA / SWIFT / ACH)
- Stablecoin (USDC / USDT / EURC)
status is an unconstrained string reflecting the current lifecycle state (no
closed enum is documented) — observed values include PENDING, PROCESSING,
COMPLETED, FAILED, RETURNED, and CANCELED. The webhook catalog ships
withdrawal.processing, withdrawal.completed, and withdrawal.failed
events; the v3 API surfaces the same record with a matching status via GET /v3/fx/withdrawals/{id}.Withdrawal resource fields
Idempotency on your side
Same pattern as deposit webhooks — use the eventid for dedup. See Deposit webhooks: idempotency on your side.
Failed withdrawals
When a withdrawal terminates asFAILED, the withdrawal.failed event is delivered with data.status: "FAILED". If you need the latest state — for example to confirm a subsequent RETURNED, or after a missed delivery — re-fetch with GET /v3/fx/withdrawals/{id} using the id from data.id. See Withdrawal lifecycle: when a withdrawal is stuck for the triage runbook.
Verification
Every event is signed in theX-OpenFX-Signature header using HMAC-SHA256 over the signed payload timestamp + "." + raw_body. Always verify with a constant-time comparator before reading any payload field. See Webhook authentication.
What’s next
Webhook authentication
Signature verification with constant-time comparators.
Deposit webhooks
The other side of the deposit/withdrawal lifecycle.
Withdrawal lifecycle
State machine + stuck-withdrawal runbook.
Errors
Stable error codes and the retry triage matrix.