# List Your Tenant's Wallets

Every wallet of your tenant, whoever owns it, newest first: address, network, owner, who holds the key, status and the balances last read. For the roles that read the tenant's transactions.

## Overview

- **Who may call.** The tenant roles `owner`, `tenantadmin`, `non_signing_admin`, `signer`, `approver`, `editor`, `viewer` and `auditor`, on their own tenant: `{id}` is your tenant's id ([Get Your Tenant](https://docs.aureahub.com/docs/tenant-info.md)). Another tenant's id answers `403` `Admin access required or you can only access your own tenant.` A user's own wallets: [List Wallets](https://docs.aureahub.com/docs/wallets-list.md).
- **Filters.** `kind` — who holds the key: `custodial` (Aurea, for the user), `non_custodial` (the user's device), `mpc` (an MPC wallet: [Wallets & Custody](https://docs.aureahub.com/docs/guide-non-custodial-keys.md)), `watch_only` (nobody: an address followed without a key). `chain` (a chain slug), `network` (`mainnet` or `testnet`), `status` (`active` or `deactivated`; both by default) and `userId` (one owner's).
- **Pages.** `limit` 1–100 (default 50) and `offset`. `pagination.total` counts the wallets the filters match; `hasMore` says whether another page follows ([Pagination](https://docs.aureahub.com/docs/pagination.md)).
- **`totals`** counts every wallet of the tenant whatever the filters: `total`, `active`, `deactivated`, `byKind`, `mainnet` and `testnet`.
- **Each wallet.** `userId`, `username` and `displayName` of its owner; `address`, `chain`, `isTestnet`, `label`, `isPrimary`, `walletType`, `kind`, `status`, `deactivatedAt` and `createdAt`. `scheme` is the API's name for how the key is kept, from which `kind` is derived: read `kind`, and don't depend on `scheme`'s values. No key material is ever answered.
- **Balances.** `balances` are the amounts last read from the chain for the wallet's address — `tokenSymbol`, `tokenAddress` (`null` for the chain's coin), `balance` in the token's smallest unit ([Amount Units](https://docs.aureahub.com/docs/amounts.md)), `formattedBalance`, `decimals` and `updatedAt`, when it was read. Nothing is read from the chain to answer, so the list is `[]` for an address never read; for a balance read now use [Get Balance](https://docs.aureahub.com/docs/wallets-balance.md).
- `404` `TENANT_NOT_FOUND` for a tenant that does not exist; `400` for a filter value that is not valid.

## Endpoint

### `GET /v1/admin/tenants/{id}/wallets`

Authentication: bearer token required.

Every wallet of the tenant, newest first, a page at a time.

**Path parameters**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string (uuid) | yes | Your tenant's id |

**Query parameters**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `kind` | string | no | `custodial`, `non_custodial`, `mpc` or `watch_only` |
| `chain` | string | no | A chain slug, e.g. `base` |
| `network` | string | no | `mainnet` or `testnet` |
| `status` | string | no | `active` or `deactivated`; both by default |
| `userId` | string (uuid) | no | One owner's wallets |
| `limit` | integer | no | 1–100, default 50 |
| `offset` | integer | no | Default 0 |

**Responses**

`200` OK

```json
{
  "data": [
    {
      "id": "7c1e9b24-3f5a-4d8e-9b6c-1a2f3e4d5c6b",
      "userId": "5d2c1b0a-9e8f-4a7b-8c6d-5e4f3a2b1c0d",
      "username": "maria.rossi",
      "displayName": "Maria Rossi",
      "address": "0x8ba1f109551bD432803012645Ac136ddd64DBA72",
      "chain": "base",
      "isTestnet": false,
      "label": "Main",
      "isPrimary": true,
      "walletType": "eoa",
      "scheme": "client_side",
      "kind": "non_custodial",
      "status": "active",
      "deactivatedAt": null,
      "createdAt": "2026-10-18T09:12:44.000Z",
      "balances": [
        {
          "tokenSymbol": "USDC",
          "tokenAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "balance": "125000000",
          "formattedBalance": "125.0",
          "decimals": 6,
          "updatedAt": "2026-10-21T09:58:02.000Z"
        }
      ]
    }
  ],
  "pagination": { "total": 1, "limit": 50, "offset": 0, "hasMore": false },
  "totals": {
    "total": 412,
    "active": 398,
    "deactivated": 14,
    "byKind": { "custodial": 0, "non_custodial": 405, "mpc": 0, "watch_only": 7 },
    "mainnet": 371,
    "testnet": 41
  }
}
```

`403` Another tenant

```json
{
  "statusCode": 403,
  "error": "ForbiddenError",
  "message": "Admin access required or you can only access your own tenant."
}
```

`404` No tenant

```json
{
  "statusCode": 404,
  "error": "NotFoundError",
  "message": "Tenant not found",
  "details": { "code": "TENANT_NOT_FOUND" }
}
```

**Example request**

```bash
curl "https://api.aureahub.com/v1/admin/tenants/TENANT_ID/wallets?userId=5d2c1b0a-9e8f-4a7b-8c6d-5e4f3a2b1c0d&network=mainnet" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

---

Web version: https://docs.aureahub.com/#tenant-wallets-list
