Card Withdrawal Credited
Emitted when card funds have been returned to the member wallet and ledger settlement is complete.
Event Types
| Event | When Emitted |
|---|---|
card.withdraw.completed | Card funds returned to the member wallet |
Delivery Contract
- We send a
POSTrequest withapplication/jsonto your configured endpoint, with a 10-second timeout. - Any 2xx response acknowledges receipt. Non-2xx responses and timeouts trigger retries with backoff.
- Four request headers:
content-type·z-signature·z-event-id·z-event-type。 - Deduplicate by
z-event-id— the same event may be delivered more than once.
There are no amounts, asset codes, card number fragments or risk-control reasons. This is a security boundary: the webhook endpoint is your service, whose transport and storage we cannot guarantee.
The GET /v1/<resource>/{id} endpoint applies API key, scope and on-behalf-of checks. Fetch details using data.id;
do not use webhook payloads as the source of amounts for your ledger.
Event Details
card.withdraw.completed
Card funds returned to the member walletEmitted when funds from POST /v1/cards/{id}/withdrawals have returned from the card to the wallet and the ledger is settled. A shared-limit card may already be completed at 201, but this event is still sent. 201 does not mean there will be no event; rely on this event or retrieve the card balance again. Automatic returns caused by card closure also emit it. ⚠ This is unrelated to withdrawal.order.completed, which covers member-initiated on-chain withdrawals. data.id is the bare UUID of the card withdrawal; the public API response uses cwd_<uuid>. There is no single-order retrieval endpoint. Use the card ID with GET /v1/cards/crd_<id> to check the balance.
{
"event_id": "evt_9c2e1b4a7d854f0a8b3c6e1d4f7a90b2",
"event_type": "card.withdraw.completed",
"created_at": "2026-09-09T03:56:58Z",
"merchant_id": "acme",
"livemode": true,
"data": {
"object": "card_withdrawal",
"id": "c0d94014-40c5-4222-8d6b-795bb5c6f1f2",
"external_member_id": "u_88123",
"status": "completed",
"status_version": 2
}
}Signature Verification
The signature verification procedure is the same for all events. See Webhook Overview; use the Signature Debugger to compare signing strings character by character.