Wallet

Submit withdrawal

Creates a withdrawal in processing state.

Set channel_type to "crypto" for on-chain withdrawals or "fiat" for bank transfers. See the request body schema for full field details per channel type.

Requires the withdraw permission on the API key.

If the API key has a withdrawal address whitelist, the destination (address, address_book_id, or recipient_id) must be in the whitelist or the request is rejected with 403 FORBIDDEN.

post/wallet/withdraw

Request body

currencystring required

Currency code.

amountstring required

Withdrawal amount as a decimal string.

channel_type'crypto' | 'fiat' required

crypto for on-chain; fiat for bank transfer.

idempotency_keystring

Optional idempotency key. Duplicate requests with the same key return the original result.

addressstring

Crypto only. Destination address. Required when address_book_id is not provided.

address_book_idstring

Crypto only. Saved address ID. Can be used instead of address.

networkstring

Crypto only. Network code.

address_tagstring

Crypto only. Destination tag or memo for memo-based networks (e.g. XRP destination tag, XLM memo, EOS memo). Use this field in preference to memo.

memostring

Crypto only. Alias for address_tag - accepted for backward compatibility. If both are provided, address_tag takes precedence.

recipient_idstring

Fiat only. Saved bank account ID. Can be used instead of inline bank details.

instant_payboolean

Fiat only. Routes the withdrawal via Instant EFT.

account_holder_namestring

Fiat only. Account holder full name.

bank_namestring

Fiat inline only. Required when recipient_id is not provided. Must be a full bank name from GET /wallet/banks (e.g. "FNB South Africa").

bank_codestring

Fiat only. Bank clearing code (optional).

branch_codestring

Fiat only.

account_numberstring

Fiat only. Required when recipient_id is not provided.

account_type'Savings' | 'Current' | 'Cheque'

Fiat inline only. Bank account type.

bank_referencestring

Fiat only. Reference that appears on the recipient's bank statement. Defaults to "AltCoin Trader" if not provided.

Example request

{
  "currency": "BTC",
  "amount": "0.01",
  "channel_type": "crypto",
  "idempotency_key": "550e8400-e29b-41d4-a716-446655440000",
  "address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
  "address_book_id": "addr-001",
  "network": "BTC",
  "address_tag": "12345",
  "memo": "12345",
  "recipient_id": "bank-001",
  "account_holder_name": "John Smith",
  "bank_name": "FNB South Africa",
  "bank_code": "250655",
  "branch_code": "250655",
  "account_number": "62000000000",
  "account_type": "Cheque",
  "bank_reference": "INV-2024-001"
}

Response

Withdrawal created successfully in processing state.

idstring
currencystring
amountstring
fee_amountstring
amount_after_feesstring
statusstring

Lowercase status value from the funding service.

channel_type'crypto' | 'fiat'
network_codestring nullable
addressstring nullable

Present for crypto withdrawals.

address_tagstring nullable

Memo or destination tag. Present for crypto when applicable.

tx_hashstring nullable

On-chain transaction hash. Present once broadcast.

requested_atinteger nullable
completed_atinteger nullable
created_atinteger

Example response

{
  "id": "wd-001",
  "currency": "BTC",
  "amount": "0.01",
  "fee_amount": "0.0001",
  "amount_after_fees": "0.0099",
  "status": "withdrawal_status_processing",
  "channel_type": "crypto",
  "network_code": "BTC",
  "address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
  "requested_at": 1712000000,
  "created_at": 1712000000
}

Changes

No recorded changes to this endpoint across all 1 revision of this API.