Balance
Read your current balance, on-hold totals, lifetime aggregates, and the deposit addresses for top-ups.
All examples below assume Authorization: Bearer mer_live_… is set; see
Authentication.
Get balance
GET /api/v1/merchant/balancecurl https://api.tradeon.market/api/v1/merchant/balance \
-H "Authorization: Bearer mer_live_…"200 OK:
{
"available": 481.60,
"on_hold": 18.40,
"total_deposited": 1000.00,
"total_spent": 500.00,
"currency": "USD",
"deposit_addresses": {
"trc20": "TXY...USDT_TRC20_ADDRESS",
"bep20": "0x...USDT_BEP20_ADDRESS"
}
}Fields
| Field | Type | Notes |
|---|---|---|
available | decimal (USD) | Free balance — what you can spend right now. |
on_hold | decimal (USD) | Sum of in-flight purchases — every purchase whose public status is created, processing, or sent_to_steam. Released back into available on terminal status. |
total_deposited | decimal (USD) | Lifetime sum of confirmed deposits (Deposit ledger rows). |
total_spent | decimal (USD) | Lifetime net spend = sum of Purchase debits − sum of Refund credits. |
currency | string | Always "USD". |
deposit_addresses | object | Static USDT addresses for top-ups. Both fields are null until provisioned. |
deposit_addresses.trc20 | string | null | USDT-TRC20 address (Tron network). |
deposit_addresses.bep20 | string | null | USDT-BEP20 address (BNB Smart Chain). |
Topping up
Send USDT to either deposit address (TRC-20 or BEP-20). The deposit is confirmed by our
upstream payment provider (Heleket) and credited to your available balance. You will
receive a balance.deposited webhook with the credited amount and the new
balance_after — use that as your post-confirmation signal rather than polling
/balance.
There is no minimum deposit; on-chain network fees still apply on the sender side.
If deposit_addresses is null, the addresses have not been provisioned yet — contact
the TradeOn admin team.
Deposit commission
A single commission is withheld per deposit — it covers the network and processing fees, there are no other charges. The rate depends on the amount you send:
| Deposit amount | Commission |
|---|---|
| Under $5,000 | 1% |
| $5,000 and above | 0.5% |
The credited amount is sent × (1 − rate). Example: send $1,000 → $990.00 credited.
The commission scale is also available programmatically:
GET /api/v1/merchant/deposits/fees{
"currency": "USD",
"tiers": [
{ "min_amount": 0, "max_amount": 5000, "percent": 1.0 },
{ "min_amount": 5000, "max_amount": null, "percent": 0.5 }
]
}Errors
| HTTP | code | When |
|---|---|---|
| 401 | MERCHANT_API_KEY_MISSING | Authorization header missing or malformed. |
| 403 | MERCHANT_BLOCKED | Account blocked. |
| 429 | MERCHANT_RATE_LIMITED | Per-merchant request budget exceeded. |
See also
- Webhooks → Event Catalogue — the authoritative
deposit-confirmation signal lives in the
balance.depositedevent.