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

# Retrieve a single transfer

> Returns details for a specific transfer.

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

## `source.payment_details`

Transfer responses may include an optional `source.payment_details` object when Brale has underlying payment metadata to expose for the source leg of a transfer. This is primarily relevant for inbound fiat-funded transfers (wire, ACH).

Wire transfers typically include the fuller set of fields. ACH transfers may include only a subset — fields may be `null` or omitted depending on available rail metadata.

| Field                        | Type              | Description                                                                                                           |
| :--------------------------- | :---------------- | :-------------------------------------------------------------------------------------------------------------------- |
| `received_at`                | string (ISO 8601) | When the underlying payment was received or posted                                                                    |
| `sender_name`                | string \| null    | Name of the originating sender, when available                                                                        |
| `sender_bank_name`           | string \| null    | Originating bank name, when available                                                                                 |
| `sender_bank_routing_number` | string \| null    | Originating bank routing number, when available                                                                       |
| `payment_reference`          | string \| null    | Sender-provided payment reference or memo, when available                                                             |
| `imad`                       | string \| null    | Wire IMAD / tracking identifier, when available                                                                       |
| `trace_number`               | string \| null    | ACH trace identifier for the underlying payment, when available. Primarily relevant for inbound ACH-funded transfers. |

### Example: wire-funded transfer

```json title="Response" theme={null}
{
  "id": "3C0QcbwVywOGyU2HBSenljm5dhU",
  "status": "complete",
  "failure": null,
  "source": {
    "transfer_type": "wire",
    "financial_institution_id": "3AjRnbvj9Mq6crkviJv08d0KLB2",
    "value_type": "USD",
    "payment_details": {
      "received_at": "2026-04-07T00:01:24.514000Z",
      "sender_name": "Originator Name",
      "sender_bank_name": "JPMorgan Chase Bank",
      "sender_bank_routing_number": "000000123",
      "payment_reference": "Simulated Wire",
      "imad": "20260406XOIZJDPP953495"
    }
  },
  "destination": {
    "transaction_id": "0x41c66f1d059dad7a55a854e157a1b5b938780c77ba5296e434a02dfb1727fe5e",
    "transfer_type": "base",
    "address_id": "3ARaM0I93ObWOIFDIztsTx4TAsp",
    "value_type": "ARB"
  },
  "updated_at": "2026-04-07T00:01:44.824834Z",
  "created_at": "2026-04-07T00:01:27.756775Z",
  "note": null,
  "amount": {
    "value": "102.0",
    "currency": "USD"
  },
  "automation_id": "3AjRnDClEzwuCKlRioG3OXMS4pH"
}
```

### Example: ACH-funded transfer (`payment_details` excerpt)

```json title="Response (source excerpt)" theme={null}
{
  "source": {
    "transfer_type": "ach_debit",
    "value_type": "USD",
    "payment_details": {
      "received_at": "2026-04-07T02:10:06.921000Z",
      "sender_name": "Test ACH Sender",
      "sender_bank_name": null,
      "sender_bank_routing_number": "721160232",
      "payment_reference": null,
      "imad": null,
      "trace_number": "021000029876543"
    }
  }
}
```

See [Transfers — `source.payment_details`](/key-concepts/transfers#sourcepayment_details) for full details.

## `destination.payment_details`

Transfer responses may include an optional `destination.payment_details` object when Brale has underlying payment metadata to expose for the destination leg of a transfer. This is primarily relevant for outbound wire transfers (stablecoin-to-fiat offramps and wire payouts).

The object is optional and may be absent immediately after a transfer is created. For outbound wires, the IMAD is assigned by the sending bank and may not be available until after the wire has been submitted; Brale populates this field later when the underlying bank metadata arrives.

| Field  | Type           | Description                                                           |
| :----- | :------------- | :-------------------------------------------------------------------- |
| `imad` | string \| null | Wire IMAD / tracking identifier for the outbound wire, when available |

<Note>
  `destination.payment_details` is a response-only field. It is not accepted as input when creating a transfer. Do not confuse it with `destination.wire_memo`, which remains a request field for outbound wire transfers.
</Note>

### Example: outbound wire transfer

```json title="Response" theme={null}
{
  "id": "3D1RcbwVywOGyU2HBSenljm5dhV",
  "status": "complete",
  "source": {
    "address_id": "2VcUIonJeVQzFoBuC7LdFT0dRe4",
    "value_type": "SBC",
    "transfer_type": "solana",
    "transaction_id": "5K8…"
  },
  "destination": {
    "address_id": "34yGFQf7tP1HJCPAWNGaN4rh4nX",
    "value_type": "USD",
    "transfer_type": "wire",
    "wire_memo": "Invoice 1048",
    "payment_details": {
      "imad": "20260406XOIZJDPP953495"
    }
  },
  "updated_at": "2026-04-07T00:05:12.102000Z",
  "created_at": "2026-04-07T00:01:27.756775Z",
  "amount": {
    "value": "100.00",
    "currency": "USD"
  },
  "note": null
}
```

See [Transfers — `destination.payment_details`](/key-concepts/transfers#destinationpayment_details) for full details.

## `transaction_id`

The `transaction_id` field appears on the `source` and `destination` objects in the response. It contains the on-chain transaction hash or off-chain payment reference once the leg has been submitted to the network.

You can also use `transaction_id` as a query-parameter filter on the [List transfers](/api-reference/brale/list-transfers) endpoint to find transfers by their on-chain hash without needing to know the transfer `id` first.


## OpenAPI

````yaml GET /accounts/{account_id}/transfers/{id}
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/{id}:
    get:
      tags:
        - Transfers
      summary: Retrieve a single transfer
      description: Returns details for a specific transfer.
      operationId: getTransfer
      parameters:
        - name: account_id
          in: path
          required: true
          description: The ID of the account
          schema:
            $ref: '#/components/schemas/Ksuid'
        - name: id
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/Ksuid'
          description: The ID of the transfer (KSUID)
      responses:
        '200':
          description: A single transfer object
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Transfer'
components:
  schemas:
    Ksuid:
      title: Kusid
      type: string
      format: ksuid
      pattern: ^[a-zA-Z0-9]{26}$
      example: 2VcUIIsgARwVbEGlIYbhg6fGG57
    Transfer:
      title: Transfer
      type: object
      properties:
        status:
          type: string
          description: Lifecycle stage of the transfer
          enum:
            - pending
            - processing
            - complete
            - canceled
            - failed
          example: pending
        amount:
          $ref: '#/components/schemas/Amount'
        created_at:
          type: string
          format: date-time
          example: '2025-02-05T19:39:14.316Z'
        updated_at:
          type: string
          format: date-time
          example: '2025-02-05T19:39:14.316Z'
        source:
          $ref: '#/components/schemas/TransferEndpoint'
        destination:
          $ref: '#/components/schemas/TransferEndpoint'
    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
    TransferEndpoint:
      title: TransferEndpoint
      type: object
      properties:
        value_type:
          type: string
          example: USD
        transfer_type:
          type: string
          example: wire
        address_id:
          $ref: '#/components/schemas/Ksuid'
        transaction_id:
          type: string
          description: >-
            On-chain transaction hash or off-chain payment reference. Present in
            responses once the leg has been submitted to the network. Not
            included in create requests.
          example: 0xdd5646ea…
      required:
        - address_id
        - value_type
        - transfer_type
  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.

````