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.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
400Invalid 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.
401Unauthorized. The bearer token is missing, expired or invalid.
403Forbidden. The token lacks the withdrawal role, or the accounts do not belong to your company.
404Bank account not found, with messageKey bank_account.bank_account_not_found. Returned when destBankAccountId does not resolve.
409Conflict, 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.
500Internal server error. Also returned when srcBankAccountId does not resolve to an account.
