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
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