> ## Documentation Index
> Fetch the complete documentation index at: https://developers.uqpay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Send withdrawals

> Estimate fees, create a cryptocurrency withdrawal, and track it to completion.

[Stablecoin Account API Publisher Disclaimer](/stablecoin-account/v1.6/guide/stablecoin-account-api-publisher-disclaimer)

A withdrawal is an off-ramp: it sends cryptocurrency from your balance to an external address. The destination should be registered in your [address book](/stablecoin-account/v1.6/guide/address-book) first — entries are risk-assessed at creation, and destinations that route through certain channels require Travel Rule data before a withdrawal is accepted.

<Info>
  **Prerequisites**

  * An API token sent as the `x-auth-token` header
  * Sufficient `available_balance` in the withdrawal currency
  * The destination address registered in the [address book](/stablecoin-account/v1.6/guide/address-book), with Travel Rule `meta_data` where required
</Info>

## Step 1: Estimate the network fee

Fees track network congestion, so fetch a fresh estimate right before the user confirms — see [Supported assets and networks](/stablecoin-account/v1.6/guide/supported-assets-and-networks#estimate-the-network-fee) for the full response:

```bash theme={null}
curl "https://api-sandbox.uqpaytech.com/api/v1/ramp/config/network-fee?asset=USDC&network=ETH&amount=100" \
  -H "x-auth-token: YOUR_API_TOKEN"
```

Block the flow if `network_status` is `MAINTENANCE`, and check the amount against the network's `min_withdraw_amount` and `withdraw_precision`.

## Step 2: Create the withdrawal

Call [Create Withdraw](/stablecoin-account/v1.6/api-reference/create-withdraw) with an idempotency key:

```bash theme={null}
curl -X POST https://api-sandbox.uqpaytech.com/api/v1/ramp/withdraw \
  -H "x-auth-token: YOUR_API_TOKEN" \
  -H "x-idempotency-key: $(uuidgen | tr '[:upper:]' '[:lower:]')" \
  -H "Content-Type: application/json" \
  -d '{
    "currency": "USDC",
    "network": "ETH",
    "amount": "100",
    "withdraw_address": "0x0993446fBB19f4e828768515eF7A9408B5F1A000",
    "memo": "test",
    "reason": "test"
  }'
```

| Field              | Required | Description                                 |
| ------------------ | :------: | ------------------------------------------- |
| `currency`         |    Yes   | Withdrawal currency, for example `USDC`     |
| `network`          |    Yes   | Network code, for example `ETH`             |
| `amount`           |    Yes   | Withdrawal amount, as a decimal string      |
| `withdraw_address` |    Yes   | Destination address                         |
| `memo`             |    No    | Address memo/tag, for networks that use one |
| `reason`           |    Yes   | Withdrawal remark                           |

**Response:**

```json theme={null}
{
  "code": 200,
  "message": "Success",
  "data": {
    "order_id": "f75fdee5-0cc1-4b52-818e-497dd376cced",
    "short_order_id": "WD260124-N1PAAIXX",
    "order_status": "Pending",
    "order_type": "Withdraw",
    "currency": "USDC",
    "network": "ETH",
    "amount": "100",
    "withdraw_address": "0x0993446fBB19f4e828768515eF7A9408B5F1A000",
    "network_fee": "0.66",
    "processing_fee": "0",
    "actual_amount": "99.34",
    "reason": "test",
    "create_time": "2026-01-24 11:41:37 +08:00"
  }
}
```

`actual_amount` is what arrives at the destination after fees. The fee actually charged can differ slightly from the Step 1 estimate.

<Warning>
  When the destination routes to the Binance channel, the request is rejected with `missing travel_rule_data for binance withdraw` if the address book entry has no Travel Rule data. Backfill `meta_data` via [Update Address Book](/stablecoin-account/v1.6/api-reference/update-address-book) first — see [Travel Rule compliance](/stablecoin-account/v1.6/guide/travel-rule-compliance).
</Warning>

## Step 3: Track the withdrawal

Status updates arrive on the [Withdrawal webhook](/stablecoin-account/v1.6/webhooks/withdrawal):

| Event type              | Meaning                       |
| ----------------------- | ----------------------------- |
| `ramp.withdraw.pending` | Withdrawal processing         |
| `ramp.withdraw.success` | Withdrawal completed on-chain |
| `ramp.withdraw.failed`  | Withdrawal failed             |

You can also poll [Retrieve Withdraw](/stablecoin-account/v1.6/api-reference/retrieve-withdraw) with either the long or short order ID, or reconcile in bulk with [List Withdraws](/stablecoin-account/v1.6/api-reference/list-withdraws). Completed orders include the on-chain transaction hash (`txid`) and `completed_time`.

```bash theme={null}
curl "https://api-sandbox.uqpaytech.com/api/v1/ramp/withdraw/f75fdee5-0cc1-4b52-818e-497dd376cced" \
  -H "x-auth-token: YOUR_API_TOKEN"
```

## Related

* [Create Withdraw API](/stablecoin-account/v1.6/api-reference/create-withdraw)
* [Withdrawal webhook](/stablecoin-account/v1.6/webhooks/withdrawal)
* [Address book](/stablecoin-account/v1.6/guide/address-book)
* [Travel Rule compliance](/stablecoin-account/v1.6/guide/travel-rule-compliance)
* [Supported assets and networks](/stablecoin-account/v1.6/guide/supported-assets-and-networks) — fee estimation and limits
