Withdraw crypto
Select the asset, network, and saved destination before submitting a withdrawal.
Before withdrawing#
Use a registered key with transfer access (transfer) and the agreed outbound IP allowlist. Complete
account setup and verification, and make sure withdrawals are enabled for the account and selected network. Check
account and address limits, including any cooling period.
Add the destination to your Coinhako address book first. Complete its recipient identity, wallet or exchange details, and any verification required for your account and wallet type. The withdrawal API uses that saved address; it does not create a destination from a raw blockchain address.
Keep enough available balance to cover the withdrawal plus its fee. Sign every call using the authentication guide .
1. Choose the asset and network#
Retrieve the available networks and crypto currencies for your account:
GET /v1/crypto_currency_networks
GET /v1/crypto_currencies
Select the crypto-currency entry for the intended asset and network. Save its numeric id as
crypto_currency_id. Use its network_id to match the destination’s supported networks. Check its
withdrawal_fee when calculating the balance needed.
The network’s UUID is not the crypto-currency ID. The same asset can have different entries for different networks; use the IDs returned by this environment’s lookup.
2. Choose a saved address#
GET /v1/address_book/addresses
Save the address-book entry’s id as address_book_address_id. Check its address, tag or memo, verification status, crypto_currency_networks, recipient details, and
any withdrawal_cooldown_until value.
| Withdrawal field | Source |
|---|---|
crypto_currency_id |
Numeric id from the selected crypto-currency entry. |
address_book_address_id |
id of the saved destination on this account. |
amount |
Decimal string in units of the selected asset. |
The address list is paginated. To continue, pass the X-Next-Page response header as the
page[cursor] query parameter on the next request and sign that full URL. Check the account, environment,
filters, and page before treating an empty result as an empty address book. If the destination is not saved, add it
and complete any required verification in the Coinhako app.
3. Submit the withdrawal#
Call Create Crypto Withdrawal :
POST /v1/crypto/withdrawals
{
"crypto_currency_id": 123,
"amount": "0.1",
"address_book_address_id": "<SAVED_ADDRESS_ID>",
"transaction_purpose": "Withdrawal",
"note": "Optional reference"
}
123 is illustrative: replace it with the selected entry’s actual ID. The first three fields are required.
transaction_purpose and note are optional.
Use the asset’s supported precision. The API rounds the amount down to supported precision before calculating the amount plus fee.
Recipient and Travel Rule information must be completed on the saved address. Do not send
wallet_identity_attributes in this withdrawal body; this endpoint does not accept those nested fields.
Do not rely on request_id to prevent duplicate withdrawals. If a submission times out, check recent
withdrawals before sending another request.
Track the withdrawal#
A 201 response means a withdrawal was created, not that funds have arrived. Save its id and
inspect status, travel_rule_status, and pending_reason.
GET /v1/crypto/withdrawals/<WITHDRAWAL_ID>
GET /v1/crypto/withdrawals
Use
Get Crypto Withdrawal
to follow one withdrawal, or
List Crypto Withdrawals
to reconcile recent requests. transaction_hash and link_explorer may be empty until an
on-chain transaction is available.
If the request is rejected, check saved-address ownership, network availability, funds including fees, recipient details, and limits in troubleshooting .