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

# Withdraw (Crypto)

> Initiate a crypto withdrawal to an external wallet address. Supports stablecoins (USDT, USDC) and the UTXO coins BTC, LTC, DOGE, and BCH.



## OpenAPI

````yaml /api-reference/openapi.json post /payments/withdraw/address
openapi: 3.0.0
info:
  title: BREET PUBLIC API
  version: 1.0.0
  license:
    name: Proprietary
    url: https://breet.io/terms
servers:
  - url: https://api.breet.io/v1
security:
  - appId: []
    appSecret: []
    breetEnv: []
tags:
  - name: Crypto Wallet
    description: Generate and manage crypto wallet addresses for receiving deposits.
    x-group: Wallets and Deposits
  - name: Withdrawals
    description: >-
      ## Withdrawals


      To help protect your funds, withdrawals support an additional security
      layer through **IP whitelisting**.


      ### IP Whitelisting


      When IP whitelisting is enabled, all withdrawal requests must originate
      from an approved IP address. Any withdrawal request coming from an IP not
      on the whitelist will be automatically blocked.


      You can add up to **7 IP addresses** from your dashboard.


      This feature is recommended for:


      - Production servers
          
      - Preventing unauthorized withdrawal attempts
          

      ### How it works


      - Enable IP whitelisting from your dashboard
          
      - Add up to 7 trusted IP addresses
          
      - Only requests from those IPs will be allowed to initiate withdrawals
          

      If IP whitelisting is disabled, withdrawals can be initiated from any IP
      address.
  - name: Banks
    description: List, validate, add, and remove bank accounts for fiat withdrawals.
  - name: Transactions
    description: Retrieve deposit and trade transaction history.
  - name: Webhooks
    description: >-
      Inspect and retry **outgoing** webhooks we send to your server (trade and
      withdrawal events). Requires an active integration with API access (VIP
      partners). For **incoming** payload shapes and verification, see the
      Webhooks guide in the Guides tab.
  - name: Assets
    description: >-
      Retrieve the list of supported deposit/sell assets and their
      configuration.
  - name: Rates and Prices
    description: >-
      Get live market prices and calculate conversion rates. These endpoints are
      public and do not require authentication.
  - name: Account
    description: Retrieve and update integration account details and preferences.
  - name: Testing
    description: Endpoints for testing your integration in the sandbox environment.
  - name: Conversion
    description: >-
      Convert between USD and local fiat (NGN | GHS). Available for both user
      and integration (business) flows.
  - name: Withdrawal addresses
    description: >-
      Add and remove withdrawal (payout) wallet addresses. If the same address,
      network, and token are sent with a different label, the existing address
      is updated.
