FedNow payouts are available on Brale accounts where FedNow has been enabled. Contact [email protected] to confirm enablement.
Prerequisites
- A Brale Account with
status: complete. - API credentials with the
addresses:write,addresses:read,transfers:write, andtransfers:readscopes. - A Brale internal (custodial) Address that holds the stablecoin you will redeem.
- The recipient’s bank details: owner name, account number, routing number, and account type. The recipient’s bank must participate in FedNow.
Step 1: Fund a Brale internal Address
Fund the internal Address you will use as the payout source. For example, mint to it with an onramp or send stablecoins to its onchain address. Check its balance before you create a payout. See Get a balance. Note the Address’sid, the stablecoin value_type it holds (for example, USDB), and the network transfer_type it holds it on (for example, spark). You will use all three in the Transfer.
Step 2: Register or upgrade the recipient bank Address
FedNow recipients use thefednow_credit transfer type on an external bank Address. Register recipients with Direct bank entry or Plaid. fednow_credit is available only on accounts it has been enabled for.
Option A: Create a new FedNow recipient
bank_address and beneficiary_address are not required for a FedNow-only recipient. They are required only when transfer_types includes wire.
account_number and routing_number as strings so leading zeros are preserved. You can request other rails in the same call, for example ["ach_credit", "fednow_credit"]. If you include wire, also send bank_address and beneficiary_address.
Response (201)
Option B: Add FedNow to an existing recipient
To add FedNow to an existing bank Address, such as an RTP recipient, sendadditional_transfer_types:
- Brale merges
fednow_creditinto the Address’s existingtransfer_types. An Address with["ach_credit", "rtp_credit"]becomes["ach_credit", "rtp_credit", "fednow_credit"]. - The Address
iddoes not change. Keep using the sameaddress_idfor all rails. - Sending a transfer type that is already enabled has no additional effect.
PATCHrequests do not take anIdempotency-Keyheader.
Registration errors
Response (422)
Step 3: Confirm the recipient supports FedNow
Retrieve the Address and confirm thatstatus is active and transfer_types includes fednow_credit:
fednow_credit is missing, do not send the payout on another rail automatically. Choose the rail explicitly.
Step 4: Create the payout Transfer
Request
source.address_idis your funded Brale internal Address.source.value_typeandsource.transfer_typemust match the token and network that Address holds. If the Address holdsSBConsolana, send"value_type": "SBC"and"transfer_type": "solana".destination.address_idis the recipient bank Address withfednow_creditenabled.- Generate one
Idempotency-Keyper logical payout and store it with your payout record before you send the request.
Response (201)
201 Created means Brale created the Transfer. It does not mean the recipient has been paid.
Step 5: Track the payout
Track the Transfer until it reachescomplete, canceled, or failed:
- Subscribe to
transfer.*webhooks.transfer.completedmeans the Transfer reachedcomplete. See Webhook events. - Or poll
GET /accounts/{account_id}/transfers/36JqTB7hN3pQe5ZuWv0XkLr2sGcwith exponential backoff. - To list payouts to a recipient, call
GET /accounts/{account_id}/transfers?address_id=<recipient_bank_address_id>and checkdestination.transfer_type. Thetransfer_typequery parameter filters by blockchain only and does not acceptfednow_credit.
id, and retrieve the Transfer when you need its current state.
Handle a pending payout safely
- Keep tracking the original Transfer by its
id. A FedNow payout can staypendingorprocessingwhile Brale reviews and submits it. - If your create request timed out or returned
5xxor429, retry with the sameIdempotency-Keyand the same body. Brale returns the original Transfer instead of creating a second one. - Do not create a replacement payout with a new key because the first one is still
pending. Both could be paid. - If you need to stop a payout, contact [email protected] immediately. Brale can cancel a payout only before it is submitted to FedNow. A
processingpayout cannot be canceled, andpendingdoes not guarantee that cancellation is still possible. - Create a new payout only after the original reaches
canceledorfailed, and use a newIdempotency-Key.
Cancellation compared with returns
Acanceled Transfer was stopped before Brale sent the payment. A return after settlement is a separate event. Do not assume an automatic refund. The Transfer status enum also includes compliance review, refunding, and refunded. Treat them as not complete and keep tracking the Transfer. Check failure on failed Transfers when it is present.
Errors and retries
Test outbound payouts
Testnet does not send real FedNow payments. When you submit a redemption on testnet, Brale burns the stablecoin onchain and skips the fiat payout. See Burn tokens on testnets. On testnet you can:- Fund internal Addresses on testnet networks with testnet mints.
- Exercise redemption Transfers, idempotency handling, and status tracking without moving real USD.
- Validate your FedNow request construction against the examples on this page.
destination.transfer_type: "fednow_credit" is rejected on your account, contact support to confirm testnet FedNow enablement.
Confirm end-to-end FedNow payouts on mainnet with a small amount, such as 1.00 USD, to a recipient you control.