Skip to main content
GET
Retrieve a single 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.

Example: wire-funded transfer

Response

Example: ACH-funded transfer (payment_details excerpt)

Response (source excerpt)
See Transfers — source.payment_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 and ACH transfers (stablecoin-to-fiat offramps and 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. For outbound ACH payouts, the trace number is assigned when the payout posts. Brale populates these fields later when the underlying bank metadata arrives.
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.

Example: outbound wire transfer

Response

Example: outbound ACH transfer

Response (destination excerpt)
See Transfers — destination.payment_details for full details.

FedNow transfers

FedNow legs use transfer_type: "fednow_credit". Wire-only fields such as payment_details.imad and wire_memo do not apply to FedNow, and ACH fields such as trace_number are not expected. Read only the payment_details fields present on the response.

Example: outbound FedNow payout

Response
For an inbound FedNow deposit example, see Receive FedNow deposits.

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 endpoint to find transfers by their on-chain hash without needing to know the transfer id first.

failure

Every transfer response includes a failure field.
  • failure is usually null.
  • failure is populated when status is failed and Brale has structured failure details. It is especially relevant for ACH returns, outbound domestic wire returns, and other rail/provider failures.
  • Clients should not assume failure is always present for every failed transfer. Check for null before reading nested fields.
  • Rail-specific objects are only set for their rail. Do not require ach_return fields for a wire return, or wire_return fields for an ACH return.
wire_return has no category field. The administrative / unauthorized / general taxonomy applies to ACH returns only.

Example: failed ACH transfer

Response (failure excerpt)

Example: returned outbound wire

When Brale recognizes a bank return for an outbound domestic wire, it updates the original transfer to status: "failed". This can happen while the transfer is processing or after it is complete. Brale does not use a separate returned status. See Transfer status lifecycle. The following excerpt is illustrative. It is not an observed production payload.
Response (failure excerpt, illustrative)
If the provider does not supply a return code, the failure is still classified as type: "wire_return", with wire_return.code set to WIRE_RETURN. wire_return.reason may be null. Not every wire rejection produces a wire_return failure. Use failure.type to identify a recognized wire return rather than inferring it from the rail alone.

Authorizations

Authorization
string
header
required

Use the Bearer token returned from the Auth endpoint via OAuth2 client_credentials flow. Include the token in the "Authorization: Bearer " header.

Path Parameters

account_id
string<ksuid>
required

The ID of the account

Pattern: ^[a-zA-Z0-9]{27}$
Example:

"2VcUIIsgARwVbEGlIYbhg6fGG57"

id
string<ksuid>
required

The ID of the transfer (KSUID)

Pattern: ^[a-zA-Z0-9]{27}$
Example:

"2VcUIIsgARwVbEGlIYbhg6fGG57"

Response

200 - */*

A single transfer object

A money movement between a source and a destination. Returned by the create, get, and list transfer endpoints. The same shape is used everywhere a Transfer is exposed to API consumers.

id
string<ksuid>
Pattern: ^[a-zA-Z0-9]{27}$
Example:

"2VcUIIsgARwVbEGlIYbhg6fGG57"

status
enum<string>

Lifecycle stage of the transfer

Available options:
pending,
processing,
complete,
canceled,
failed,
refunding,
refunded
Example:

"pending"

failure
TransferFailure · object | null

Structured failure details for a failed transfer. Usually null. Populated when status is failed and Brale has structured failure details for the transfer — most commonly for ACH returns, outbound wire returns, and other rail/provider failures. Clients should not assume failure is always present for every failed transfer; check for null before reading nested fields.

Example:

null

source
TransferEndpoint · object

One side (source or destination) of a Transfer. The same shape is used in create requests and in responses. Response-only fields like transaction_id and payment_details are populated by Brale as the underlying leg settles.

destination
TransferEndpoint · object

One side (source or destination) of a Transfer. The same shape is used in create requests and in responses. Response-only fields like transaction_id and payment_details are populated by Brale as the underlying leg settles.

amount
Amount · object

Monetary value with explicit currency

note
string | null

Optional free-form note attached to the transfer.

Example:

null

automation_id
string<ksuid> | null

ID of the Automation that created this transfer, when applicable. Omitted for transfers created directly via the API.

Pattern: ^[a-zA-Z0-9]{27}$
Example:

"2VcUIIsgARwVbEGlIYbhg6fGG57"

funding_simulated
boolean

Optional. When returned with a value of true, the source funding for this transfer was simulated in testnet rather than coming from a real payment. Not every simulated transfer is guaranteed to include this field. Not present for production-funded transfers.

created_at
string<date-time>
Example:

"2026-01-01T00:00:00Z"

updated_at
string<date-time>
Example:

"2026-01-01T00:00:00Z"