- Stablecoin withdrawals to an external wallet address —
POST /payments/withdraw/address. USDT and USDC on Ethereum, Tron, BSC, Solana, and TON (TON is USDT-only). Debited from your USD balance. - Bank withdrawals to an NGN or GHS bank account —
POST /payments/withdraw/bank/{id}. Debited from your local-currency balance.
Withdrawal states
Each state change fires a webhook:
withdrawal.pending, withdrawal.completed, withdrawal.reversed, or withdrawal.rejected.
Withdrawal assets (mainnet)
Withdrawals to external crypto addresses only support stablecoins (USDT and USDC).
For testnet IDs and the full deposit/withdrawal asset catalog, see Supported assets.
Before you can withdraw
Happy path
1
You submit the request
2
Breet validates and debits
Synchronous checks, in order:
- Credentials and integration active.
- IP in allowlist (if configured).
- PIN is correct. Repeated wrong PINs can temporarily freeze the account.
amountwithin min/max.- Address is valid for the network and not a Breet-managed address.
- Not a duplicate request.
- Balance ≥
amount + fee.
amount + fee is debited, withdrawal is created with status: pending, withdrawal.pending webhook is queued.Any fail → no record, no debit, no webhook. You receive an HTTP error. See Error handling.3
Breet approves and broadcasts
Approval is mostly automatic. The transaction is signed and broadcast on the chosen network. The recipient receives the full
amount on-chain — the fee is charged separately (see Fees).Withdrawals flagged for internal review may stay in pending until Breet approves (typically within a few minutes).4
Breet confirms completion
Once the withdrawal is successful,
withdrawal.completed fires with the on-chain txHash.Webhook sequence, by scenario
Fees and minimums
Breet charges a small flat fee per crypto to cover the network fee. The fee is shown on the webhook payload asfee.
The fee is deducted from the amount you request. Your balance is debited the full amount, and the recipient receives amount − fee on-chain.
Example. You call with amount: 100, USDT on Tron, fee $1. Your balance is debited $100. The recipient receives $99 of USDT on Tron.
Fetching withdrawals via the API
FAQ
Can I withdraw BTC, ETH, SOL, or other native coins?
Can I withdraw BTC, ETH, SOL, or other native coins?
No. The Partners API supports only stablecoin withdrawals (USDT, USDC) on the networks listed above. To move native coins, sell them via a deposit first, then withdraw as a stablecoin.
Can I cancel a pending withdrawal?
Can I cancel a pending withdrawal?
Not via API. Contact support immediately after submitting if it’s critical. Once approved and broadcast, the withdrawal can only complete or reverse.
What if I send to the wrong address?
What if I send to the wrong address?
On-chain transactions are irreversible. Breet validates address format, not ownership. Always confirm the destination with your end-user before submitting.
How quickly do withdrawals complete?
How quickly do withdrawals complete?
Seconds/Minutes on Solana, Tron, and TON. Longer on EVM chains due to confirmation times.
Why do I need a PIN for an API call?
Why do I need a PIN for an API call?
It’s an additional verification layer in case your API keys leak. Store the PIN alongside your secrets and rotate it from the dashboard if exposed.
Next steps
- Set up webhook handling → Webhooks
- See supported withdrawal networks and tokens → Supported assets
- Handle 429s correctly → Rate limiting
- Simulate a withdrawal on testnet → Testing