Skip to main content
Built for businesses moving stablecoins to customers and partners: fintechs whose users withdraw or buy stablecoins, marketplaces settling vendors, platforms paying creators and contractors, betting platforms paying winnings, and businesses paying overseas suppliers.

How it works

1

Fund your USD balance

Your USD balance funds your crypto payouts. There are two ways to build it up:
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

A successful call returns the payout ID, which you can use with 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 externalId on 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.
  1. The fintech converts its NGN balance to USD from the Breet dashboard.
  2. Throughout the day, users request stablecoin withdrawals from their wallets on the app.
  3. For each request, the backend calls POST /payments/withdraw/address straight away, with the user’s wallet address, the amount, the token, the network, and an externalId matching the request.
  4. 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.
  5. Breet sends a withdrawal.pending webhook for each payout, then withdrawal.completed with a transaction hash once it confirms.
  6. Each request is marked as paid, and the fintech notifies its user.

FAQ

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