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

FieldWhereTypeDescription
account_idPathstringAccount whose funds are being moved
amountBodyobject{ "value": "10", "currency": "USD" }
sourceBodyobjectOrigin of funds (fiat rail or on‑chain address)
value_typeIn source / destinationstringCurrency/token (e.g., USD, USDC, SBC)
transfer_typeIn source / destinationstringPayment rail or chain (e.g., wire, ach, polygon, solana)
address_idIn source / destinationstringWallet that is sending and/or receiving stablecoins
financial_institution_idIn source / destinationstringBank account that sends/receives fiat
Idempotency-KeyHeaderstringUUID that guarantees exactly‑once execution

Transfer Scenarios: understanding value_type and transfer_type

FlowSourceDestinationDescription
Onramp
(Fiat -> Stablecoin)
USD / wireSBC / baseMint SBC on base funded by wire deposit.
Offramp
(Stablecoin -> Fiat)
SBC / solanausd / achRedeem SBC on Solana to USD via ACH.
Swap
(Stablecoin <-> Stablecoin)
USDC / solanaSBC / solana1:1 swap from USDC to SBC with no slippage.
On-chain PayoutUSDC / polygonUSDC / polygon (external address)Pay a recipient wallet.


Every request is scoped to an account, so the path always starts with:

POST /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.

POST https://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"
    }
  }'

The transfer will be opened in a pending state until funds are received. 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.

Response

{
    "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.

POST https://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",
    "memo": "BRL*Transaction",
  }
}

Stablecoin Swaps

Swap USDC to your own stablecoin (YSBC). All stablecoin swaps are 1:1 with no slippage.

POST https://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).

POST https://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

GET https://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
  }

Transfer Statuses

Transfers can progress through the following statuses:

  • 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