How it works
Generate a deposit address
Call the generate-address endpoint for the asset the user wants to sell. Use the
label field to tag the address with the user’s ID. Each address is permanent, so you only need to generate it once per user per asset. Store it and reuse it for future off-ramps.User sends crypto
Display the wallet address in your app. The user sends BTC, ETH, USDT, or any other supported asset from their personal wallet or exchange.
Breet confirms the deposit
Breet detects the on-chain transaction and sends a webhook to your server with the deposit amount, asset, and status.
Crypto is converted
The deposit is automatically converted to your chosen wallet currency (USD, NGN, or GHS) at the current market rate.
Settle funds
How funds are handled after conversion depends on your setup:
- Without auto-settlement: the converted amount is held in your wallet in your chosen currency (USD, NGN, or GHS). You can view the balance on your dashboard and withdraw manually via
POST /payments/withdraw/bank/{id}when ready. - With per-address auto-settlement: each deposit is automatically paid out to the bank account linked to that specific address. Enable it via the API. See the auto-settlement guide.
- With business-wide auto-settlement: all deposits across all addresses are automatically withdrawn to a single destination (bank account or stablecoin address). Enable it from your dashboard under Settings > Automatic Settlement.
Generate a deposit address
ASSET_ID with a valid asset ID from the Fetch assets endpoint. The bankId comes from GET /payments/banks. When bank details are included, the wallet is ready for auto-settlement once you enable it.
Withdraw manually (without auto-settlement)
If you prefer to control when payouts happen, skip auto-settlement and initiate withdrawals yourself:amount is in USD. Breet converts it to the local currency (NGN or GHS) based on the destination account’s country.
What Breet handles
- Generating deposit wallet addresses per user
- Monitoring blockchains for incoming transactions
- Converting crypto to fiat at current market rates
- Settling to bank accounts in NGN or GHS (via auto-settlement or manual withdrawal)
- Sending webhook notifications for every deposit and withdrawal status change
What you handle
- Collecting the user’s bank account details
- Displaying the deposit address and instructions in your app
- Listening for and processing webhook events
- Mapping deposits to users using the
labelordestinationAddress - Communicating conversion status and payout confirmations to users
- Deciding whether to use auto-settlement or trigger withdrawals manually
Example user journey
- Emeka opens your app and selects Cash out crypto.
- He chooses to sell USDT and enters the amount.
- If this is Emeka’s first off-ramp, your app calls Breet’s generate-address endpoint with his user ID as the label and his linked bank details, then stores the returned address. For future off-ramps, the app reuses the same address since it is permanent.
- The app displays the USDT deposit address.
- Emeka sends 200 USDT from his exchange account.
- Breet detects the deposit and sends a
trade.completedwebhook to your server. - With auto-settlement enabled, Breet converts the USDT to NGN and pays out to Emeka’s bank account.
- Emeka receives the NGN in his bank and your app shows a confirmation.
FAQ
Which cryptocurrencies can users off-ramp?
Which cryptocurrencies can users off-ramp?
Any asset Breet supports for your integration. See the full list on the supported assets page, or call
GET /trades/assets to get the current list for your account.Which countries are supported for bank payouts?
Which countries are supported for bank payouts?
Breet currently supports bank payouts in Nigeria (NGN) and Ghana (GHS).
Can users choose between auto-settlement and manual withdrawal?
Can users choose between auto-settlement and manual withdrawal?
That’s up to your app’s design. You can enable auto-settlement per address so payouts happen automatically, or hold funds in the wallet and let users trigger a withdrawal when they’re ready. You can also offer both options.
What exchange rate is used for conversion?
What exchange rate is used for conversion?
Breet uses the current market rate at the time the deposit is confirmed. The converted amount appears in the webhook payload. If auto-settlement is enabled, the
settlementRate field shows the exact rate used.How fast are bank payouts?
How fast are bank payouts?
With auto-settlement, bank payouts typically complete the same business day after the blockchain transaction is confirmed. Confirmation times depend on the network: stablecoins on Solana or Tron confirm in seconds, while Bitcoin may take longer.
Can I add a markup on the conversion?
Can I add a markup on the conversion?
Yes. You can set a markup percentage (0-10%) via the API or from your dashboard. The markup is deducted from each settlement as your revenue margin. See the auto-settlement guide for details.