Skip to content

Withdraw crypto​

POST
/v1/wallet/crypto/{currency}/withdraw

Requires WITHDRAWALS_CREATE, granted by WITHDRAWALS_WRITE (bundles)

Sends crypto from the account the request acts on (your primary account, or the sub-account selected with X-VALR-SUB-ACCOUNT-ID) to address, or to the entry in that account's address book given by addressBookId. The network fee from GET /v1/wallet/crypto/{currency}/withdraw is charged on top of amount (sends to another VALR account are free), and if your business only allows withdrawals to address-book entries, the address must already be saved there and past its waiting period.

Parameters​

Path Parameters

currency*

Currency to withdraw, e.g. USDC.

Type
string
Required
Example"USDC"

Request Body​

application/json
JSON
{
"amount": "250",
"address": "0x8d3f2b6a91c04e7fa1b2c3d4e5f60718293a4b5c",
"networkType": "Ethereum",
"beneficiaryName": "Acme Treasury (Pty) Ltd",
"isCorporate": true,
"isSelfHosted": false,
"serviceProviderId": "676d1c189ef2fd542e5bbf33"
}

Responses​

Withdrawal accepted for processing. The body is {"id": "<withdrawal ID>"}, for example {"id": "7c1d9e42-5a3b-4f6e-9d8c-2b1a0f3e4d5c"}. The withdrawal can still fail later, so follow it with GET /v1/wallet/crypto/{currency}/withdraw/{id}.

Samples​

Errors

HTTPErrorWhen
400-113INVALID_JSONThe body isn't valid JSON.
400-11INVALID_REQUESTThe currency isn't recognised, or the body fails validation, for example amount isn't a positive decimal, both or neither of address and addressBookId are sent, or the recipient's details are missing; validationErrors lists each failing field.
400-13427NON_ADDRESS_BOOK_WITHDRAWALS_DISABLEDWithdrawals are restricted to address-book entries, and the address isn't saved in the account's address book.
400-13428ADDRESS_BOOK_ENTRY_STILL_WARMING_UPWithdrawals are restricted to address-book entries, and this entry was added or changed too recently. Try again once its waiting period has passed.
400-13415WITHDRAWALS_TEMPORARILY_SUSPENDEDWithdrawals are paused after a recent security change on your account; the message says when they resume. Withdrawals to address-book entries may still be allowed.
400-112CURRENCY_NOT_SUPPORTEDThe currency can't be withdrawn on a blockchain, for example a fiat currency.
400-13018BLOCKCHAIN_INVALID_NETWORK_FOR_CURRENCYThe network isn't available for this currency.
400-13402CURRENCY_DOES_NOT_SUPPORT_PAYMENT_REFERENCEA paymentReference was sent, but this currency and network don't use one.
400-13410PAYMENT_REFERENCE_MISSINGThe address needs a payment reference, such as a memo or tag; send it in paymentReference.
400-13405INVALID_WITHDRAW_TRANSACTION_REFERENCEThe paymentReference isn't valid for this network.
400-50INVALID_WITHDRAW_ADDRESSThe address isn't valid for this currency and network.
400-13411WITHDRAW_AMOUNT_BELOW_MINIMUMThe amount is below the network's minimum, which the message gives.
400-13404INVALID_WITHDRAW_AMOUNTThe network rejected the amount, for example because it has too many decimal places.
400-13419NETWORK_FEE_FOR_TRANSACTION_EXCEEDEDSending to this address would need more network fee than is allowed, so it can't receive withdrawals.
400-13017BLOCKCHAIN_SEND_TRUSTLINE_NOT_VALIDThe destination address has no active trustline for this asset.
400-13019BLOCKCHAIN_SEND_MISSING_KYC_PERMITThe token issuer hasn't whitelisted the destination address.
400-30071SERVICE_PROVIDER_NOT_FOUNDserviceProviderId isn't in the list from GET /v1/wallet/crypto/service-providers.
400-6INSUFFICIENT_BALANCEThe account's available balance doesn't cover the amount plus the network fee.
400-108WITHDRAW_LIMIT_REACHEDThe withdrawal would exceed your business's withdrawal limit; see GET /v1/wallet/crypto/{currency}/withdraw/limits.
400-32765WITHDRAWAL_RESTRICTION_APPLIEDYour business must keep a minimum portfolio value, and this withdrawal would take it below that.
400-19213MARGIN_NOT_ENABLED_FOR_ACCOUNTallowBorrow is true, but margin isn't enabled on the account.
400-19243BORROW_FOR_WITHDRAWAL_NOT_AVAILABLEallowBorrow is true, but borrowing for withdrawals is currently unavailable.
400-19244BORROW_FOR_WITHDRAWAL_NOT_AVAILABLE_FOR_SELECTED_CURRENCYallowBorrow is true, but this currency can't be borrowed for withdrawals.
404-13422ADDRESS_BOOK_ENTRY_NOT_FOUNDNo entry with this addressBookId exists in the account's address book.
500-13423ADDRESS_BOOK_ENTRY_CURRENCY_WRONGThe address-book entry is saved for a different currency.
500-19502CURRENCY_UNDER_MAINTENANCEThe currency is under maintenance. Try again in a few minutes.
500-46WITHDRAW_UNAVAILABLEWithdrawals of this currency on this network are currently disabled, or the withdrawal couldn't be recorded. Try again later.
500-29BLOCKCHAIN_SEND_FAILUREThe withdrawal couldn't be checked with the network. Try again later.
500-19202INSUFFICIENT_LIQUIDITY_FOR_BORROWallowBorrow is true, but the amount can't be borrowed right now. Try again later.
503-12015WITHDRAWALS_NOT_AVAILABLEWithdrawals are temporarily unavailable.

Plus the errors common to all signed endpoints.