How it works
Create a trade and generate a deposit address
When a trade is initiated, call the generate-address endpoint with a label identifying the trade (e.g., a trade ID or order reference).
Buyer deposits crypto
The buyer sends the agreed amount of crypto to the generated address. Your platform holds the trade in a pending state.
Breet confirms the deposit
Breet monitors the blockchain and sends a webhook when the deposit is confirmed, including the amount and trade label.
Generate a deposit address for a trade
ASSET_ID with a valid asset ID from the Fetch assets endpoint. See the supported assets page for a full list and the quickstart for authentication setup.
What Breet handles
- Wallet address generation per trade
- Blockchain monitoring and deposit confirmation
- Webhook notifications with deposit details (amount, asset, label)
- Fiat settlement to bank accounts (NGN/GHS) when you trigger withdrawal
- Stablecoin withdrawals to external addresses
What you handle
- Trade matching and order management between buyers and sellers
- Mapping each trade to a unique label for deposit tracking
- Listening for webhooks to update trade status (e.g., marking as funded)
- Deciding when to release funds (your escrow logic)
- Initiating withdrawals to the seller’s bank or crypto address after trade completion
Example user journey
- A buyer and seller agree on a trade on your P2P platform.
- Your backend calls Breet to generate a deposit address labeled with the trade ID.
- Your platform shows the address to the buyer and holds the trade as “awaiting payment.”
- The buyer sends USDT to the deposit address.
- Breet confirms the deposit and sends a webhook to your platform.
- Your platform marks the trade as “funded” and notifies the seller.
- The seller confirms delivery (or your platform auto-confirms based on your rules).
- Your backend calls
POST /payments/withdraw/bank/{id}orPOST /payments/withdraw/addressto release funds to the seller.
FAQ
Can I use Breet as an escrow layer?
Can I use Breet as an escrow layer?
Yes. Generate a unique deposit address per trade so incoming funds are isolated. When Breet confirms the deposit via webhook, your platform controls when and how to release funds. You make the withdrawal call only after trade conditions are satisfied, giving you full escrow-like control.
Can I track multiple trades simultaneously?
Can I track multiple trades simultaneously?
Yes. Assign a unique
label to each trade when generating the deposit address. Breet includes this label in all webhook payloads, so you can match deposits to specific trades even when handling hundreds of concurrent orders.Can I settle in stablecoins instead of fiat?
Can I settle in stablecoins instead of fiat?
Yes. Use
POST /payments/withdraw/address to send stablecoins (USDT/USDC) to an external wallet instead of settling to a bank account. This is useful when sellers prefer to receive crypto.What happens if the buyer sends the wrong amount?
What happens if the buyer sends the wrong amount?
Breet reports the exact amount received in the webhook payload. Your platform is responsible for comparing this against the expected trade amount and deciding how to handle mismatches, such as requesting an additional payment or issuing a refund.