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

# Create a new transfer

> Creates a new transfer using the specified source and destination details.

Use the playground below to try this endpoint directly, or review the OpenAPI details in the right panel.


## OpenAPI

````yaml POST /accounts/{account_id}/transfers
openapi: 3.0.3
info:
  title: Brale Issuance and Orchestration API
  version: 2.3.1
  description: >
    Brale supports stablecoin issuance and orchestration, enabling businesses
    and

    ecosystems to create their own stablecoins and convert between fiat and
    stablecoins

    seamlessly. From stablecoin onramps, offramps, and swaps to custody and
    payouts, the

    Brale API makes it easy to build stablecoin-enabled products.


    NOTE: All resource IDs (including account_id, address_id,
    financial_institution_id,

    and automation_id) are KSUIDs—26-character alphanumeric strings that are
    sortable

    by time. Examples showing UUIDs are incorrect.



    **What's new in 2.3.1**

    - Unified **Addresses** model for on-chain and off-chain endpoints
      - `Transfers` now accepts **address_id only** (no financial_institution_id)
      - Optional `brand` object to control bank statement presentation (`branding` still accepted as legacy alias)
    - Added off-chain rails: `ach_credit`, `same_day_ach_credit`, `ach_debit`,
    `same_day_ach_debit`, `rtp-credit`

    - Plaid endpoints moved to `/accounts/{account_id}/plaid/*`

    - `Financial Institutions` marked **deprecated** (migration path to
    **Addresses**)

    - Create Account now uses `CreateManagedAccountRequest` with
    `beneficial_owners`, `business_controller`, and `EndUserTosAttestation`.

    - Transfers now accept `brand` (replaces `branding`, still aliased in docs).

    - Plaid endpoints updated to return `address_id` and accept
    `transfer_types`.

    - Off-chain Address creation uses `CreateExternalAddressRequest` oneOf with
    bank + blockchain variants.

    - FI endpoints kept but marked deprecated; use Addresses instead.

    - `rtp_credit` is the canonical RTP rail name.
servers:
  - url: https://api.brale.xyz
    description: Production server
security:
  - BearerAuth: []
tags:
  - name: Accounts
    description: Endpoints related to managing customer accounts (KYB, details, etc.)
  - name: Transfers
    description: >-
      Endpoints for creating and retrieving transfers (fiat to stablecoins,
      etc.)
  - name: Addresses
    description: >-
      On-chain and off-chain endpoints (custodial or external) represented by a
      single Addresses resource
  - name: Financial Institutions
    description: Legacy (deprecated) bank endpoints. Use Addresses instead.
  - name: Automations
    description: Automated deposit addresses or onramps
  - name: Plaid
    description: Bank linking and ACH debit via Plaid.
  - name: Orders
    description: Legacy tag used for transfers in older specs.
paths:
  /accounts/{account_id}/transfers:
    post:
      tags:
        - Transfers
        - Orders
      summary: Create a new transfer
      description: >-
        Creates a new transfer using the specified source and destination
        details.
      operationId: createTransfer
      parameters:
        - name: account_id
          in: path
          required: true
          description: The ID of the account
          schema:
            $ref: '#/components/schemas/Ksuid'
        - in: header
          name: Idempotency-Key
          required: true
          schema:
            type: string
          example: idemp-123e4567-e89b-12d3-a456-426614174000
          description: >
            A unique string used to prevent duplicate operations. Each POST
            request must use a new idempotency key. Use a UUIDv4 string.
            Example: `idemp-123e4567-e89b-12d3-a456-426614174000`
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTransfer'
            examples:
              ach_debit_to_solana:
                summary: Onramp via ACH debit → Mint on Solana
                value:
                  amount:
                    value: '2500'
                    currency: USD
                  source:
                    address_id: addr_ach_debit
                    value_type: USD
                    transfer_type: ach_debit
                  destination:
                    address_id: addr_solana_internal
                    value_type: SBC
                    transfer_type: solana
              wire_offramp_with_brand:
                summary: Burn on Polygon → Wire out (brand override)
                value:
                  amount:
                    value: '10000'
                    currency: USD
                  source:
                    address_id: addr_polygon_internal
                    value_type: SBC
                    transfer_type: polygon
                  destination:
                    address_id: addr_wire_external
                    value_type: USD
                    transfer_type: wire
                    wire_memo: Invoice 1048
                  brand:
                    account_id: acct_company_beta
              rtp_payout:
                summary: Stablecoin payout via RTP
                value:
                  amount:
                    value: '150'
                    currency: USD
                  source:
                    address_id: addr_treasury_sbc
                    value_type: SBC
                    transfer_type: ethereum
                  destination:
                    address_id: addr_rtp_external
                    value_type: USD
                    transfer_type: rtp
                  brand:
                    account_id: acct_company_beta
      responses:
        '201':
          description: Transfer successfully created
          content:
            '*/*':
              schema:
                type: object
                properties:
                  id:
                    $ref: '#/components/schemas/Ksuid'
components:
  schemas:
    Ksuid:
      title: Kusid
      type: string
      format: ksuid
      pattern: ^[a-zA-Z0-9]{26}$
      example: 2VcUIIsgARwVbEGlIYbhg6fGG57
    CreateTransfer:
      type: object
      additionalProperties: false
      required:
        - amount
        - source
        - destination
      properties:
        amount:
          $ref: '#/components/schemas/Amount'
        source:
          $ref: '#/components/schemas/PaymentData'
        destination:
          $ref: '#/components/schemas/PaymentData'
        brand:
          $ref: '#/components/schemas/BrandData'
        note:
          type: string
      title: CreateTransfer
    Amount:
      title: Amount
      type: object
      description: Monetary value with explicit currency
      additionalProperties: false
      properties:
        value:
          type: string
          example: '11234.88'
        currency:
          type: string
          example: USD
      required:
        - value
        - currency
    PaymentData:
      type: object
      additionalProperties: false
      title: PaymentData
      properties:
        address_id:
          type: string
          description: Preferred Address identifier
        financial_institution_id:
          type: string
          deprecated: true
          description: Legacy—use address_id
        transfer_type:
          type: string
        value_type:
          type: string
        wire_memo:
          type: string
          description: >-
            Optional memo or payment reference text sent with outbound wire
            transfers. Only applies when transfer_type is wire.
      required:
        - transfer_type
        - value_type
    BrandData:
      type: object
      nullable: true
      additionalProperties: false
      required:
        - account_id
      properties:
        account_id:
          type: string
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >
        Use the Bearer token returned from the Auth endpoint via OAuth2
        client_credentials flow. Include the token in the "Authorization: Bearer
        <token>" header.

````