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

# Create an account bank withdrawal

> Create a bank withdrawal from an account. This converts a digital asset to fiat currency and sends it to the specified destination bank account.




## OpenAPI

````yaml openapi/accounts.yaml post /v1/accounts/withdrawals
openapi: 3.0.2
info:
  version: 1.0.0
  title: Accounts (Stablecoin) API
  description: >
    Circle's Accounts API provides endpoints for managing stablecoin accounts --
    including transfers,

    withdrawals, deposits, wire bank accounts, and blockchain addresses.


    An **Account** is a general representation of a ledger or custody object
    that holds balances. It can be a business account,

    a stablecoin account ledger for an end user, an extra sub-ledger, or any
    future custody solution.
  license:
    name: Circle License
    url: https://circle.com/terms
servers:
  - url: https://api-sandbox.circle.com
  - url: https://api.circle.com
security: []
tags:
  - name: Accounts
    description: Manage accounts.
  - name: Account Groups
    description: Manage custody account groups and their memberships.
  - name: Transactions
    description: |
      Get a unified, customer-friendly view of account transaction activity.
  - name: Transfers
    description: Manage account transfers.
  - name: Withdrawals
    description: Manage account bank withdrawals (fiat offramp).
  - name: Wires
    description: Manage account bank accounts for wire transfers.
  - name: Deposits
    description: Get information on account bank deposits.
  - name: Deposit Addresses
    description: Manage account deposit addresses.
  - name: Recipient Addresses
    description: Manage account recipient addresses used for transfers.
paths:
  /v1/accounts/withdrawals:
    post:
      tags:
        - Withdrawals
      summary: Create an account bank withdrawal
      description: >
        Create a bank withdrawal from an account. This converts a digital asset
        to fiat currency and sends it to the specified destination bank account.
      operationId: createAccountWithdrawal
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountWithdrawalCreationRequest'
      responses:
        '201':
          description: Successfully created a withdrawal.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAccountWithdrawalResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/NotAuthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - bearerAuth: []
