> ## 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 with the specific withdraw amount (fee is not included)

> Submit a withdrawal request where the specified amount is the exact amount received, with fees added on top.

Example:

* When creating a base withdraw with amount = 100 USD, the receiver receives 100 USD minus the fee, and the balance decreases by 100 USD.
* When calling the endpoint with amount = 100 USD, the receiver receives 100 USD, and the balance decreases by 100 USD + [fee](/glossary/#fee) amount.


## OpenAPI

````yaml /openapi/private/main_api_v4.yaml POST /api/v4/main-account/withdraw-pay
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-pay:
    post:
      tags:
        - Withdraw
      summary: Create withdraw request with specific withdraw amount (fee not included)
      description: >
        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>
      operationId: createWithdrawPay
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WithdrawRequest'
            example:
              ticker: ETH
              amount: '0.9'
              address: '0x0964A6B8F794A4B8d61b62652dB27ddC9844FB4c'
              uniqueId: '24529041'
              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
        '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. 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)
          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:
    WithdrawRequest:
      type: object
      required:
        - ticker
        - amount
        - address
        - uniqueId
        - request
        - nonce
      properties:
        ticker:
          type: string
          description: >-
            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.
          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: >-
            Required if currency is memoable. See
            [memo](/glossary#memodestination-tag) for details.
          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 ⚠️ Currency provider should be taken from [Asset
            Status endpoint](/public/http-v4/asset-status-list) response.
            Required if currency is fiat.
          example: VISAMASTER
        network:
          type: string
          description: >-
            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
          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 data. Required if currency
            [ticker](/glossary#ticker) is one of: UAH_IBAN, USD_VISAMASTER,
            EUR_VISAMASTER, USD, EUR
        travelRule:
          type: object
          description: >-
            Travel Rule information data. Required if currency is crypto and the
            account is from [EEA](/glossary#european-economic-area-eea)
        request:
          type: string
          description: Request signature
          example: '{{request}}'
        nonce:
          type: integer
          description: Unique request identifier
          example: 1594297865000
    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)).

````