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 .

Search guides

Search the guides. Use the API reference search for endpoints.