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

> A transfer can be made from an existing business account to a blockchain location.

**cirBTC transfers:** When `amount.currency=CIRBTC`, the recipient's `chain` (looked up from `destination.addressId`) determines how the transfer is processed:
- Recipients on `chain=ETH` or `chain=ARC` receive an onchain cirBTC transfer.
- Recipients on `chain=BTC` trigger redemption to native Bitcoin: the cirBTC is burned and an equivalent amount of native Bitcoin (1:1) is released to the Bitcoin address.




## OpenAPI

````yaml openapi/account.yaml post /v1/businessAccount/transfers
openapi: 3.0.2
info:
  version: ${version}
  title: Core Functionality
  description: >
    All of Circle's APIs share a common set of core functionality that lets you
    manage your Circle Account in a programmatic way.


    With a Circle Account your business can deposit traditional money from 80+
    countries and seamlessly convert them into "digital currency dollars": USDC.
    You can then use USDC for everyday payments and treasury flows.
servers:
  - url: https://api-sandbox.circle.com
  - url: https://api.circle.com
security: []
tags:
  - name: Balances
    description: Get information on settled and unsettled balances.
  - name: Payouts
    description: Create and get information on 1st party payouts.
  - name: Wires
    description: >-
      Create, get instructions, and get information on 1st party bank accounts
      for wire transfers.
  - name: CUBIX
    description: Create and get information on CUBIX accounts.
  - name: PIX
    description: Create and get information on PIX accounts.
  - name: Transfers
    description: Create and get information on 1st party transfers.
  - name: Addresses
    description: Generate and get information on blockchain addresses.
  - name: Deposits
    description: Get information on 1st party deposits.
  - name: Payments
    description: Create, cancel, refund, and get updates on card payments.
  - name: Settlement Bank Routing
    description: View and manage settlement bank routing preferences for fiat accounts.
  - name: Reporting
    description: >-
      Retrieve transaction and balance reports, including ISO 20022 (CAMT.053)
      statements and managed-payment reports.
paths:
  /v1/businessAccount/transfers:
    post:
      tags:
        - Transfers
      summary: Create a transfer
      description: >
        A transfer can be made from an existing business account to a blockchain
        location.


        **cirBTC transfers:** When `amount.currency=CIRBTC`, the recipient's
        `chain` (looked up from `destination.addressId`) determines how the
        transfer is processed:

        - Recipients on `chain=ETH` or `chain=ARC` receive an onchain cirBTC
        transfer.

        - Recipients on `chain=BTC` trigger redemption to native Bitcoin: the
        cirBTC is burned and an equivalent amount of native Bitcoin (1:1) is
        released to the Bitcoin address.
      operationId: createBusinessTransfer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BusinessTransferCreationRequest'
      responses:
        '201':
          headers:
            X-Request-Id:
              $ref: '#/components/headers/XRequestId'
          description: Successfully created a transfer.
          content:
            application/json:
              schema:
                title: CreateBusinessTransferResponse
                properties:
                  data:
                    $ref: '#/components/schemas/Transfer'
              examples:
                response:
                  value:
                    data:
                      id: b8627ae8-732b-4d25-b947-1df8f4007a29
                      source:
                        type: wallet
                        id: '12345'
                        identities:
                          - type: individual
                            name: Satoshi Nakamoto
                            addresses:
                              - line1: 100 Money Street
                                line2: Suite 1
                                city: Boston
                                district: MA
                                postalCode: '01234'
                                country: US
                        useMainWalletFunding: false
                      destination:
                        type: blockchain
                        address: '0x8381470ED67C3802402dbbFa0058E8871F017A6F'
                        addressTag: '123456789'
                        chain: ALGO
                      amount:
                        amount: '3.14'
                        currency: USD
                      fees:
                        - amount: '10.00'
                          currency: USD
                          type: network
                      transactionHash: >-
                        0x4cebf8f90c9243a23c77e4ae20df691469e4b933b295a73376292843968f7a63
                      status: pending
                      errorCode: transfer_failed
                      createDate: '2020-04-10T02:13:30.000Z'
                      customerExternalRef: INV-2024-001234
      security:
        - bearerAuth: []