paths:
  /payments/withdraw/address:
    post:
      tags:
        - Withdrawals
      summary: Withdraw (Crypto)
      description: >-
        Initiate a crypto withdrawal to an external wallet address. Supports
        stablecoins (USDT, USDC) and the UTXO coins BTC, LTC, DOGE, and BCH.
      operationId: withdrawStableCoins
      requestBody:
        content:
          application/json:
            schema:
              type: object
              example:
                amount: 10
                walletAddress: 14grJpemFaf88c8tiVb77W7TYg2W3ir6pfkKz3YjhhZ5
                token: USDT
                network: SOL
                externalId: your-unique-ref
              properties:
                amount:
                  type: number
                  description: >-
                    USD value, up to 2 decimal places. Send amount or
                    cryptoAmount, never both.
                cryptoAmount:
                  type: number
                  description: >-
                    Alternative to amount: the value in crypto units, up to 8
                    decimal places. Send amount or cryptoAmount, never both.
                pin:
                  type: string
                  description: PIN set on your dashboard.
                walletAddress:
                  type: string
                token:
                  type: string
                  description: >-
                    Token to withdraw. Stablecoins: USDT, USDC. UTXOs: BTC, LTC,
                    DOGE, BCH.
                network:
                  type: string
                  description: >-
                    Blockchain network for the withdrawal. Supported: ERC20,
                    TRC20, BSC, SOL, TON (USDT only), BASE (USDC only).
                    Stablecoins only - omit for BTC, LTC, DOGE and BCH.
                feeLevel:
                  type: string
                  enum:
                    - low
                    - medium
                    - high
                  description: >-
                    Network fee level. Required for BTC, LTC, DOGE and BCH.
                    Ignored for stablecoins, which use a flat fee per network.
                    Quote the fee per level with POST
                    /payments/estimate-network-fee.
                externalId:
                  type: string
                  description: >-
                    Your unique reference for this withdrawal. Can be used to
                    retrieve the withdrawal later.
              required:
                - pin
                - walletAddress
                - token
            examples:
              stablecoin:
                summary: Stablecoin withdrawal
                value:
                  amount: 10
                  pin: '1234'
                  walletAddress: 14grJpemFaf88c8tiVb77W7TYg2W3ir6pfkKz3YjhhZ5
                  token: USDT
                  network: SOL
                  externalId: your-unique-ref
              coin:
                summary: UTXO withdrawal priced in crypto units
                value:
                  cryptoAmount: 0.01
                  pin: '1234'
                  walletAddress: bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq
                  token: BTC
                  feeLevel: medium
                  externalId: your-unique-ref
      responses:
        '200':
          description: Stablecoin withdrawal initiated successfully
          content:
            application/json:
              example:
                message: withdrawal initiated successfully
                success: true
                data:
                  id: 697251ed397a53d0cb7b228b
                meta: {}
                summary: {}
                stats: {}
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                missingFields:
                  summary: Required fields not provided
                  value:
                    success: false
                    message: >-
                      walletAddress, token, and network are required for
                      integration withdrawals
                    meta: {}
                    errors: []
                    data: {}
                insufficientBalance:
                  summary: Insufficient balance for withdrawal
                  value:
                    success: false
                    message: insufficient balance
                    meta: {}
                    errors: []
                    data: {}
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          description: Withdrawal blocked by policy or restriction
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                ipBlocked:
                  summary: Request IP not on allowlist
                  value:
                    success: false
                    message: access denied
                    meta: {}
                    errors: []
                    data: {}
                usdtDisabled:
                  summary: USDT withdrawals temporarily disabled
                  value:
                    success: false
                    message: USDT withdrawals are currently disabled
                    meta: {}
                    errors: []
                    data: {}
                erc20Disabled:
                  summary: ERC20 withdrawals temporarily disabled
                  value:
                    success: false
                    message: ERC20 withdrawals are currently disabled
                    meta: {}
                    errors: []
                    data: {}
                kycRequired:
                  summary: KYC verification required
                  value:
                    success: false
                    message: you must verify basic KYC before you can withdraw crypto
                    meta: {}
                    errors: []
                    data: {}
                breetAddress:
                  summary: Cannot withdraw to a Breet wallet address
                  value:
                    success: false
                    message: you can not use a Breet wallet address for this action...
                    meta: {}
                    errors: []
                    data: {}
                feeExceedsAmount:
                  summary: Network fee leaves no payout
                  value:
                    success: false
                    message: >-
                      the BTC network fee of $2.77 leaves no payout for a $2
                      withdrawal
                    meta: {}
                    errors: []
                    data: {}
                cryptoAmountRange:
                  summary: cryptoAmount outside the USD limits
                  value:
                    success: false
                    message: >-
                      the minimum crypto amount required is 0.00015228 BTC ($10)
                      and the maximum is 0.15228426 BTC ($10000)
                    meta: {}
                    errors: []
                    data: {}
        '404':
          description: Wallet address not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                success: false
                message: wallet address not found
                meta: {}
                errors: []
                data: {}
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    ErrorResponse:
      type: object
      required:
        - success
        - message
      properties:
        success:
          type: boolean
          enum:
            - false
        message:
          type: string
        meta:
          type: object
        errors:
          type: array
          items:
            type: object
        data:
          type: object
    RateLimitResponse:
      type: object
      required:
        - message
      properties:
        message:
          type: string
  responses:
    Unauthorized:
      description: Invalid or missing API credentials
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            notAuthenticated:
              summary: Missing credentials
              value:
                success: false
                message: you're not authenticated
                meta: {}
                errors: []
                data: {}
            wrongCredentials:
              summary: Invalid app ID or secret
              value:
                success: false
                message: wrong app id and secret combination
                meta: {}
                errors: []
                data: {}
    ValidationError:
      description: >-
        Request validation failed — check the errors array for field-level
        details
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            message: validation errors
            meta: {}
            errors:
              - message: Invalid value
                field: amount
                location: body
            data: {}
    RateLimitExceeded:
      description: >-
        Too many requests — retry after the period indicated in the Retry-After
        header
      headers:
        Retry-After:
          description: Seconds until the rate limit window resets
          schema:
            type: integer
        X-RateLimit-Limit:
          description: Maximum requests allowed in the window
          schema:
            type: integer
        X-RateLimit-Remaining:
          description: Requests remaining in the current window
          schema:
            type: integer
        X-RateLimit-Reset:
          description: Unix timestamp when the window resets
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RateLimitResponse'
          example:
            message: Too many requests. Please try again later.
    InternalServerError:
      description: An unexpected server error occurred
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            success: false
            message: something went wrong!
            meta: {}
            errors: []
            data: {}
  securitySchemes:
    appId:
      type: apiKey
      in: header
      name: x-app-id
      description: Your application ID from the Breet dashboard
    appSecret:
      type: apiKey
      in: header
      name: x-app-secret
      description: Your application secret from the Breet dashboard
    breetEnv:
      type: apiKey
      in: header
      name: X-Breet-Env
      description: 'Environment selector: sandbox or production'

````