components:
  schemas:
    AccountWithdrawalCreationRequest:
      type: object
      required:
        - idempotencyKey
        - destination
        - amount
      properties:
        idempotencyKey:
          $ref: '#/components/schemas/IdempotencyKey'
        source:
          description: |
            The source account for the withdrawal. The type must be `account`.
          type: object
          required:
            - id
            - type
          properties:
            id:
              description: >
                Identifier of the source account created via [POST
                /v1/accounts](#operation/createAccount).
              type: string
              example: '1000565227'
            type:
              type: string
              enum:
                - account
        destination:
          $ref: '#/components/schemas/BusinessDestinationRequest'
        amount:
          $ref: '#/components/schemas/FiatMoney'
        toAmount:
          $ref: '#/components/schemas/FiatPayoutToMoney'
          description: To be used when requesting currency exchange.
    CreateAccountWithdrawalResponse:
      title: CreateAccountWithdrawalResponse
      properties:
        data:
          $ref: '#/components/schemas/BusinessPayout'
    IdempotencyKey:
      type: string
      description: >-
        Universally unique identifier (UUID v4) idempotency key. This key is
        utilized to ensure exactly-once execution of mutating requests.
      format: uuid
      example: ba943ff1-ca16-49b2-ba55-1057e70ca5c7
    BusinessDestinationRequest:
      type: object
      description: The destination bank account.
      required:
        - type
        - id
      properties:
        type:
          $ref: '#/components/schemas/BusinessAccountPayoutDestinationType'
        id:
          type: string
          description: >
            The ID of a bank account created via [POST
            /v1/banks/wires](#operation/createWireAccount).
          format: uuid
          example: b8627ae8-732b-4d25-b947-1df8f4007a29
    FiatMoney:
      type: object
      required:
        - amount
        - currency
      properties:
        amount:
          type: string
          description: Magnitude of the amount, in units of the currency, with a `.`.
          example: '3.14'
        currency:
          $ref: '#/components/schemas/FiatCurrency'
    FiatPayoutToMoney:
      type: object
      required:
        - currency
      properties:
        amount:
          description: Magnitude of the amount, in units of the currency, with a `.`.
          type: string
          example: '3.14'
          readOnly: true
        currency:
          $ref: '#/components/schemas/FiatCurrency'
    XRequestId:
      type: string
      format: uuid
      example: 2adba88e-9d63-44bc-b975-9b6ae3440dde
    BusinessPayout:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/Id'
        sourceAccountId:
          type: string
          description: Identifier of the source account.
        destination:
          $ref: '#/components/schemas/BankDestination'
        amount:
          $ref: '#/components/schemas/FiatMoney'
        toAmount:
          $ref: '#/components/schemas/FiatPayoutToMoney'
        fees:
          $ref: '#/components/schemas/FiatMoneyUsd'
        status:
          $ref: '#/components/schemas/PayoutStatus'
        trackingRef:
          type: string
          nullable: true
          description: >-
            Payout tracking reference. This is only available once the payout
            has been successfully submitted to the bank.
        errorCode:
          $ref: '#/components/schemas/PayoutErrorCode'
        externalRef:
          $ref: '#/components/schemas/Id'
        riskEvaluation:
          $ref: '#/components/schemas/RiskEvaluation'
        adjustments:
          $ref: '#/components/schemas/FinalAdjustments'
        return:
          $ref: '#/components/schemas/UnwithdrawalObject'
        description:
          type: string
          description: >
            A free-form description echoed from the original create request.
            Omitted when unset.
          nullable: true
        customerExternalRef:
          type: string
          description: >
            Customer-supplied external reference echoed back on the response and
            on payout webhooks. Useful for correlating payouts with external
            systems. Omitted when unset.
          nullable: true
        createDate:
          $ref: '#/components/schemas/UtcTimestamp'
        updateDate:
          $ref: '#/components/schemas/UtcTimestamp'
    Error:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: integer
          description: >
            Circle internal status code from the platform `CoreStatusCode` enum
            (and its domain-specific extensions). **This is not the HTTP status
            code** — `-1` is the catch-all unknown error, `1`/`2` indicate API
            parameter problems, `3` is forbidden, `4` is unauthorized, and
            larger values identify domain-specific failures. Consumers should
            rely on the HTTP status line for transport-level error class and on
            this field for the specific Circle error case.
          example: 2
        message:
          type: string
          example: Something went wrong.
    BusinessAccountPayoutDestinationType:
      type: string
      description: The destination bank account type.
      enum:
        - wire
    FiatCurrency:
      type: string
      description: Currency code.
      title: Currency
      enum:
        - USD
        - EUR
      example: USD
    Id:
      type: string
      description: Unique system-generated identifier for the entity.
      format: uuid
      example: b8627ae8-732b-4d25-b947-1df8f4007a29
    BankDestination:
      type: object
      description: The destination bank account.
      required:
        - type
        - id
      properties:
        type:
          $ref: '#/components/schemas/BusinessAccountPayoutDestinationType'
        id:
          type: string
          description: >
            The ID of a bank account created via [POST
            /v1/banks/wires](#operation/createWireAccount).
          format: uuid
          example: b8627ae8-732b-4d25-b947-1df8f4007a29
        name:
          type: string
          description: Bank name plus last four digits of the bank account number or IBAN.
          example: COMMERZBANK AG ****3000
    FiatMoneyUsd:
      type: object
      required:
        - amount
        - currency
      properties:
        amount:
          type: string
          description: Magnitude of the amount, in units of the currency, with a `.`.
          example: '3.14'
        currency:
          description: Currency code.
          type: string
          enum:
            - USD
    PayoutStatus:
      type: string
      description: >-
        Status of the payout. Status `pending` indicates that the payout is in
        process; `complete` indicates it finished successfully; `failed`
        indicates it failed.
      enum:
        - pending
        - complete
        - failed
    PayoutErrorCode:
      type: string
      nullable: true
      description: >-
        Indicates the failure reason of a payout. Only present for payouts in a
        failed state.
      enum:
        - insufficient_funds
        - transaction_denied
        - transaction_failed
        - transaction_returned
        - bank_transaction_error
        - fiat_account_limit_exceeded
        - invalid_bank_account_number
        - invalid_ach_rtn
        - invalid_wire_rtn
        - vendor_inactive
    RiskEvaluation:
      type: object
      description: >-
        Results of risk evaluation. Only present if the payment is denied by
        Circle's risk service.
      nullable: true
      properties:
        decision:
          description: Enumerated decision of the account.
          type: string
          enum:
            - approved
            - denied
            - review
        reason:
          description: Risk reason for the definitive decision outcome.
          type: string
          nullable: true
          example: '3000'
    FinalAdjustments:
      type: object
      description: >-
        Final adjustment which increases (credits) or decreases (debits) the
        total returned amount to the source wallet.
      nullable: true
      properties:
        fxCredit:
          $ref: '#/components/schemas/FiatMoneyUsd'
        fxDebit:
          $ref: '#/components/schemas/FiatMoneyUsd'
    UnwithdrawalObject:
      type: object
      description: >-
        Return information if the payout is returned by the bank. Only present
        if `errorCode` of payout is `transaction_returned`.
      nullable: true
      properties:
        id:
          $ref: '#/components/schemas/Id'
        payoutId:
          type: string
          description: >-
            Universally unique identifier (UUID v4) of the payout that is
            associated with the return.
          format: uuid
          example: abdb500d-4a59-457c-801f-2d418c8703ac
        amount:
          $ref: '#/components/schemas/FiatMoneyUsd'
        fees:
          $ref: '#/components/schemas/FiatMoneyUsd'
        reason:
          type: string
          description: Reason for the return.
          example: payout_returned
        status:
          type: string
          description: Status of the return.
          enum:
            - pending
            - complete
            - failed
        createDate:
          $ref: '#/components/schemas/UtcTimestamp'
        updateDate:
          $ref: '#/components/schemas/UtcTimestamp'
    UtcTimestamp:
      type: string
      description: ISO-8601 UTC date/time format.
      example: '2020-04-10T02:13:30.000Z'
  headers:
    XRequestId:
      description: >
        Circle-generated universally unique identifier (UUID v4). Useful for
        identifying a specific request when communicating with Circle Support.
      schema:
        $ref: '#/components/schemas/XRequestId'
  responses:
    BadRequest:
      description: The request cannot be processed due to a client error.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 2
            message: API parameter invalid.
    NotAuthorized:
      description: >-
        The request has not been applied because it lacks valid authentication
        credentials.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: 4
            message: Unauthorized.
    InternalServerError:
      description: >-
        The server encountered an unexpected condition that prevented it from
        fulfilling the request.
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: -1
            message: 'Something went wrong. errId: 1f0b0c455e40f753f07b4f0ae6abd4b4'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````