components:
  schemas:
    BusinessTransferCreationRequest:
      type: object
      required:
        - idempotencyKey
        - destination
        - amount
      properties:
        idempotencyKey:
          $ref: '#/components/schemas/IdempotencyKey'
        destination:
          oneOf:
            - $ref: '#/components/schemas/TransferRequestVerifiedBlockchainLocation'
            - $ref: '#/components/schemas/TransferRequestCrossEntityLocation'
        amount:
          $ref: '#/components/schemas/Money'
        source:
          description: >
            The wallet to be used as the source of the transfer. If not
            provided, the transfer will come from the main wallet of the
            account.


            You can get wallet IDs associated with your account using the [Core
            API for
            Institutions](/api-reference/circle-mint/institutional/get-all-external-entities).
          type: object
          required:
            - id
            - type
          properties:
            id:
              $ref: '#/components/schemas/InstitutionalWalletId'
            type:
              type: string
              enum:
                - wallet
        customerExternalRef:
          $ref: '#/components/schemas/CustomerExternalRef'
          description: >-
            An optional customer-supplied reference for reconciliation purposes.
            Only supported for cross-entity transfers.
    Transfer:
      type: object
      description: A transfer of funds.
      required:
        - id
        - source
        - destination
        - amount
        - status
      properties:
        id:
          $ref: '#/components/schemas/Id'
        source:
          $ref: '#/components/schemas/TransferSourceLocation'
        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 are of type
            blockchain.
          type: string
          example: '0x4cebf8f90c9243a23c77e4ae20df691469e4b933b295a73376292843968f7a63'
        status:
          description: >-
            Status of the transfer. Status `pending` indicates that the transfer
            is in the process of running; `complete` indicates it finished
            successfully; `failed` indicates it failed. Circle Mint Singapore
            customers may have transfers in the `pending` status if the
            recipient addresses are not verified.
          type: string
          enum:
            - pending
            - complete
            - failed
        errorCode:
          $ref: '#/components/schemas/TransferErrorCode'
        createDate:
          description: The create date of the transfer.
          type: string
          format: date-time
        customerExternalRef:
          $ref: '#/components/schemas/CustomerExternalRef'
          description: A customer-supplied reference during transfer creation.
    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
    TransferRequestVerifiedBlockchainLocation:
      type: object
      required:
        - type
        - addressId
      properties:
        type:
          type: string
          enum:
            - verified_blockchain
        addressId:
          type: string
          description: The ID of the verified blockchain recipient address.
          example: f1f36b85-cafe-484e-a46b-02340bfdb927
          format: uuid
    TransferRequestCrossEntityLocation:
      type: object
      description: A destination for cross-entity transfers to a sibling CMA.
      required:
        - type
        - entityId
      properties:
        type:
          type: string
          enum:
            - cross_entity_master_wallet
        entityId:
          type: string
          format: uuid
          description: The entity ID of the sibling CMA to transfer to.
          example: f1f36b85-cafe-484e-a46b-02340bfdb927
    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.
          enum:
            - USD
            - EUR
            - BTC
            - ETH
            - CIRBTC
    InstitutionalWalletId:
      type: string
      description: >-
        Unique system-generated identifier for the wallet of the institutional
        entity.
      example: '212000'
    CustomerExternalRef:
      type: string
      description: A customer-supplied reference for reconciliation purposes.
      pattern: ^[A-Za-z0-9-]{1,21}$
      example: INV-2024-001234
    Id:
      type: string
      description: Unique system generated identifier for the entity.
      format: uuid
      example: b8627ae8-732b-4d25-b947-1df8f4007a29
    TransferSourceLocation:
      description: A source of funds.
      oneOf:
        - $ref: '#/components/schemas/TransferSourceWalletLocation'
        - $ref: '#/components/schemas/TransferSourceBlockchainLocation'
    TransferDestinationLocation:
      description: A destination of funds.
      oneOf:
        - $ref: '#/components/schemas/TransferDestinationBlockchainLocation'
        - $ref: '#/components/schemas/TransferDestinationWalletLocation'
    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. Possible values are `insufficient_funds`,
        `blockchain_error` and `transfer_denied` and `transfer_failed`
      nullable: true
      enum:
        - transfer_failed
        - transfer_denied
        - blockchain_error
        - insufficient_funds
    TransferSourceWalletLocation:
      description: A source wallet location.
      type: object
      required:
        - type
        - id
      properties:
        type:
          type: string
          enum:
            - wallet
        id:
          type: string
          description: The id of the wallet.
          example: '12345'
        identities:
          type: array
          items:
            $ref: '#/components/schemas/Identity'
        useMainWalletFunding:
          type: boolean
          description: >
            When true, if the designated source wallet lacks sufficient funds
            for the payout, funds are transferred from the master wallet to the
            source wallet before the payout executes.

            For Managed Payments customers only. Default is true.
    TransferSourceBlockchainLocation:
      description: A source blockchain address.
      type: object
      required:
        - type
        - chain
      properties:
        type:
          type: string
          enum:
            - blockchain
        chain:
          $ref: '#/components/schemas/Chain'
        identities:
          type: array
          items:
            $ref: '#/components/schemas/Identity'
    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'
    TransferDestinationWalletLocation:
      description: A destination wallet location.
      type: object
      required:
        - type
        - id
      properties:
        type:
          type: string
          enum:
            - wallet
        id:
          type: string
          description: The id of the wallet.
          example: '12345'
        address:
          type: string
          description: >-
            An alphanumeric string which indicates the wallet address used to
            receive the transfer. Will only be set when the transfer source is a
            blockchain address.
          example: '0x8381470ED67C3802402dbbFa0058E8871F017A6F'
        addressTag:
          $ref: '#/components/schemas/AddressTag'
    Identity:
      type: object
      description: |
        The identity of the originator. Identities are required when:
          * `destination.type: "blockchain"`
          * `destination.chain: "ETH"`
          * `amount.amount` >= $3,000 in value
      required:
        - type
        - name
        - addresses
      properties:
        type:
          type: string
          description: >
            The type of identity for the originator.

            * `individual` - A uniquely distinguishable individual.

            * `business` - Any entity other than a natural person that can
            establish a permanent customer relationship with an affected entity
            or otherwise own property. This can include companies, foundations,
            anstalt, partnerships, associations and other relevantly similar
            entities.
          enum:
            - individual
            - business
        name:
          type: string
          description: Full name of the identity.
          example: Satoshi Nakamoto
          maxLength: 1024
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/IdentityAddress'
    Chain:
      type: string
      description: >
        A blockchain that a given currency is available on.


        **Note:** Arc (`ARC`) is only available in the sandbox environment
        (`api-sandbox.circle.com`).
      enum:
        - ALGO
        - APTOS
        - ARB
        - ARC
        - 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
    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.  

        **Important:** For Ripple (XRP) addresses, only the classic address
        format is supported (for example,
        `rPEPPER7kfTD9w2To4CQk6UCfuHM9c6GDY`).  

        The `x-address` format is NOT supported currently (for example,
        `XV5sbjUmgPpvXv4ixFWZ5ptAYZ6PD2q1qM6owqNbug8W6KV`).
      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'
    IdentityAddress:
      type: object
      required:
        - line1
        - city
        - district
        - postalCode
        - country
      properties:
        line1:
          type: string
          description: Line one of the street address.
          maxLength: 1024
          example: 100 Money Street
        line2:
          type: string
          description: Line two of the street address.
          maxLength: 1024
          example: Suite 1
        city:
          type: string
          description: City portion of the address.
          maxLength: 1024
          example: Boston
        district:
          description: >-
            State / County / Province / Region portion of the address. If the
            country is US or Canada, then district is required and should use
            the two-letter code for the subdivision.
          type: string
          maxLength: 16
          example: MA
        postalCode:
          type: string
          description: Postal / ZIP code of the address.
          maxLength: 16
          example: '01234'
        country:
          type: string
          description: >-
            Country portion of the address. Formatted as a two-letter country
            code specified in ISO 3166-1 alpha-2.
          maxLength: 2
          example: US
  headers:
    XRequestId:
      description: >-
        Universally unique identifier (UUID v4) for the request. Helpful for
        identifying a request when communicating with Circle support.
      schema:
        type: string
        format: uuid
        example: 2adba88e-9d63-44bc-b975-9b6ae3440dde
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````