---
title: "Create withdraw request with specific withdraw amount (fee not included)"
method: POST
path: "/api/v4/main-account/withdraw-pay"
tags: ["Withdraw"]
---

# Create withdraw request with specific withdraw amount (fee not included)

`POST /api/v4/main-account/withdraw-pay`

The endpoint has the similar logic as /main-account/withdraw, but with the only difference: amount that is specified will not include [fee](/glossary#fee) (it will be calculated to make target withdraw amount equal to the specified amount).

**Example:**
- When creating a base withdraw with amount = 100 USD, the receiver receives 100 USD minus the [fee](/glossary#fee), and the balance decreases by 100 USD.
- When using this endpoint with amount = 100 USD, the receiver receives 100 USD, and the balance decreases by 100 USD plus the [fee](/glossary#fee).

<Warning>
Rate limit: 1000 requests/10 sec.
</Warning>

<Note>
The API does not cache the response.
</Note>

## Request body

- WithdrawRequest
  - `ticker` string, required — Currencies [ticker](/glossary#ticker). Example: BTC ⚠️ Currencies ticker must have "can_deposit" status equal to "true". Use [Asset Status endpoint](/public/http-v4/asset-status-list) to know more about currency.
  - `amount` string, required — Withdraw amount (including [fee](/glossary#fee)). To add the fee to the specified amount, use the /main-account/withdraw-pay request
  - `address` string, required — Target address (wallet address for cryptocurrencies, identifier/[card token](/glossary#card-token) for [fiat](/glossary#fiat) currencies)
  - `memo` string — Required if currency is memoable. See [memo](/glossary#memodestination-tag) for details.
  - `uniqueId` string, required — Unique transaction identifier. Any string up to 255 characters; not validated as a UUID. ⚠️ Generate a new unique ID for each withdrawal request.
  - `provider` string — [Fiat](/glossary#fiat) currency [provider](/glossary#provider). Example: VISAMASTER ⚠️ Currency provider should be taken from [Asset Status endpoint](/public/http-v4/asset-status-list) response. Required if currency is fiat.
  - `network` string — Cryptocurrency network. Available for [multinetwork](/glossary#multinetwork) currencies. Example: OMNI ⚠️ Currency network should be taken from [Asset Status endpoint](/public/http-v4/asset-status-list) response. Default for USDT is ERC20
  - `partialEnable` boolean — Optional parameter for [FIAT](/glossary#fiat) withdrawals with increased Maximum Limit if set as "true". To use this parameter, the application must support "Partially successful" withdrawal status and latest updates in deposit/withdrawal history.
  - `customerIp` string — End-customer IP address forwarded to the [fiat](/glossary#fiat) [provider](/glossary#provider) for antifraud checks before the withdrawal is processed. ⚠️ Required if currency [ticker](/glossary#ticker) is USD or EUR with VISAMASTER [provider](/glossary#provider).
  - `beneficiary` object — Beneficiary information data. Required if currency [ticker](/glossary#ticker) is one of: UAH_IBAN, USD_VISAMASTER, EUR_VISAMASTER, USD, EUR
  - `travelRule` object — Travel Rule information data. Required if currency is crypto and the account is from [EEA](/glossary#european-economic-area-eea)
  - `request` string, required — Request signature
  - `nonce` integer, required — Unique request identifier

## Response `201`

Validation succeeded and withdraw creation process is started. Check the request status by uniqueId in deposit/withdraw history.

- unknown[] — Empty array indicates success
  - unknown

## Other responses

- `400` — Request validation failed. Request-shape errors always carry `code: 0`; the business-rule codes 1–9 are returned with HTTP 422 (see below), not 400.
- `412` — Two-Factor Authentication (2FA) is required for this action but is not enabled on the account. Enable 2FA in account security settings, then retry. The HTTP 412 status distinguishes this precondition failure from the business-rule codes at 422.
- `422` — Inner validation failed. This endpoint shares the validation pipeline of /main-account/withdraw, so the error contract is identical — the same business-rule codes and the same `code: 0` account-state outcomes apply. Business-rule codes (returned with HTTP 422): - 1 - currency is not withdrawable - 2 - specified address is invalid - 3 - amount is too small - 4 - amount is too small for the payment system - 5 - not enough balance - 6 - amount is less than or equals [fee](/glossary#fee) - 7 - amount should be integer (can happen for currencies with zero [precision](/glossary#precision) like Neo) - 8 - target withdraw amount without [fee](/glossary#fee) equals zero - 9 - address is unavailable (occurs for withdraws to own address)

---

[API](https://skmtc.net/whitebit/apis/whitebit-private-http-api-v4.md) · [All operations](https://skmtc.net/whitebit/apis/whitebit-private-http-api-v4/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/whitebit/whitebit-private-http-api-v4/revisions/76c9def9942f/schema)
