Transfers
Transfers enable the movement of funds between fiat and stablecoins, stablecoin-to-stablecoin conversions, and stablecoin-to-fiat transactions.
Each transfer requires both a source and a destination, which can be:
- Fiat sources (e.g., a bank account for ACH or wire)
- On-chain wallet addresses
Each source and destination includes:
value_type: The currency being transferred (USD, USDC, USDT, MXN, etc.)transfer_type: The payment rail used (Wire, ACH, Polygon, Solana, SPEI, etc.)
Required Fields
| Field | Where | Type | Description |
|---|---|---|---|
account_id | Path | string | Account whose funds are being moved |
amount | Body | object | { "value": "10", "currency": "USD" } |
source | Body | object | Origin of funds (fiat rail or on-chain address) |
value_type | In source / destination | string | Currency/token (e.g., USD, USDC, SBC) |
transfer_type | In source / destination | string | Payment rail or chain (e.g., wire, ach, polygon, solana) |
address_id | In source / destination | string | Wallet that is sending and/or receiving stablecoins |
financial_institution_id | In source / destination | string | Bank account that sends/receives fiat |
Idempotency-Key | Header | string | UUID that guarantees exactly-once execution |
Transfer Scenarios: understanding value_type and transfer_type
| Flow | Source | Destination | Description |
|---|---|---|---|
| Onramp (Fiat → Stablecoin) | USD / wire | SBC / base | Mint SBC on base funded by wire deposit |
| Offramp (Stablecoin → Fiat) | SBC / solana | USD / ACH | Redeem SBC on Solana to USD via ACH |
| Swap (Stablecoin ↔ Stablecoin) | USDC / solana | SBC / solana | 1:1 swap from USDC to SBC with no slippage |
| On-chain Payout | USDC / polygon | USDC / polygon (external address) | Pay a recipient wallet |
Every request is scoped to an account, so the path always starts with:
POSThttps://api.brale.xyz/accounts/{account_id}/transfers // The ID of your or your customer's account
USD to Stablecoin (Wire Transfer)
Accept a USD deposit to mint stablecoins.
POSThttps://api.brale.xyz/accounts/account_id/transfers
curl --request POST \
--url "https://api.brale.xyz/accounts/${ACCOUNT_ID}/transfers" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${AUTH_TOKEN}" \
--header "Idempotency-Key: $(uuidgen)" \ # generate a fresh key for each transfer
--data '{
"amount": { "value": "10", "currency": "USD" },
"source": { "value_type": "usd", "transfer_type": "wire" },
"destination": {
"address_id": "'"${ADDRESS_ID}"'",
"value_type": "sbc",
"transfer_type": "base"
}
}'
When initiating a fiat to stablecoin transfer via wire, we will return a set of wire_instructions so you can provide them to your customer.
{
"id": "2xNL6PAF0cbcQHyjMQJ2RKRfbD9",
"status": "pending",
"source": {
"value_type": "USD",
"transfer_type": "wire"
},
"destination": {
"address_id": "2VcUIonJeVQzFoBuC7LdFT0dRe4",
"value_type": "SBC",
"transfer_type": "base"
},
"updated_at": "2025-05-20T20:36:48.147281Z",
"created_at": "2025-05-20T20:36:48.147281Z",
"amount": {
"value": "10",
"currency": "USD"
},
"note": null,
"wire_instructions": {
// Brale Bank instructions
}
}
Stablecoin to USD (Wire Offramp or Payout)
Offramp your stablecoin to USD via wire transfer.
POSThttps://api.brale.xyz/accounts/account_id/transfers
{
"amount": {
"value": "1",
"currency": "USD"
},
"source": {
"address_id": "2VcUIonJeVQzFoBuC7LdFT0dRe4",
"value_type": "SBC",
"transfer_type": "Polygon"
},
"destination": {
"financial_institution_id": "bank_12345",
"value_type": "USD",
"transfer_type": "wire"
}
}
Stablecoin Swaps
Swap USDC to your own stablecoin (YSBC). All stablecoin swaps are 1:1 with no slippage.
POSThttps://api.brale.xyz/accounts/account_id/transfers
{
"amount": {
"value": "100",
"currency": "USD"
},
"source": {
"address_id": "2VcUIonJeVQzFoBuC7LdFT0dRe4",
"value_type": "USDC",
"transfer_type": "Solana"
},
"destination": {
"address_id": "2VcUIonJeVQzFoBuC7LdFT0dRe4",
"value_type": "YSBC",
"transfer_type": "Solana"
}
}
Stablecoin Payout
Process stablecoin payouts to one or many external addresses (EOAs).
POSThttps://api.brale.xyz/accounts/account_id/transfers
{
"amount": {
"value": "500",
"currency": "USD"
},
"source": {
"address_id": "2VcUIonJeVQzFoBuC7LdFT0dRe4",
"value_type": "SBC",
"transfer_type": "Solana"
},
"destination": {
"address_id": "2xNL6PAF0cbcQHyjMQJ2RKRfbD9",
"value_type": "SBC",
"transfer_type": "Solana"
}
}
Retrieving Transfers
GEThttps://api.brale.xyz/accounts/account_id/transfers/transfer_id
{
"id": "transfer_123",
"status": "pending",
"amount": {
"value": "1",
"currency": "USD"
},
"created_at": "2025-02-05T19:39:14.316Z",
"updated_at": "2025-02-05T19:39:14.316Z",
"source": {
"transfer_type": "wire",
"value_type": "usd"
},
"destination": {
"transfer_type": "polygon",
"value_type": "ysbc",
"address_id": "d7bd28e4-93e6-4313-880c-ab9178eacd3b"
},
"wire_instructions": {
// ...Brale bank details
}
}
Retrieving Transfers & Pagination
List Call
GEThttps://api.brale.xyz/accounts/account_id/transfers/transfer_id?page[size]=50
Returns the 50 most recent transfers.
Paging Forward
GEThttps://api.brale.xyz/accounts/account_id/transfers/transfer_id?page[next]=g3QAAAABdw...
Use the pagination.next token from the previous response.
Paging Backward
GEThttps://api.brale.xyz/accounts/account_id/transfers/transfer_id?page[prev]=g3QAAAABdw...
Only one of page[next] or page[prev] may be present.
Transfer Statuses
| Value | Description |
|---|---|
pending | The transfer has been submitted but is not yet in progress. This may be due to Brale waiting for funds (e.g., fiat-to-stablecoin wire transfer) or an ongoing review. |
processing | The transfer is in progress. |
complete | The transfer is finalized and funds have arrived at the destination. |
canceled | The transfer has been canceled. |
failed | An issue prevented Brale from completing the transfer. Manual intervention may be required. |
Transfer Flow
A transfer will progress from pending → processing → complete. Transfers include an updated_at field denoting the last time the status updated.
Transfer Limits
- Inbound ACH transactions are limited to $50,000 per transaction.
- There are no limits for wire or stablecoin transactions.