> ## 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 transfer

> Create a transfer from an account to a verified blockchain address or another account.




## OpenAPI

````yaml openapi/accounts.yaml post /v1/accounts/transfers
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 and ACH 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: ACH
    description: Manage account bank accounts for ACH 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/transfers:
    post:
      tags:
        - Transfers
      summary: Create an account transfer
      description: >
        Create a transfer from an account to a verified blockchain address or
        another account.
      operationId: createAccountTransfer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountTransferCreationRequest'
      responses:
        '201':
          description: Successfully created a transfer.
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateAccountTransferResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/NotAuthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - bearerAuth: []
components:
  schemas:
    AccountTransferCreationRequest:
      type: object
      required:
        - idempotencyKey
        - destination
        - amount
      properties:
        idempotencyKey:
          $ref: '#/components/schemas/IdempotencyKey'
        destination:
          $ref: '#/components/schemas/TransferRequestDestination'
        amount:
          $ref: '#/components/schemas/Money'
        source:
          description: The source of the transfer. The type must be `account`.
          type: object
          required:
            - id
            - type
          properties:
            id:
              description: Identifier for the source account.
              type: string
              example: '1000565227'
            type:
              type: string
              enum:
                - account
    CreateAccountTransferResponse:
      title: CreateAccountTransferResponse
      properties:
        data:
          $ref: '#/components/schemas/CreatedTransfer'
    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
    TransferRequestDestination:
      description: >-
        The destination of a transfer. Can be a verified blockchain address or
        another account.
      oneOf:
        - $ref: '#/components/schemas/TransferRequestVerifiedBlockchainLocation'
        - $ref: '#/components/schemas/TransferRequestAccountDestination'
    Money:
      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:
          type: string
          description: Currency code for the amount.
          example: USD
          enum:
            - USD
            - EUR
    XRequestId:
      type: string
      format: uuid
      example: 2adba88e-9d63-44bc-b975-9b6ae3440dde
    CreatedTransfer:
      type: object
      description: A transfer of funds returned by the create transfer endpoint.
      required:
        - id
        - source
        - destination
        - amount
        - status
      properties:
        id:
          $ref: '#/components/schemas/Id'
        source:
          $ref: '#/components/schemas/TransferSourceAccountLocation'
        destination:
          $ref: '#/components/schemas/TransferDestinationLocation'
        amount:
          $ref: '#/components/schemas/Money'
        fees:
          description: >-
            An array of fees applied to a transaction. This is only available
            when there is at least one non-zero fee.
          type: array
          items:
            $ref: '#/components/schemas/Fee'
        transactionHash:
          description: >-
            A hash that uniquely identifies the onchain transaction. This is
            only available where either source or destination is of type
            blockchain.
          type: string
          example: '0x4cebf8f90c9243a23c77e4ae20df691469e4b933b295a73376292843968f7a63'
        status:
          description: Status of the transfer.
          type: string
          enum:
            - pending
            - complete
            - failed
        errorCode:
          $ref: '#/components/schemas/TransferErrorCode'
        createDate:
          description: The create date of the transfer.
          type: string
          format: date-time
    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
          description: >-
            Internal error message; suitable for logging but not for end-user
            display.
          example: API parameter invalid.
        externalMessage:
          type: string
          description: >
            End-user-displayable error message. Present when the server has
            generated a customer-facing variant for this error; omitted
            otherwise.
          example: The provided amount exceeds the maximum allowed.
    TransferRequestVerifiedBlockchainLocation:
      type: object
      required:
        - type
        - addressId
      properties:
        type:
          type: string
          enum:
            - verified_blockchain
        addressId:
          type: string
          description: >
            The ID of a recipient address created via [POST
            /v1/addresses/recipient](#operation/createRecipientAddress).
          example: f1f36b85-cafe-484e-a46b-02340bfdb927
          format: uuid
    TransferRequestAccountDestination:
      description: A destination account for an account-to-account transfer.
      type: object
      required:
        - type
        - id
      properties:
        type:
          type: string
          enum:
            - account
        id:
          type: string
          description: The identifier of the destination account.
          example: '1000565227'
    Id:
      type: string
      description: Unique system-generated identifier for the entity.
      format: uuid
      example: b8627ae8-732b-4d25-b947-1df8f4007a29
    TransferSourceAccountLocation:
      description: A source account location.
      type: object
      required:
        - type
        - id
      properties:
        type:
          type: string
          enum:
            - account
        id:
          type: string
          description: The identifier of the source account.
          example: '1000662322'
    TransferDestinationLocation:
      description: A destination of funds.
      oneOf:
        - $ref: '#/components/schemas/TransferDestinationBlockchainLocation'
        - $ref: '#/components/schemas/TransferDestinationAccountLocation'
    Fee:
      type: object
      required:
        - amount
        - currency
        - type
      properties:
        amount:
          type: string
          description: Magnitude of the fee amount, in units of the currency, with a `.`.
          example: '10.00'
        currency:
          type: string
          description: Currency code for the amount.
          enum:
            - USD
        type:
          type: string
          description: Category of the fee.
          enum:
            - network
    TransferErrorCode:
      type: string
      description: >-
        Indicates the failure reason of a transfer. Only present for transfers
        in a `failed` state.
      nullable: true
      enum:
        - transfer_failed
        - transfer_denied
        - blockchain_error
        - insufficient_funds
        - invalid_crypto_address
    TransferDestinationBlockchainLocation:
      description: A destination blockchain address.
      type: object
      required:
        - type
        - chain
        - address
      properties:
        type:
          type: string
          enum:
            - blockchain
        address:
          $ref: '#/components/schemas/Address'
        addressTag:
          $ref: '#/components/schemas/AddressTag'
        chain:
          $ref: '#/components/schemas/Chain'
    TransferDestinationAccountLocation:
      description: A destination account location.
      type: object
      required:
        - type
        - id
      properties:
        type:
          type: string
          enum:
            - account
        id:
          type: string
          description: The identifier of the destination account.
          example: '1000662322'
        address:
          type: string
          description: >
            The blockchain address associated with the destination account.
            Present when the transfer originates from a blockchain source (e.g.
            a crypto deposit).
          example: '0xecf270635e22f87b9d9ed501eca86e74caf59623'
        addressTag:
          $ref: '#/components/schemas/AddressTag'
    Address:
      type: string
      description: >
        An alphanumeric string representing a blockchain address. Formatting
        varies by blockchain.

        Be sure to preserve the exact formatting and capitalization of the
        address.
      example: '0x8381470ED67C3802402dbbFa0058E8871F017A6F'
    AddressTag:
      type: string
      description: >-
        The secondary identifier for a blockchain address. An example of this is
        the memo field on the Stellar network, which can be text, ID, or hash
        format.
      nullable: true
      example: '123456789'
    Chain:
      type: string
      description: A blockchain that a given currency is available on.
      enum:
        - ALGO
        - APTOS
        - ARB
        - AVAX
        - BASE
        - BTC
        - CELO
        - CODEX
        - ETH
        - HBAR
        - HYPEREVM
        - INK
        - LINEA
        - NEAR
        - NOBLE
        - OP
        - PLUME
        - PAH
        - POLY
        - SEI
        - SOL
        - SONIC
        - SUI
        - UNI
        - WORLDCHAIN
        - XDC
        - XLM
        - XRP
        - ZKS
        - ZKSYNC
  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

````