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

# Create withdraw request

> Submit a cryptocurrency or fiat withdrawal request from a WhiteBIT account via the V4 API.

## Withdrawal Scenarios Guide

The endpoint supports **8 different withdrawal scenarios**. Each scenario requires different fields depending on the currency type, destination, and regulatory requirements. Use the example selector above to switch between scenarios.

### 🔹 Cryptocurrency Withdrawals

#### **Scenario 1: Simple Crypto Withdrawal**

For standard cryptocurrencies like BTC, ETH, LTC, etc.

* **Required fields**: `ticker`, `amount`, `address`, `uniqueId`
* **Use when**: Withdrawing to a standard blockchain address

#### **Scenario 2: Multi-Network Crypto (USDT, USDC)**

For cryptocurrencies existing on multiple blockchains.

* **Required fields**: Same as above + `network`
* **Networks**: ERC20 (Ethereum), TRC20 (Tron), BEP20 (BSC), OMNI, etc.
* **Use when**: Withdrawing tokens existing on multiple chains

<Warning>
  **Critical**: Ensure the `network` matches the destination address type. Sending ERC20 USDT to a TRC20 address will result in **permanent loss of funds**. Verify the network on [Asset Status endpoint](/api-reference/market-data/asset-status-list).
</Warning>

#### **Scenario 3: Travel Rule Compliance (EEA Users)**

Required for crypto withdrawals when the account is registered in the European Economic Area (EEA).

* **Required fields**: Standard crypto fields + `travelRule` object
* **Travel rule types**:
  * `individual` - Personal withdrawals (requires first name / last name)
  * `entity` - Business withdrawals (requires company name / address)
* **Use when**: The account is registered in EEA countries

### 🔹 Fiat Withdrawals (KYC Required)

<Note>
  All fiat withdrawals require KYC verification. Ensure the account is verified before attempting fiat withdrawals.
</Note>

#### **Scenario 4: Basic Fiat Withdrawal**

Standard fiat withdrawal via VISAMASTER provider.

* **Required fields**: `ticker`, `amount`, `provider`, `uniqueId`
* **Currencies**: UAH, USD, EUR, etc.
* **Use when**: Standard fiat withdrawal within normal limits

#### **Scenario 5: Fiat with Partial Enable**

For withdrawals exceeding standard limits with "partially successful" status support.

* **Required fields**: Same as basic + `partialEnable: true` + `address` (encrypted card token)
* **Use when**: Withdrawing larger amounts eligible for partial processing
* **Important**: The application must handle "Partially successful" withdrawal status

#### **Scenario 6: IBAN Transfers (UAH\_IBAN)**

Bank transfer withdrawals to IBAN accounts.

* **Required fields**: Standard fields + `beneficiary` object with:
  * `firstName`, `lastName` (max 40 symbols, latin letters)
  * `tin` (Tax Identification Number, 10 digits)
* **Use when**: Withdrawing UAH to Ukrainian bank accounts via IBAN

#### **Scenario 7: International Fiat (USD/EUR VISAMASTER)**

Withdrawals with extended beneficiary information.

* **Required fields**: Standard fields + `beneficiary` object with:
  * `firstName`, `lastName`, `phone`, `email`, `birthDate` (YYYY-MM-DD)
* **Use when**: Withdrawing USD or EUR via VISAMASTER\_PAYCORE provider
* **Currencies**: USD\_VISAMASTER, EUR\_VISAMASTER

***

## Amount and Fee Calculation

<Tip>
  The `amount` field in the request **includes** the withdrawal fee. The recipient receives `amount - fee`.
</Tip>

### How it works:

**Example request** (`/withdraw`):

* Balance: 100 USDT
* Withdrawal fee: 2 USDT
* Request `amount: "100"`
* **Result**: 100 USDT deducted from balance, recipient receives **98 USDT**

**Alternative approach** (use `/withdraw-pay` instead):

* Balance: 100 USDT
* Withdrawal fee: 2 USDT
* Request `amount: "98"`
* **Result**: 102 USDT deducted from balance, recipient receives **98 USDT**

