Skip to main content
Let your users fund wallets, savings accounts, or virtual cards with crypto and stablecoins. Breet generates deposit addresses, tracks incoming transactions, and notifies your app via webhooks so you can credit balances instantly.

How it works

1

Generate a deposit address

Call the generate-address endpoint for a specific asset. Each address is permanent and unique to your user. You can also label the address using a unique identifier.
2

Show the address to your user

Display the wallet address in your app’s funding flow. The user sends crypto from any external wallet.
3

Receive a webhook notification

When the transaction is detected on-chain, Breet sends a webhook to your server with the deposit details, amount, and status.
4

Credit the user's balance

Parse the webhook payload, match it to the user, and credit their in-app balance.
5

Settle funds (optional)

This step is optional and depends on how you want to handle funds after a deposit:
  • Without auto-settlement: deposits are converted and held in your wallet in your chosen currency (USD, NGN, or GHS). You can view the balance on your dashboard and withdraw manually whenever you’re ready.
  • With per-address auto-settlement: each deposit is automatically converted and 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.
You can set your preferred holding currency from the dashboard under Settings > Crypto Settings. This determines the currency your wallet balance is held in when auto-settlement is off.

Generate a deposit address

curl -X POST "https://api.breet.io/v1/trades/sell/assets/ASSET_ID/generate-address" \
  -H "x-app-id: YOUR_APP_ID" \
  -H "x-app-secret: YOUR_APP_SECRET" \
  -H "X-Breet-Env: production" \
  -H "Content-Type: application/json" \
  -d '{"label": "user-12345"}'
Replace ASSET_ID with the identifier for the crypto asset you want to accept (e.g., BTC, ETH, USDT). Use the label field to tag addresses with your internal user ID for easy reconciliation. Each address is permanent, so you only need to generate it once per user per asset. Store the address and display it whenever the user wants to deposit.
List available assets by calling GET /trades/assets to get valid asset IDs for your account.

What Breet handles

  • Generating and managing deposit wallet addresses
  • Monitoring blockchains for incoming transactions
  • Sending webhook notifications with transaction details
  • Converting crypto to local fiat via auto-settlement
  • Payouts to linked bank accounts

What you handle

  • Displaying the deposit address and instructions to your user
  • Listening for and processing webhook events from Breet
  • Mapping deposits to user accounts using the label or destinationAddress
  • Crediting user balances in your application
  • Communicating deposit status to your users

Example user journey

  1. Adeola opens her fintech app and taps Fund account.
  2. She selects USDT on Solana as the funding method.
  3. If this is Adeola’s first deposit, the app calls Breet’s generate-address endpoint and stores the returned address. For future deposits, the app displays the same saved address since it is permanent.
  4. Adeola copies the address and sends 50 USDT from her personal wallet.
  5. Breet detects the transaction and sends a trade.completed webhook to the fintech app.
  6. The app credits 50 USDT (or whatever equivalent) to Adeola’s balance.
  7. Adeola sees the funds in her account and can spend, save, or transfer them.

FAQ

No. Breet operates entirely behind the scenes. Your users see your app’s interface, branding, and messaging throughout the funding flow. Breet provides the infrastructure and you control the experience.
Yes. Call the generate-address endpoint once per asset to create a separate deposit address for each currency. A single user can have addresses for BTC, ETH, USDT, and any other supported asset simultaneously.
Deposit speed depends on blockchain confirmation times. Breet sends a trade.pending webhook as soon as the transaction is detected (mostly instantly), followed by trade.completed once it reaches the required number of confirmations. Most stablecoin deposits on fast networks like Solana complete within seconds.
Yes. Link a bank account to a wallet address and enable auto-settlement via PUT /trades/wallets/{id}/auto-settlement. Every deposit to that address will automatically convert to NGN or GHS and settle to the linked bank account. You can also enable business-wide auto-settlement from your dashboard. See the auto-settlement guide for the full details.