Withdraw bank account assets

Moves AUD out of one of your deposit virtual accounts to a registered withdrawal account. The source must be a DEPOSIT account with enough available balance, and the destination must be a WITHDRAWAL account; anything else is rejected.

Processing is asynchronous. The call returns as soon as the record is created, normally with status IN_PROGRESS, and the record reaches DONE, FAILED, CANCELED or REFUNDED later. Poll GET /bank-accounts/{id}/balance-records on the source account to follow it.

Supply idempotencyKey to make retries safe: replaying the same key with the same payload returns the original record instead of moving money twice.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params
number
required

Amount of AUD to withdraw. At least 0.01, and at most two decimal places. When includeFee is true this is the total debited from the source account rather than what the beneficiary receives.

string
enum
required

Must match the currency of both accounts.

Allowed:
string
required

Id of the deposit virtual account holding the funds. Must be one of your DEPOSIT accounts. An id that does not resolve returns a 500.

string
required

Id of the registered withdrawal account to pay out to. Must be a WITHDRAWAL account.

string

Optional key that makes retries safe. Replaying it with the same payload returns the original record without moving money again; reusing it with a different payload returns 409. The value is stored as the record's reference and comes back in the response.

boolean
Defaults to false

When false, the default, the withdrawal fee is charged on top of amount. When true the fee is taken out of amount instead, so the beneficiary receives amount minus the fee; if that leaves nothing, the request is rejected.

Headers
string
required

Bearer JWT obtained from POST /mfa/login. Send as "Bearer ". Expires after 5 minutes.

Responses

400

Invalid request, in one of two shapes. A missing required field, or a currency outside the allowed values, is rejected by the gateway with {"message":"Invalid request body"} and no messageKey. Everything else is rejected by the service in the standard error shape with a messageKey: bank_account.invalid_amount (zero, negative, more than two decimal places, or below 0.01), bank_account.bank_balance_insufficient, bank_account.invalid_destination_bank_account (the destination is not a WITHDRAWAL account), bank_account.do_not_allow_on_different_type_issuer_or_platform_bank_account_or_deposit_bank_account (the source is not one of your deposit accounts), bank_account.invalid_currency, bank_account.fee_not_defined, and bank_account.withdrawal.amount_too_small when includeFee leaves nothing after the fee.

401

Unauthorized. The bearer token is missing, expired or invalid.

403

Forbidden. The token lacks the withdrawal role, or the accounts do not belong to your company.

404

Bank account not found, with messageKey bank_account.bank_account_not_found. Returned when destBankAccountId does not resolve.

409

Conflict, with messageKey bank_account.duplicate_transfer. Returned when idempotencyKey has already been used for a withdrawal with a different payload. Reusing a key with an identical payload is not a conflict: it returns 200 with the original record.

500

Internal server error. Also returned when srcBankAccountId does not resolve to an account.

Language
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json