{
"withdrawal_id": "6c5d4e3f-2a1b-0c9d-8e7f-6a5b4c3d2e1f",
"account_id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
"idempotency_key": "withdrawal-2026-07-07-a",
"chain": "tron",
"asset": "USDT",
"to_address": "TVJ6njG5Fyrq6XwYok3xPQx8kR7HQx6vXk",
"amount": "100.000000",
"fee": "1.000000",
"total_debit": "101.000000",
"status": "processing",
"status_code": "",
"status_message": "broadcasted",
"tx_id": "b1946ac92492d2347c6235b4d2611184e0f0f8c9d3a1e2b3c4d5e6f708192a3b",
"created_at": "2026-07-07T12:00:00Z",
"updated_at": "2026-07-07T12:00:00Z",
"idempotency_hit": true
}{
"withdrawal_id": "6c5d4e3f-2a1b-0c9d-8e7f-6a5b4c3d2e1f",
"account_id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
"idempotency_key": "withdrawal-2026-07-07-a",
"chain": "tron",
"asset": "USDT",
"to_address": "TVJ6njG5Fyrq6XwYok3xPQx8kR7HQx6vXk",
"amount": "100.000000",
"fee": "1.000000",
"total_debit": "101.000000",
"status": "processing",
"status_code": "",
"status_message": "broadcasted",
"tx_id": "b1946ac92492d2347c6235b4d2611184e0f0f8c9d3a1e2b3c4d5e6f708192a3b",
"created_at": "2026-07-07T12:00:00Z",
"updated_at": "2026-07-07T12:00:00Z"
}{
"error": "invalid_json",
"message": "request body is not valid JSON: unknown field"
}{
"error": "unauthorized",
"message": "invalid or missing credentials"
}{
"error": "insufficient_funds",
"message": "account balance is not enough for this operation"
}{
"withdrawal_id": "6c5d4e3f-2a1b-0c9d-8e7f-6a5b4c3d2e1f",
"account_id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
"idempotency_key": "withdrawal-2026-07-07-a",
"chain": "tron",
"asset": "USDT",
"to_address": "TVJ6njG5Fyrq6XwYok3xPQx8kR7HQx6vXk",
"amount": "100.000000",
"fee": "1.000000",
"total_debit": "101.000000",
"status": "failed",
"status_code": "core_rejected",
"status_message": "destination address is invalid",
"tx_id": "",
"created_at": "2026-07-07T12:00:00Z",
"updated_at": "2026-07-07T12:00:00Z"
}{
"error": "withdrawals_unavailable",
"message": "on-chain withdrawals are not enabled for this corridor yet"
}Create an on-chain withdrawal
Sends USDT, USDC or BTC on-chain from its own balance. Supported pairs: tron/USDT, eth/USDT, eth/USDC, btc/BTC (GOLD has no on-chain rail). amount + withdrawal fee is debited atomically and held; final state arrives via the crypto_withdrawal_status_changed webhook. failed refunds the full debit.
{
"withdrawal_id": "6c5d4e3f-2a1b-0c9d-8e7f-6a5b4c3d2e1f",
"account_id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
"idempotency_key": "withdrawal-2026-07-07-a",
"chain": "tron",
"asset": "USDT",
"to_address": "TVJ6njG5Fyrq6XwYok3xPQx8kR7HQx6vXk",
"amount": "100.000000",
"fee": "1.000000",
"total_debit": "101.000000",
"status": "processing",
"status_code": "",
"status_message": "broadcasted",
"tx_id": "b1946ac92492d2347c6235b4d2611184e0f0f8c9d3a1e2b3c4d5e6f708192a3b",
"created_at": "2026-07-07T12:00:00Z",
"updated_at": "2026-07-07T12:00:00Z",
"idempotency_hit": true
}{
"withdrawal_id": "6c5d4e3f-2a1b-0c9d-8e7f-6a5b4c3d2e1f",
"account_id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
"idempotency_key": "withdrawal-2026-07-07-a",
"chain": "tron",
"asset": "USDT",
"to_address": "TVJ6njG5Fyrq6XwYok3xPQx8kR7HQx6vXk",
"amount": "100.000000",
"fee": "1.000000",
"total_debit": "101.000000",
"status": "processing",
"status_code": "",
"status_message": "broadcasted",
"tx_id": "b1946ac92492d2347c6235b4d2611184e0f0f8c9d3a1e2b3c4d5e6f708192a3b",
"created_at": "2026-07-07T12:00:00Z",
"updated_at": "2026-07-07T12:00:00Z"
}{
"error": "invalid_json",
"message": "request body is not valid JSON: unknown field"
}{
"error": "unauthorized",
"message": "invalid or missing credentials"
}{
"error": "insufficient_funds",
"message": "account balance is not enough for this operation"
}{
"withdrawal_id": "6c5d4e3f-2a1b-0c9d-8e7f-6a5b4c3d2e1f",
"account_id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
"idempotency_key": "withdrawal-2026-07-07-a",
"chain": "tron",
"asset": "USDT",
"to_address": "TVJ6njG5Fyrq6XwYok3xPQx8kR7HQx6vXk",
"amount": "100.000000",
"fee": "1.000000",
"total_debit": "101.000000",
"status": "failed",
"status_code": "core_rejected",
"status_message": "destination address is invalid",
"tx_id": "",
"created_at": "2026-07-07T12:00:00Z",
"updated_at": "2026-07-07T12:00:00Z"
}{
"error": "withdrawals_unavailable",
"message": "on-chain withdrawals are not enabled for this corridor yet"
}Authorizations
Session JWT (from register/login) or API key (pk_...).
X-API-Key: <token> is accepted as an alternative header.
Headers
Alternative to the idempotency_key body field.
Body
Positive decimal string, up to 6 decimal places (8 for BTC).
tron, eth, btc Asset to send (USDC only over eth; on btc the asset defaults to BTC).
USDT, USDC, BTC Use the contact's saved address for this chain instead of to_address (an explicit to_address always wins).
Name for the auto-saved contact holding this address.
The address is saved as a contact automatically; send false to skip it.
Travel Rule (FATF R.16) — the beneficiary institution's travel address (ta… code) for withdrawals above the org threshold towards another institution. The payment address is provided by the receiving institution, so to_address can be omitted.
Travel Rule — declare self_hosted when the destination is the account holder's own wallet (requires beneficiary_name).
self_hosted Travel Rule — name of the destination holder. Required above the threshold (with travel_address or wallet_type=self_hosted).
Response
Idempotency replay.
tron, eth, btc "USDT"
pending, processing, completed, failed Present when the withdrawal was evaluated against the Travel Rule (FATF R.16) policy.
not_required, self_hosted_attested, approved Declared beneficiary name (Travel Rule withdrawals).