<Note>
  To specify the exact amount the recipient should receive (with fee added on top), use the [withdraw-pay endpoint](/api-reference/account-wallet/create-withdraw-request-with-specific-amount) instead.
</Note>

Check current fees via [Get Fees endpoint](/api-reference/account-wallet/get-fees) before creating withdrawals.

***

## Common Pitfalls & Best Practices

### ⚠️ Unique ID Management

<Warning>
  **Critical**: Generate a **NEW** `uniqueId` for each withdrawal request.

  Reusing the same `uniqueId` will result in:

  ```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "code": 0,
    "message": "Validation failed",
    "errors": {
      "uniqueId": ["The unique id has already been taken."]
    }
  }
  ```
</Warning>

**Best practice**: Use a timestamp-based or UUID generator:

* ✅ Good: `"24529041"`, `"withdrawal_1640995200_abc123"`
* ❌ Bad: Reusing `"12345"` for multiple withdrawals

### ⚠️ Address Validation

Different currencies have different address formats:

* **Bitcoin**: Starts with `1`, `3`, or `bc1` (SegWit)
* **Ethereum/ERC20**: Starts with `0x`, 42 characters
* **Tron/TRC20**: Starts with `T`, 34 characters
* **Fiat**: Card token or IBAN format

The platform validates addresses, but double-check addresses before sending.

### ⚠️ Memo/Destination Tag

Some currencies require a memo (destination tag):

* **XLM (Stellar)**: Requires memo
* **XRP (Ripple)**: Requires destination tag
* **EOS**: Requires memo

<Warning>
  Missing a required memo will result in **permanent loss of funds** or significant delays in recovery. Check currency requirements on [Asset Status endpoint](/api-reference/market-data/asset-status-list).
</Warning>

### ⚠️ Provider Selection (Fiat)

Fiat withdrawals require the correct provider:

* Check available providers via [Asset Status endpoint](/api-reference/market-data/asset-status-list)
* Common providers: `VISAMASTER`, `VISAMASTER_PAYCORE`, `UAH_IBAN`
* Provider availability depends on currency and region

***

## Workflow: Complete Withdrawal Process

### Step 1: Pre-Withdrawal Checks

```
1. Check balance: GET /api/v4/main-account/balance
2. Get withdrawal fees: POST /api/v4/main-account/fee  
3. Verify currency is withdrawable: GET /api/v4/public/assets
   - Check "can_withdraw" status is "true"
   - Get available networks/providers
   - Check minimum/maximum amounts
```

### Step 2: Create Withdrawal

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

**Success response**: `[]` (empty array)

Validation succeeded and the withdrawal process has started. The withdrawal is now queued for processing.

### Step 3: Monitor Status

```
POST /api/v4/main-account/history
```

Search by `uniqueId` to track the transaction.

**Withdrawal status codes**:

* **Successful**: 3, 7
* **Canceled**: 4, 9
* **Pending**: Other codes (see [history endpoint](/api-reference/account-wallet/get-deposit-withdraw-history) for full list)

<Note>
  Cryptocurrency withdrawals are typically processed within 15-60 minutes depending on network congestion. Fiat withdrawals may take 1-5 business days depending on the payment provider.
</Note>

***

## Network Selection Guide

For multi-network currencies (USDT, USDC, etc.), choosing the right network is critical:

| Network              | Speed     | Fee      | Use When                             |
| -------------------- | --------- | -------- | ------------------------------------ |
| **ERC20** (Ethereum) | Slow      | High     | Large amounts, highest security      |
| **TRC20** (Tron)     | Fast      | Very Low | Small/medium amounts, fastest option |
| **BEP20** (BSC)      | Fast      | Low      | Good balance of speed and cost       |
| **OMNI**             | Very Slow | High     | Legacy, rarely used                  |

<Tip>
  **Default network**: If the `network` parameter is omitted, the default network is used (typically ERC20 for USDT). Always specify the network explicitly to avoid confusion.
</Tip>

***

## Error Handling

