> ## 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.

# Wallet API

> Give every user of your product a real on-chain address, without building or running wallet infrastructure yourself.

The Wallet API lets you give every user of your own product a dedicated on-chain address. You call one endpoint with a reference for your user, and get back a real address on the chain you choose.

Use it to add deposit addresses to your app, issue a wallet per customer or per order, or build on-chain functionality without becoming a wallet provider yourself.

## No keys to manage

Creating an address through this API doesn't hand you or your end users a private key or seed phrase to store. There's nothing to generate, back up, or lose on your side of the integration.

## Master wallets and addresses

Every address you generate belongs to a **master wallet**: one container you activate per chain. Activate Base (or another chain) from your dashboard, and every subsequent address on that chain is issued under it.

<Steps>
  <Step title="Activate a chain">
    From **Dashboard → Wallets**, activate the chain you want to issue addresses on. Base is available on every plan.
  </Step>

  <Step title="Generate an API key">
    Create a key from the same page. Keys use the `wsk_live_` prefix.
  </Step>

  <Step title="Create an address">
    `POST /api/v1/wallets` with a reference for your user. Calling it again with the same reference returns the same address; it never mints a second one.
  </Step>
</Steps>

## Detecting deposits

Every address you create is watched. When one receives funds, Minisend records the deposit and delivers a [`wallet.deposit.received` webhook](/wallet-api/webhooks) to the same webhook URL configured in **Settings**. You can also read deposits directly, and check a wallet's live balance, without waiting on a webhook:

<CardGroup cols={3}>
  <Card title="Get balance" icon="coins" href="/api-reference/wallet-api/get-balance">
    A wallet's current USDC balance, read live from the chain.
  </Card>

  <Card title="Get wallet deposits" icon="arrow-down-to-line" href="/api-reference/wallet-api/get-wallet-deposits">
    Deposit history for one wallet.
  </Card>

  <Card title="List all deposits" icon="list" href="/api-reference/wallet-api/list-deposits">
    Every deposit across your account, for reconciliation.
  </Card>
</CardGroup>

There's no transfer or sweep capability yet: funds are detected and reported, not moved. See [Wallet API webhooks](/wallet-api/webhooks) for the event and its known chain caveat.

## Pricing

| Plan       | Price      | Addresses included | Extra addresses | Chains active | Tokens     |
| ---------- | ---------- | ------------------ | --------------- | ------------- | ---------- |
| Free       | \$0        | 100/month          | Blocked         | 1 (Base only) | USDC, USDT |
| Growth     | \$199/mo   | 2,000/month        | \$0.50 each     | Any 3 of 6    | USDC, USDT |
| Enterprise | Contracted | Unlimited          | n/a             | All 6         | USDC, USDT |

The address allowance resets every calendar month and counts addresses **created** that month, not your running total. On Growth, going over 2,000 in a month never blocks you: extra addresses are billed at \$0.50 each rather than rejected. Free has no billing behind it, so it blocks once the 100 included addresses are used.

"Any 3 of 6" is a count, not a fixed set: pick which three of the six supported chains (Base, Ethereum, Polygon, Arbitrum, Optimism, Avalanche) are active, and swap one out for another later.

Creating an address on a chain you haven't activated, or activating a fourth chain on Growth, returns a `400` naming the limit. [Contact Minisend](https://t.me/minisendapp) to choose a plan or move to Enterprise.

## No test mode

There is no sandbox for the Wallet API today. Keys are live-only, and every address you create is a real address on mainnet.

Build against small real amounts, and use a throwaway `walletRef` prefix if you want your experiments easy to identify later. If a sandbox would block your integration, [tell us](https://t.me/minisendapp) — it helps us prioritise.

<Card title="Create your first wallet" icon="arrow-right" href="/wallet-api/quickstart">
  Activate a chain, generate a key, and issue an address end to end.
</Card>
