---
title: "GET /private/withdraw"
method: GET
path: "/private/withdraw"
tags: ["Wallet", "Private"]
---

# GET /private/withdraw

`GET /private/withdraw`

Creates a new withdrawal request. This method allows you to withdraw funds from your account to an external address. The withdrawal can be configured with priority settings and must use an address from your address book.

**Withdrawal Checks & Balance Updates**

Withdrawal funds are checked twice: when a user requests a withdrawal and again when they confirm it via the email link. If available funds decrease between these steps, the withdrawal may be rejected.

A withdrawal may also be rejected if the on-chain fee increases between the request and confirmation.

The withdrawal amount is deducted only after all checks pass and the transaction is scheduled. The web-interface Withdrawal tab displays all withdrawals regardless of their status (pending, cancelled, rejected, or completed).

**Coinbase wallet type**

For Coinbase wallet type accounts the method supports network selection and CTN (Coinbase Travel Network) counterparties, and behaves differently:

- Required parameters are `currency` (any portfolio currency) and `amount`, plus one of `address` or `id` (the address book entry identifier returned by `private/get_address_book`).
- When `address` is an on-chain address, pass `network` (and `tag` when applicable) to identify the address book entry. For a CTN withdrawal, pass the CTN counterparty identifier of the entry as `address`.
- `priority` and `nonce` are not supported. Use `private/coinbase/estimate_withdrawal_fee` to estimate the network fee.
- Subaccounts can withdraw only when enabled by the main account via `private/set_coinbase_subaccount_withdrawals_allowed`.
- The response is a Coinbase withdrawal object instead of the legacy withdrawal object. Its `state` is one of `prepared`, `awaiting_second_email`, `unconfirmed`, `completed` or `cancelled`; withdrawals to an address that is not trusted start as `prepared` and require email confirmation, in which case `transfer_idem` is absent until the withdrawal is submitted to the custodian. Fields that are not set are omitted from the response.

**📖 Related Article:** [Managing Withdrawals](https://docs.deribit.com/articles/managing-withdrawals-api)

**Scope:** `wallet:read_write` and mainaccount

[Try in API console](https://test.deribit.com/api_console?method=%2Fprivate%2Fwithdraw)

## Query parameters

- `currency` 'BTC' | 'ETH' | 'USDC' | 'USDT' | 'EURR', required — Currency, i.e `"BTC"`, `"ETH"`, `"USDC"`
- `address` string — Address in proper format for currency
- `amount` number, required
- `network` string
- `tag` string
- `id` string
- `priority` 'insane' | 'extreme_high' | 'very_high' | 'high' | 'mid' | 'low' | 'very_low'
- `nonce` string — Nonce

## Response `200`

Success response

- PrivateWithdrawResponse
  - `jsonrpc` '2.0', required — The JSON-RPC version (2.0)
  - `id` integer — The id that was sent in the request
  - `result` union, required
    - Withdrawal
      - `address` string, required — Address in proper format for currency
      - `amount` number, required — Amount of funds in given currency
      - `confirmed_timestamp` integer, nullable — The timestamp (milliseconds since the Unix epoch) of withdrawal confirmation, `null` when not confirmed
      - `created_timestamp` integer — The timestamp (milliseconds since the Unix epoch)
      - `currency` 'BTC' | 'ETH' | 'USDC' | 'USDT' | 'EURR', required — Currency, i.e `"BTC"`, `"ETH"`, `"USDC"`
      - `fee` number — Fee in currency
      - `id` integer — Withdrawal id in Deribit system
      - `priority` number — Id of priority level
      - `state` 'unconfirmed' | 'confirmed' | 'cancelled' | 'completed' | 'interrupted' | 'rejected', required — Withdrawal state, allowed values : `unconfirmed`, `confirmed`, `cancelled`, `completed`, `interrupted`, `rejected`
      - `transaction_id` string, nullable, required — Transaction id in proper format for currency, `null` if id is not available
      - `updated_timestamp` integer, required — The timestamp (milliseconds since the Unix epoch)
      - `nonce` string — Optional idempotency nonce if provided in the request
    - CoinbaseWithdrawalResult — Result of a withdrawal for a Coinbase wallet type account. Returned instead of `withdrawal` for Coinbase wallet type users. Fields that are not set are omitted from the response.
      - `id` string, required — Unique identifier (UUID7) of the withdrawal
      - `transfer_idem` string — Idempotency identifier of the transfer at the custodian. Absent until the withdrawal has been submitted to the custodian — for example while the withdrawal is still `prepared` and awaiting email confirmation.
      - `currency` 'BTC' | 'ETH' | 'USDC' | 'USDT' | 'EURR', required — Currency, i.e `"BTC"`, `"ETH"`, `"USDC"`
      - `state` 'prepared' | 'awaiting_second_email' | 'unconfirmed' | 'completed' | 'cancelled', required — State of the withdrawal
      - `amount` number, required — Amount of the withdrawal, in the given currency
      - `address` string — Destination of the withdrawal: the on-chain address, or the CTN counterparty identifier for a CTN withdrawal
      - `transaction_id` string — Hash of the on-chain transaction. Absent until the transaction has been broadcast.
      - `network` string — Network resource name of the destination (e.g. `"networks/ethereum-mainnet"`); absent for CTN withdrawals
      - `network_display_name` string — Human-readable name of the network (e.g. `"Ethereum"`); absent for CTN withdrawals
      - `destination_tag` string — Destination tag / memo of the withdrawal; absent when not set
      - `payment_id` string — Payment identifier assigned by the custodian; absent when not set
      - `source_ctn_id` string — CTN counterparty identifier of the source; present for CTN withdrawals
      - `destination_ctn_id` string — CTN counterparty identifier of the destination; present for CTN withdrawals
      - `created_timestamp` integer, required — The timestamp (milliseconds since the Unix epoch)
      - `updated_timestamp` integer, required — The timestamp (milliseconds since the Unix epoch)
      - `confirmed_timestamp` integer — The timestamp (milliseconds since the Unix epoch)
      - `clearance_state` string — Compliance clearance state of the withdrawal; absent while no clearance decision has been recorded
      - `note` string, required — Note attached to the withdrawal; empty string when not set

## Changes

- **2026-09-01** `d0d337dd9329` — 8 breaking, 6 warning, 4 info
  - added `#/components/schemas/withdrawal, #/components/schemas/coinbase_withdrawal_result` to the `result` response property `oneOf` list for the response status `200`
  - the `result` response's property type changed from `object` to no type for status `200`
  - removed the required property `result/address` from the response with the `200` status
  - removed the required property `result/amount` from the response with the `200` status
  - …14 more

[Change history](https://skmtc.dev/deribit/apis/deribit-api/changes/private/withdraw/get.md)

---

[API](https://skmtc.dev/deribit/apis/deribit-api.md) · [All operations](https://skmtc.dev/deribit/apis/deribit-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/deribit/deribit-api/revisions/d0d337dd9329/schema)
