MegTrustDevelopers

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.

FieldTypeNotes
idstringWallet id — use it as wallet_id when requesting a payout.
namestringHuman label.
statusstringactive · locked · closed.
deposit_addresses[]arrayOne entry per network. Use this to receive funds.
networks[]arrayNetworks 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_usdnumberIndicative display value from a cached feed — never use it for your own limits.
200
{
  "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:

EventMeaning
deposit.receivedFunds arrived and are being processed.
deposit.completedThe 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.

On this page