{
"id": "evt_wth002",
"type": "withdrawal.updated",
"data": {
"sideshiftAccountId": "user_a1b2c3d4",
"externalId": "ext_user_456",
"amountCents": 25000,
"feeCents": 0,
"netAmountCents": 25000,
"currency": "usd",
"paymentId": "wdrl_abc123",
"status": "in_transit",
"metadata": {
"withdrawalId": "wdrl_abc123",
"speed": "standard",
"traceCode": "TRACE12345",
"estimatedAvailability": "2026-05-13T05:00:00.000Z",
"destinationInfo": "Chase Bank •••1234",
"previousStatus": "requested"
}
},
"timestamp": "2026-05-11T12:00:00.000Z"
}Sent each time a withdrawal’s status field transitions.
Mirrors the upstream withdrawal.updated event from the underlying payment processor.
Pure metadata refreshes (no status delta) are persisted internally but not relayed — you will only receive an
event when the status field actually changes. The previous status is included in metadata.previousStatus.
Lifecycle
requested → awaiting_payment → in_transit → completed
↘ failed | canceled | denied
Terminal states: completed, failed, canceled, denied. If you only care about the terminal outcome,
subscribe to withdrawal.completed and withdrawal.failed instead (derived aliases). canceled is delivered
on this event only.
Withdrawal markup revenue
When you charge a markup on top of SideShift’s platform fee, markupRevenueCents is your
layer of the combined fee, and it follows the withdrawal’s own fate:
| Withdrawal reaches | Your accrual | Wallet balance |
|---|---|---|
requested / awaiting_payment / in_transit | pending, amount may be revised | unchanged |
completed | credited | increases |
failed / canceled / denied before completing | cancelled | unchanged — no markup was charged |
failed after completing (e.g. a late ACH return) | reversed | decreases by the amount credited |
Nothing lands in your balance until completed, so treat the earlier values as an estimate.
Redelivered and out-of-order events are safe: the accrual is idempotent per withdrawal, and a
terminal accrual is never reopened. Both the credit and any reversal appear as rows in your
/payouts activity table (“Withdrawal Markup Fee Payout” / “Withdrawal Markup Reversed”).
{
"id": "evt_wth002",
"type": "withdrawal.updated",
"data": {
"sideshiftAccountId": "user_a1b2c3d4",
"externalId": "ext_user_456",
"amountCents": 25000,
"feeCents": 0,
"netAmountCents": 25000,
"currency": "usd",
"paymentId": "wdrl_abc123",
"status": "in_transit",
"metadata": {
"withdrawalId": "wdrl_abc123",
"speed": "standard",
"traceCode": "TRACE12345",
"estimatedAvailability": "2026-05-13T05:00:00.000Z",
"destinationInfo": "Chase Bank •••1234",
"previousStatus": "requested"
}
},
"timestamp": "2026-05-11T12:00:00.000Z"
}