> ## Documentation Index
> Fetch the complete documentation index at: https://docs.minisend.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Get a wallet's balance

> Read a wallet's live USDC balance on every chain it's live on, straight from each chain.

Tells you how much USDC a wallet holds right now. We check the blockchain itself each time, rather than adding up the deposits we've recorded, so the figure always matches what's really there.

An address is the same on every network your plan includes, so this checks all of them and adds them up.

## Endpoint

```text theme={null}
GET https://merchant.minisend.xyz/api/v1/wallets/{walletId}/balance
```

```text theme={null}
Authorization: Bearer wsk_live_your_key_here
```

## Example

```bash theme={null}
curl https://merchant.minisend.xyz/api/v1/wallets/3f6b2e1a-.../balance \
  -H "Authorization: Bearer wsk_live_your_key_here"
```

## Response (200)

```json theme={null}
{
  "wallet_id": "3f6b2e1a-...",
  "wallet_ref": "user-9214",
  "address": "0xabc1230000000000000000000000000000dead",
  "chain": "BASE",
  "token": "USDC",
  "amount": "10.500000",
  "balances": [
    { "chain": "BASE", "amount": "10.500000" },
    { "chain": "MATIC", "amount": "2.000165" },
    { "chain": "ARB", "amount": "0.000000" },
    { "chain": "OP", "amount": null, "error": "unavailable" }
  ],
  "total": "12.500165",
  "total_complete": false
}
```

<ResponseField name="chain" type="string" required>
  The network the wallet was first created on, always `BASE`. The `amount` next to it is the balance on Base only. It's there for older setups that only read these two fields.
</ResponseField>

<ResponseField name="amount" type="string" required>
  The balance on `chain`, as text. Store and compare it as an exact decimal, never a floating-point number.
</ResponseField>

<ResponseField name="balances" type="array" required>
  One entry for each network the address works on, `BASE` first. We check each network separately. If we can't read one, it comes back as `{ "chain": ..., "amount": null, "error": "unavailable" }`, and the rest of the call still works.
</ResponseField>

<ResponseField name="total" type="string" required>
  The total across every network we could read, to 6 decimal places.
</ResponseField>

<ResponseField name="total_complete" type="boolean" required>
  `false` if we couldn't read one of the networks in `balances`. In that case `total` is the least the wallet holds, not the full amount. `true` when we read every network.
</ResponseField>

## Errors

| Status | Meaning |
| - | - |
| `401` | Your API key is missing or wrong |
| `404` | We can't find this wallet, or it belongs to another account |
| `502` | We couldn't read the balance on Base just now. Try again |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.