Skip to main content
A withdrawal moves money from a wallet to one of your organisation’s settlement accounts in the same currency. Ladder sets those accounts up and verifies them during onboarding; GET /kyb/settlement-accounts lists them with their id.
Request
Response (sandbox)

How it moves

1

You request it

POST /withdrawals. The wallet is debited immediately (a withdrawal_hold line in GET /transactions), so the same money cannot also pay for an order while the withdrawal waits. If the wallet is short you get 402 insufficient_funds and nothing is created. Status pending_approval; withdrawal.created is sent.
2

Ladder approves it

Every withdrawal is approved by Ladder before money moves. Status approved.
3

Ladder pays it

Ladder pays the account by bank transfer and records the bank reference. Status completed, payout_reference set, withdrawal.completed sent.
If Ladder rejects the withdrawal (rejected, withdrawal.rejected) or the transfer cannot be made (failed, withdrawal.failed), the amount is credited back to the wallet once (withdrawal_reversal) and failure_reason says why.

Rules

  • The account must be yours, in the withdrawal’s currency (400 settlement_account_currency_mismatch otherwise), and verified by Ladder (409 settlement_account_not_verified).
  • There is no withdrawal fee; fee is 0.
  • Retrying a request with the same Idempotency-Key returns the original withdrawal; the wallet is debited once.
  • With test keys a withdrawal completes immediately with payout_reference SANDBOX.
GET /withdrawals lists them (filter with status); GET /withdrawals/{id} returns one.