Skip to main content
POST
/
accounts
/
{account_id}
/
transfers
curl --request POST \
  --url https://api.brale.xyz/accounts/{account_id}/transfers \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --data '
{
  "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"
  }
}
'
{
  "id": "2VcUIIsgARwVbEGlIYbhg6fGG57",
  "status": "pending",
  "failure": null,
  "source": {
    "value_type": "USD",
    "transfer_type": "wire",
    "address_id": "2VcUIIsgARwVbEGlIYbhg6fGG57",
    "financial_institution_id": "<string>",
    "wire_memo": "<string>",
    "transaction_id": "0xdd5646ea…",
    "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",
      "trace_number": "021000029876543"
    }
  },
  "destination": {
    "value_type": "USD",
    "transfer_type": "wire",
    "address_id": "2VcUIIsgARwVbEGlIYbhg6fGG57",
    "financial_institution_id": "<string>",
    "wire_memo": "<string>",
    "transaction_id": "0xdd5646ea…",
    "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",
      "trace_number": "021000029876543"
    }
  },
  "amount": {
    "value": "11234.88",
    "currency": "USD"
  },
  "note": null,
  "automation_id": "2VcUIIsgARwVbEGlIYbhg6fGG57",
  "funding_simulated": true,
  "created_at": "2026-01-01T00:00:00Z",
  "updated_at": "2026-01-01T00:00:00Z"
}
Use the playground below to try this endpoint directly, or review the OpenAPI details in the right panel.

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.

Headers

Idempotency-Key
string
required

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

Path Parameters

account_id
string<ksuid>
required

The ID of the account

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

"2VcUIIsgARwVbEGlIYbhg6fGG57"

Body

application/json
amount
Amount · object
required

Monetary value with explicit currency

source
PaymentData · object
required
destination
PaymentData · object
required
brand
object
note
string

Response

201 - */*

Transfer successfully created

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]{26}$
Example:

"2VcUIIsgARwVbEGlIYbhg6fGG57"

status
enum<string>

Lifecycle stage of the transfer

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

"pending"

failure
TransferFailure · object

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

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

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

"2VcUIIsgARwVbEGlIYbhg6fGG57"

funding_simulated
boolean

Set to true when the source funding for this transfer was simulated in a test environment rather than coming from a real payment. Not present for production transfers.

created_at
string<date-time>
Example:

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

updated_at
string<date-time>
Example:

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