Skip to main content
Let players fund their betting balance with crypto and withdraw winnings to their bank account or as stablecoins. Breet handles wallet generation, deposit tracking, and payout processing so your platform can focus on the gaming experience.

How it works

1

Generate a deposit address per player

Call the generate-address endpoint with the player’s internal ID as the label. Each address is permanent, so you only need to generate it once per player per asset. Store it and display it whenever the player initiates a deposit.
2

Player sends crypto

Display the wallet address in your deposit flow. The player sends crypto from any external wallet or exchange.
3

Receive a webhook and credit the balance

Breet sends a webhook when the deposit is confirmed on-chain. Parse the payload and credit the player’s betting balance.
4

Player withdraws winnings

When a player requests a withdrawal, call POST /payments/withdraw/address to send stablecoins to their wallet, or POST /payments/withdraw/bank/{id} to settle to a bank account.

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": "player-78901"}'
Replace ASSET_ID with the asset the player wants to deposit (e.g., USDT, BTC). The label field ties the address to a specific player for automatic reconciliation. Each address is permanent, so you only need to generate it once per player per asset.
Generate a unique address per player so deposits are automatically attributed without manual matching.

What Breet handles

  • Generating unique deposit addresses per player
  • Monitoring blockchains for incoming deposits
  • Sending real-time webhook notifications
  • Processing stablecoin withdrawals to player wallets
  • Auto-settlement to local bank accounts (NGN or GHS)

What you handle

  • Displaying deposit addresses and QR codes in your platform
  • Listening for and processing webhook events
  • Crediting and debiting player balances
  • Managing withdrawal requests and payout logic
  • Enforcing your platform’s deposit and withdrawal limits

Example user journey

  1. Chidi opens a betting platform and taps Deposit.
  2. He selects USDT on Tron as his deposit method.
  3. If this is Chidi’s first deposit, the platform calls Breet’s generate-address endpoint and stores the returned TRC-20 wallet address. For future deposits, the platform displays the same saved address since it is permanent.
  4. Chidi sends 100 USDT from his exchange account.
  5. Breet detects the deposit and sends a trade.completed webhook.
  6. The platform credits 100 USDT to Chidi’s betting balance.
  7. After a winning streak, Chidi requests a withdrawal of 250 USDT.
  8. The platform calls POST /payments/withdraw/address to send 250 USDT to Chidi’s personal wallet.
  9. Chidi receives the stablecoins and a withdrawal.completed webhook confirms the payout.

FAQ

Yes. Use POST /payments/withdraw/address to send stablecoins (USDT or USDC) to any wallet address the player provides. You can also settle winnings to a bank account using POST /payments/withdraw/bank/{id}.
Yes. Each call to the generate-address endpoint returns a new address. Use the label field to tag it with the player’s ID so incoming deposits are automatically mapped to the correct account.
Deposits below the network’s minimum threshold may be flagged. Breet sends a trade.flagged webhook when a deposit falls below the asset minimum. Check the supported assets page for minimum amounts.
Breet monitors the blockchain independently of your platform’s availability. If your webhook endpoint is unreachable, Breet retries delivery using an exponential backoff schedule. See webhook retries for the full retry timeline.