How it works
1
Fund your USD balance
Your USD balance funds your crypto payouts. There are two ways to build it up:
- Crypto deposits. Generate a deposit address from your dashboard, or over the API with
POST /trades/sell/assets/{id}/generate-address. - Naira transfers to the virtual account on your dashboard, converted with
POST /payments/fiat-to-usd.
Virtual account funding is currently available in Naira only. Businesses in other countries can fund with crypto.
2
Add payout details
Collect each recipient’s wallet address, the token they want (USDT or USDC), and its network (ERC20, TRC20, BASE, BSC, SOL, or TON).Store these against the recipient in your own system, the same way you would store a bank account. Breet does not hold your recipient list; you pass the wallet details on each payout call, which means you can pay an unlimited number of recipients without registering any of them in advance.
3
Initiate the payout
Call
POST /payments/withdraw/address with the amount in USD, the recipient’s wallet address, the token, the network, your transaction PIN, and your own reference in externalId.Breet debits your USD balance, converts to the stablecoin, and broadcasts the transaction on-chain.4
Track payout status via webhooks
Every payout moves through a lifecycle, and Breet notifies you at each stage:
withdrawal.pending, withdrawal.completed, withdrawal.reversed, or withdrawal.rejected.The network fee is deducted from the amount you request, not added on top. If you request a $100 payout on a network with a $1 fee, your balance is debited $100 and the recipient receives $99. Check current fees with
GET /payments/supported-assets-info before you send.Send a payout to a wallet address
GET /payments/withdrawal/{id} at any time:
What Breet handles
- Converting your crypto or Naira balance into USD
- Converting USD into the stablecoin your recipient asked for
- Broadcasting the transaction on the network you specified
- Debiting your balance, and refunding it in full if a payout is reversed or rejected
- Delivering webhooks at every stage of the payout lifecycle
- Making the transaction hash and explorer link available once the payout confirms
What you handle
- Keeping your balance funded ahead of a payout run
- Collecting and storing each recipient’s wallet address, token, and network
- Validating that the address matches the network before you send
- Deciding when a payout is owed and triggering the withdrawal call
- Listening for webhooks and updating your own records
- Passing a unique
externalIdon every payout so you never send the same one twice - Telling your recipients when their money is on the way and when it lands
Example user journey
A Nigerian fintech funds its Breet balance using its Breet wallet address or assigned virtual account number.- The fintech converts its NGN balance to USD from the Breet dashboard.
- Throughout the day, users request stablecoin withdrawals from their wallets on the app.
- For each request, the backend calls
POST /payments/withdraw/addressstraight away, with the user’s wallet address, the amount, the token, the network, and anexternalIdmatching the request. - Breet debits the USD balance and sends each payout on-chain. Requests that come in at the same time are processed side by side, so no user waits behind another.
- Breet sends a
withdrawal.pendingwebhook for each payout, thenwithdrawal.completedwith a transaction hash once it confirms. - Each request is marked as paid, and the fintech notifies its user.
FAQ
Is there a limit on payout volume?
Is there a limit on payout volume?
Your available balance is the limit. There is no cap on how many payouts you send, or how often, and each request is processed independently so high-volume runs are not queued behind one another.
How do I fund my balance?
How do I fund my balance?
Deposit crypto to a Breet address, generated from your dashboard or over the API. You can also fund in Naira through the virtual account on your dashboard, then convert that balance with
POST /payments/fiat-to-usd.Which tokens and networks can I pay out in?
Which tokens and networks can I pay out in?
USDT and USDC across ERC20, TRC20, BSC, SOL, BASE, and TON. Call
GET /payments/supported-assets-info for the current list along with the fee on each network.What happens if a payout fails?
What happens if a payout fails?
You are refunded in full. A payout that fails an internal check before broadcast comes back as
withdrawal.rejected; one that is broadcast unsuccessfully comes back as withdrawal.reversed. In both cases the debited amount, including the fee, returns to your balance.Can I cancel a payout after sending it?
Can I cancel a payout after sending it?
No. Once a payout is initiated, it cannot be cancelled through the API, because the transaction may already be broadcasting. Validate the address and amount before you call.
How fast do payouts arrive?
How fast do payouts arrive?
Payouts are near-instant in most cases. Speed depends on the network; Solana and Tron confirm almost immediately, while Ethereum can take longer when the network is congested.