Receive funds
How to show a deposit address safely, and how to know the funds arrived.
List wallets
GET /api/v1/wallets returns every wallet in your workspace, with balances and deposit addresses. No
parameters.
| Field | Type | Notes |
|---|---|---|
id | string | Wallet id — use it as wallet_id when requesting a payout. |
name | string | Human label. |
status | string | active · locked · closed. |
deposit_addresses[] | array | One entry per network. Use this to receive funds. |
networks[] | array | Networks this wallet supports; network.id round-trips into a payout. |
balances[] | array | { asset, network, amount, available, usd_value }. amount is the total; available is spendable. Both are decimal strings. |
total_usd | number | Indicative display value from a cached feed — never use it for your own limits. |
{
"data": [
{
"id": "acct_7f3a…",
"name": "Operating Wallet",
"status": "active",
"address": "0xe8d8…a119",
"deposit_addresses": [
{ "network": "ethereum", "network_name": "Ethereum", "address": "0xe8d8…a119" },
{ "network": "tron", "network_name": "Tron", "address": "TQn9Y2…mHxq" }
],
"networks": [
{ "id": "ethereum", "name": "Ethereum" },
{ "id": "tron", "name": "Tron" }
],
"balances": [
{ "asset": "ETH", "amount": "12.5", "usd_value": 37500 },
{ "asset": "USDT", "amount": "250000", "usd_value": 250000 }
],
"total_usd": 287500
}
],
"meta": { "count": 1 }
}Amounts are decimal strings; keep them as strings or use decimal arithmetic. USD figures are indicative. Never show an unavailable balance as zero — a failed balance read returns an error instead.
GET /api/v1/wallets/{id} returns one wallet in the same shape. It returns 404 wallet_not_found for
anything outside your workspace — never 403, so the response never confirms whether an id exists
elsewhere.
Use the right address per network
Read deposit_addresses from GET /api/v1/wallets and show the entry matching the network the sender
is actually sending on.
Never show the top-level address field for a deposit.
It is one address chosen for single-line display and is only correct for its own network — paying it on a different chain loses the funds permanently.
What happens next
Incoming funds go through routine checks before they are released to the wallet. If webhooks are configured you get two events:
| Event | Meaning |
|---|---|
deposit.received | Funds arrived and are being processed. |
deposit.completed | The deposit is settled and spendable. |
The movement appears in GET /api/v1/transactions either way.
Never credit a deposit to your customer before it is completed.