Skip to main content
Withdrawal events are terminal notifications. A newly submitted or pending withdrawal does not produce a Partner webhook event. All three events contain a public wallet transaction snapshot under data.transaction. settlement_details.type is bank_transfer for NGN, crypto for stablecoin settlement, and usd_cash for USD cash activity; the usd_cash shape has only rail_reference, confirmed_at, and failed_at. Handle all three types. withdrawal.partial is only possible for NGN withdrawals that were split into several bank transfers, most often bulk withdrawals. Subscribe to all three so a mixed batch is not left waiting for an event that will never arrive.

withdrawal.success

withdrawal.partial

amount is the full amount you requested, not the amount that was paid. confirmed_at is when the batch finished settling. Read GET /v1/partner/wallets/transactions/{id} and walk settlement_details.transfers to see which beneficiaries were paid and which need a fresh withdrawal, as shown in Bulk withdrawals.

withdrawal.failed

The webhook snapshot does not expose recipient bank details, destination wallet addresses, per-transfer detail, network fees, or raw failure messages. Within a webhook, reference and description are always null, and settlement_details.rail_reference echoes the transaction id rather than an external reference; read the transaction for all three. Use data.transaction.id with GET /v1/partner/wallets/transactions/{id} for the latest public resource. Return to the webhook overview