### Common validation errors (400):

**Missing required fields**:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "code": 0,
  "message": "Validation failed",
  "errors": {
    "address": ["The address field is required."],
    "amount": ["The amount field is required."],
    "ticker": ["The ticker field is required."],
    "uniqueId": ["The unique id field is required."]
  }
}
```

**Invalid ticker**:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "code": 0,
  "message": "Validation failed",
  "errors": {
    "ticker": ["The selected ticker is invalid."]
  }
}
```

**KYC required**:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "code": 0,
  "message": "Validation failed",
  "errors": {
    "amount": [
      "This currency has no active pairs or it may have been delisted.",
      "Current limit exceeded"
    ]
  }
}
```

### Inner validation errors (422):

**Error codes**:

* `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
* `7` - Amount should be integer (zero precision currencies like NEO)
* `8` - Target withdraw amount without fee equals zero
* `9` - Address is unavailable (withdrawal to own address blocked)

**Example**:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "code": 5,
  "message": "Inner validation failed",
  "errors": {
    "amount": ["Not enough money, Ethereum balance = 1"]
  }
}
```

***

## Security Recommendations

<Warning>
  **Always verify withdrawal requests**:

  1. Double-check the destination address
  2. Verify the network (for multi-network currencies)
  3. Confirm the amount and fee calculation
  4. Test with a small amount first for new addresses
</Warning>

<Tip>
  **Withdrawal safety checklist**:

  * ✅ Address is correct and copied without errors
  * ✅ Network matches the destination (ERC20, TRC20, etc.)
  * ✅ Memo/tag included if required
  * ✅ Amount is within the available balance minus fees
  * ✅ Unique ID is newly generated
  * ✅ Provider is correct (for fiat)
</Tip>

***

## Related Endpoints

* [Create withdraw request with specific amount (fee not included)](/api-reference/account-wallet/create-withdraw-request-with-specific-amount) - Alternative endpoint where fee is added on top
* [Get deposit/withdraw history](/api-reference/account-wallet/get-deposit-withdraw-history) - Monitor withdrawal status
* [Get fees](/api-reference/account-wallet/get-fees) - Check current withdrawal fees
* [Main balance](/api-reference/account-wallet/main-balance) - Check available balance before withdrawal
* [Asset Status endpoint](/api-reference/market-data/asset-status-list) - Verify currency can be withdrawn and get network/provider info


## OpenAPI

````yaml /openapi/private/main_api_v4.yaml POST /api/v4/main-account/withdraw
openapi: 3.0.3
info:
  title: WhiteBIT Private HTTP API V4
  description: |
    WhiteBIT Private HTTP API V4 for Main balance changes.

    Base URL: https://whitebit.com

    All endpoints return time in Unix-time format.
    All endpoints return either a JSON object or array.
    For receiving responses from API calls please use http method POST.
  version: 4.0.0
  contact:
    name: WhiteBIT Support
    email: support@whitebit.com
    url: https://whitebit.com
servers:
  - url: https://whitebit.com
    description: WhiteBIT Global Server
  - url: https://whitebit.eu
    description: WhiteBIT EU Server
security:
  - ApiKeyAuth: []
    PayloadAuth: []
    SignatureAuth: []
tags:
  - name: Main Account
    description: Main account balance and operations
  - name: Deposit
    description: Cryptocurrency and fiat deposit operations
  - name: Withdraw
    description: Cryptocurrency and fiat withdrawal operations
  - name: Transfer
    description: Balance transfer operations
  - name: Codes
    description: WhiteBIT codes operations
  - name: Crypto Lending - Fixed
    description: Fixed crypto lending plans
  - name: Crypto Lending - Flex
    description: Flexible crypto lending plans
  - name: Fees
    description: Fee information
  - name: Sub-Account
    description: Sub-account management
  - name: Sub-Account API Keys
    description: Sub-account API key management
  - name: Mining Pool
    description: Mining pool operations
  - name: Credit Line
    description: Credit line information
  - name: JWT
    description: JWT token management
paths:
  /api/v4/main-account/withdraw:
    post:
      tags:
        - Withdraw
      summary: Create withdraw request
      description: |
        The endpoint creates withdraw for the specified ticker.

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

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

        <Note>
        Also, fiat currencies can't be withdrawn without KYC verification.
        </Note>
      operationId: createWithdraw
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - ticker
                - amount
                - address
                - uniqueId
                - request
                - nonce
              properties:
                ticker:
                  type: string
                  description: >
                    Currency's [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.
                  example: ETH
                amount:
                  type: string
                  description: >
                    Withdraw amount (including [fee](/glossary#fee)). To add the
                    fee to the specified amount, use the
                    /main-account/withdraw-pay request.
                  example: '0.9'
                address:
                  type: string
                  description: >-
                    Target address (wallet address for cryptocurrencies,
                    identifier/[card token](/glossary#card-token) for
                    [fiat](/glossary#fiat) currencies)
                  example: '0x0964A6B8F794A4B8d61b62652dB27ddC9844FB4c'
                memo:
                  type: string
                  description: |
                    [Memo](/glossary#memodestination-tag).

                    ⚠️ Required if currency is memoable.
                  example: '48565488244493'
                uniqueId:
                  type: string
                  description: >
                    Unique transaction identifier. Any string up to 255
                    characters; not validated as a UUID.


                    ⚠️ Generate a new unique ID for each withdrawal request.
                  example: '24529041'
                provider:
                  type: string
                  description: >
                    [Fiat](/glossary#fiat) currency
                    [provider](/glossary#provider). Example: VISAMASTER


                    ⚠️ Required for fiat currencies. Currency provider should be
                    taken from [Asset Status
                    endpoint](/public/http-v4/asset-status-list) response.
                  example: VISAMASTER
                network:
                  type: string
                  description: >
                    Cryptocurrency network. Available for multi network
                    currencies. Example: OMNI


                    ⚠️ Currency network should be taken from [Asset Status
                    endpoint](/public/http-v4/asset-status-list) response.
                    Default for USDT is ERC20
                  example: ERC20
                partialEnable:
                  type: boolean
                  description: >-
                    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.
                  example: false
                beneficiary:
                  type: object
                  description: >
                    Beneficiary information.


                    ⚠️ Required if currency [ticker](/glossary#ticker) is one
                    of: UAH_IBAN, USD_VISAMASTER, EUR_VISAMASTER, USD, EUR.


                    Per-field requirements vary by currency and provider.
                    Card-related fields (`cardToken`, `card.*`, `cardTokenSave`,
                    `fingerprintSession`) apply only to card-acquiring rails;
                    bank-related fields (`bank.*`) apply to bank-rail
                    withdrawals; `tin` is required for UAH_IBAN; `phone`,
                    `email`, and `birthDate` are required for
                    VISAMASTER/Mercuryo rails. See `/asset-status-list` for the
                    active provider per currency.
                  properties:
                    firstName:
                      type: string
                      description: >
                        Beneficiary first name. Max length: 40 symbols, latin
                        letters and special characters.


                        ⚠️ Required if currency [ticker](/glossary#ticker) is
                        one of: UAH_IBAN, USD_VISAMASTER, USD, EUR
                      example: Firstname
                    lastName:
                      type: string
                      description: >
                        Beneficiary last name. Max length: 40 symbols, latin
                        letters and special characters.


                        ⚠️ Required if currency [ticker](/glossary#ticker) is
                        one of: UAH_IBAN, USD_VISAMASTER, USD, EUR
                      example: Lastname
                    tin:
                      type: integer
                      description: |
                        Beneficiary TAX payer number. Integer, 10 digits.

                        ⚠️ Required if currency is UAH_IBAN.
                      example: 1000000000
                    phone:
                      type: string
                      description: >
                        Beneficiary phone number.


                        ⚠️ Required if currency [ticker](/glossary#ticker) is
                        one of: USD_VISAMASTER, EUR_VISAMASTER
                      example: '1234567891'
                    email:
                      type: string
                      description: >
                        Beneficiary email.


                        ⚠️ Required if currency [ticker](/glossary#ticker) is
                        one of: USD_VISAMASTER, EUR_VISAMASTER
                      example: john_doe@email.com
                    birthDate:
                      type: string
                      format: date
                      description: >
                        Beneficiary birth date. Format: YYYY-MM-DD.


                        ⚠️ Required if currency [ticker](/glossary#ticker) is
                        one of: USD_VISAMASTER, EUR_VISAMASTER, or when
                        withdrawing through Mercuryo.
                      example: '1990-01-01'
                    code:
                      type: string
                      description: >
                        Beneficiary verification code returned by a prior
                        verification step. Used by some card-acquiring flows
                        that require a one-time verification challenge before
                        settlement.
                      example: '123456'
                    cardToken:
                      type: string
                      description: >
                        Tokenized payment-card identifier for card-acquiring
                        rails. Use instead of raw PAN; obtain from the
                        card-tokenisation endpoint or from a prior successful
                        settlement on the same card.
                      example: tok_4f7c8e2a
                    cardTokenSave:
                      type: boolean
                      description: >
                        If `true`, request the acquiring provider to persist the
                        card token for reuse on subsequent withdrawals to the
                        same beneficiary.
                      example: false
                    fingerprintSession:
                      type: string
                      description: >
                        Anti-fraud device-fingerprint session identifier
                        captured at the partner's checkout surface and forwarded
                        to the acquiring provider. Required by some VISAMASTER
                        configurations.
                      example: fps_abc123
                    card:
                      type: object
                      description: >
                        Card details for card-acquiring rails. Use `cardToken`
                        instead when available; raw card details apply only when
                        a fresh card is being added.
                      properties:
                        save:
                          type: boolean
                          description: >-
                            If `true`, persist the card for reuse on subsequent
                            withdrawals.
                          example: false
                        name:
                          type: string
                          description: Cardholder name as embossed on the card.
                          example: John Doe
                        firstName:
                          type: string
                          description: Cardholder first name.
                          example: John
                        lastName:
                          type: string
                          description: Cardholder last name.
                          example: Doe
                        number:
                          type: string
                          description: >-
                            Primary Account Number (PAN). Treat as PCI-scope
                            sensitive data on the partner side.
                          example: '4111111111111111'
                        month:
                          type: string
                          description: Card expiry month as a two-digit string (`01`-`12`).
                          example: '12'
                        year:
                          type: string
                          description: Card expiry year as a four-digit string.
                          example: '2030'
                    address:
                      type: object
                      description: >
                        Beneficiary postal address. Required for several
                        VISAMASTER/SEPA configurations.
                      properties:
                        line1:
                          type: string
                          description: Street address line 1.
                          example: Martinez Campos 37
                        line2:
                          type: string
                          description: Street address line 2.
                          example: ''
                        city:
                          type: string
                          description: City.
                          example: Madrid
                        zip:
                          type: string
                          description: Postal / ZIP code.
                          example: '28010'
                        country:
                          type: string
                          description: ISO country code.
                          example: ES
                    bank:
                      type: object
                      description: >
                        Beneficiary bank details for bank-rail withdrawals (used
                        when the destination is an account number rather than an
                        IBAN).
                      properties:
                        routingNumber:
                          type: string
                          description: >-
                            Bank routing number (ABA, BSB, sort code, or
                            equivalent for the destination country).
                          example: '021000021'
                        name:
                          type: string
                          description: Bank name.
                          example: Example Bank
                        address:
                          type: string
                          description: Bank postal address.
                          example: 1 Bank Street, London
                        country:
                          type: string
                          description: Bank country (ISO code).
                          example: GB
                travelRule:
                  type: object
                  description: >
                    Travel Rule information data array.


                    ⚠️ Required if currency is crypto and the account is from
                    [EEA](/glossary#european-economic-area-eea)
                  properties:
                    type:
                      type: string
                      enum:
                        - individual
                        - entity
                      description: >
                        Travel rule receiver type. Values: "individual" or
                        "entity"


                        ⚠️ Required if currency is crypto and the account is
                        from [EEA](/glossary#european-economic-area-eea)
                      example: individual
                    vasp:
                      type: string
                      description: >
                        Travel rule destination platform (VASP) name.


                        ⚠️ Required if currency is crypto and the account is
                        from [EEA](/glossary#european-economic-area-eea)
                      example: Binance
                    name:
                      type: string
                      description: >
                        Travel rule. If individual - first_name ; if entity -
                        entity_name


                        ⚠️ Required if currency is crypto and the account is
                        from [EEA](/glossary#european-economic-area-eea)
                      example: John
                    address:
                      type: string
                      description: >
                        Travel rule. If individual - last_name ; if entity -
                        entity_address


                        ⚠️ Required if currency is crypto and the account is
                        from [EEA](/glossary#european-economic-area-eea)
                      example: 123 Business Street, London, UK
                paymentDescription:
                  type: string
                  description: >
                    Description of withdrawal destination


                    ⚠️ Required if currency is crypto and withdrawal from
                    whitebit-tr.com
                  example: Payment description
                request:
                  type: string
                  description: Request signature
                  example: '{{request}}'
                nonce:
                  type: integer
                  description: Unique request identifier
                  example: 1594297865000
            examples:
              crypto:
                summary: Crypto withdrawal
                value:
                  ticker: ETH
                  amount: '0.9'
                  address: '0x0964A6B8F794A4B8d61b62652dB27ddC9844FB4c'
                  uniqueId: '24529041'
                  request: '{{request}}'
                  nonce: 1594297865000
              multiNetwork:
                summary: Multinetwork currency (USDT)
                value:
                  ticker: USDT
                  amount: '0.9'
                  address: '0x0964A6B8F794A4B8d61b62652dB27ddC9844FB4c'
                  uniqueId: '24529042'
                  network: ERC20
                  request: '{{request}}'
                  nonce: 1594297865000
              fiat:
                summary: Fiat withdrawal
                value:
                  ticker: UAH
                  amount: '100'
                  provider: VISAMASTER
                  uniqueId: '24529043'
                  request: '{{request}}'
                  nonce: 1594297865000
              fiatPartial:
                summary: Fiat with partial enable
                value:
                  ticker: UAH
                  amount: '50000'
                  address: t6XIpyirkiLP+I++XHWfSeGrn5p38g==
                  provider: VISAMASTER_PAYCORE
                  partialEnable: true
                  uniqueId: '24529045'
                  request: '{{request}}'
                  nonce: 1594297865000
              fiatIban:
                summary: Fiat IBAN currency
                value:
                  ticker: UAH
                  amount: '50000'
                  address: UA213223130000026007233566001
                  beneficiary:
                    firstName: Firstname
                    lastName: Lastname
                    tin: 1000000000
                  provider: UAH_IBAN
                  uniqueId: '24529045'
                  request: '{{request}}'
                  nonce: 1594297865000
              fiatVisamaster:
                summary: Fiat USD/EUR VISAMASTER
                value:
                  ticker: USD
                  amount: '30000'
                  address: t6XIpyirkiLP+I++XHWfSeGrn5p38g==
                  beneficiary:
                    firstName: Firstname
                    lastName: Lastname
                    phone: '1234567891'
                    email: john_doe@email.com
                  provider: USD_VISAMASTER
                  uniqueId: '24529045'
                  request: '{{request}}'
                  nonce: 1594297865000
              travelRuleIndividual:
                summary: Travel rule (individual)
                value:
                  ticker: BTC
                  amount: '0.5'
                  address: bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh
                  uniqueId: '24529046'
                  travelRule:
                    type: individual
                    vasp: Binance
                    name: John
                    address: 123 Business Street, London, UK
                  request: '{{request}}'
                  nonce: 1594297865000
              travelRuleEntity:
                summary: Travel rule (entity)
                value:
                  ticker: BTC
                  amount: '1.2'
                  address: bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh
                  uniqueId: '24529047'
                  travelRule:
                    type: entity
                    vasp: Kraken
                    name: Acme Corp
                    address: 123 Business Street, London, UK
                  request: '{{request}}'
                  nonce: 1594297865000
      responses:
        '201':
          description: >-
            Validation succeeded and withdraw creation process is started. Check
            the request status by uniqueId in deposit/withdraw history.
          content:
            application/json:
              schema:
                type: array
                items: {}
                description: Empty array indicates success
              example: []
        '400':
          description: >
            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.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                missingFields:
                  summary: Missing required fields
                  value:
                    code: 0
                    message: Validation failed
                    errors:
                      address:
                        - The address field is required.
                      amount:
                        - The amount field is required.
                      ticker:
                        - The ticker field is required.
                      uniqueId:
                        - The unique id field is required.
                duplicateUniqueId:
                  summary: Duplicate uniqueId
                  value:
                    code: 0
                    message: Validation failed
                    errors:
                      uniqueId:
                        - The unique id has already been taken.
                unconfirmedUser:
                  summary: Unconfirmed user (without KYC)
                  value:
                    code: 0
                    message: Validation failed
                    errors:
                      amount:
                        - >-
                          This currency has no active pairs or it may have been
                          delisted. Its rate cannot be calculated at the moment.
                        - Current limit exceeded
                accountVerification:
                  summary: Account must be verified for fiat currencies
                  value:
                    code: 0
                    message: Validation failed
                    errors:
                      amount:
                        - Your account must be verified
                invalidTicker:
                  summary: Invalid ticker
                  value:
                    code: 0
                    message: Validation failed
                    errors:
                      ticker:
                        - The selected ticker is invalid.
                providerRequired:
                  summary: Provider required for fiat currency
                  value:
                    code: 0
                    message: Validation failed
                    errors:
                      provider:
                        - Provider is required for fiat currency
                memoRequired:
                  summary: Memo required for memoable currency
                  value:
                    code: 0
                    message: Validation failed
                    errors:
                      memo:
                        - The memo field is required.
                invalidPartialEnable:
                  summary: Invalid partialEnable value
                  value:
                    code: 0
                    message: Validation failed
                    errors:
                      partialEnable:
                        - The partial enable field must be true or false.
                throttling:
                  summary: Rate limiting/throttling
                  value:
                    message: Too Many Attempts.
                    code: 0
        '412':
          description: >
            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.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInner'
              example:
                code: 1
                message: >-
                  This action is unauthorized. Please, enable Two-Factor
                  authentication.
        '422':
          description: >
            Inner validation failed.


            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)


            Additional account-state outcomes are also returned here with `code:
            0`

            (the message is localized, so match on the condition rather than the
            exact string):

            - **Daily / monthly withdrawal limit reached** — on field `amount`.

            - **Withdrawals temporarily restricted** — after a security event
            (e.g. password
              change); on field `error`, e.g. `Withdrawals restricted until {time}`.
            - **Address blocked by compliance** — the request is accepted but
            the withdrawal
              transitions to an `AML_FROZEN` state (no distinct error body); check the request
              status by `uniqueId` in deposit/withdraw history.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInner'
              examples:
                invalidAddress:
                  summary: Invalid address
                  value:
                    code: 2
                    message: Inner validation failed
                    errors:
                      address:
                        - The address is invalid
                notEnoughBalance:
                  summary: Not enough balance
                  value:
                    code: 5
                    message: Inner validation failed
                    errors:
                      amount:
                        - Not enough money, Ethereum balance = 1
components:
  schemas:
    Error:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
    ErrorInner:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-TXC-APIKEY
      description: The public WhiteBIT API key.
    PayloadAuth:
      type: apiKey
      in: header
      name: X-TXC-PAYLOAD
      description: Base64-encoded JSON request body.
    SignatureAuth:
      type: apiKey
      in: header
      name: X-TXC-SIGNATURE
      description: >-
        HMAC-SHA512 signature of the payload, hex-encoded. Computed as
        hex(HMAC-SHA512(payload, api_secret)).

````