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

# Sandbox vs. production

> Two parallel environments share one URL. Your active mode decides which one your dashboard and API see.

Veil runs **two parallel environments** behind a single URL. Production handles real KYC, real bank accounts, and real money. Sandbox is wired to a test environment — same surface, no real funds. The mode you're in decides which environment every read and write touches.

## How it shows up in Veil

When you log in to the dashboard, a header toggle switches you between **Sandbox** and **Production**. The choice is sticky.

Every read and write is scoped to your active mode. Wallets, transactions, bank accounts, KYC status, API keys, and webhooks in sandbox are never the same rows you see in production. An API key minted in sandbox only works in sandbox; a production key only works in production. The same `@handle` can exist in both modes, owned by different users.

## Who can use which mode

* **Individuals** live in production only. Sandbox mode is not available to individual accounts — there's no meaningful sandbox flow when you're just moving your own funds.
* **Developers** sign up in sandbox by default. The sandbox lets you build and test without KYC friction or real money. When you're ready to launch, you "go live": complete production KYC, add a production bank account, and switch the mode toggle to Production. See the [Production guide](/developers/production/overview).

## Switching modes

Only the dashboard can switch modes — API keys are pinned to the mode they were minted in. To switch sandbox → production, you must first complete production KYC; the switch is blocked otherwise.

## Common pitfalls

| Symptom                                                     | Likely cause                                                                          |
| ----------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| "My wallets disappeared"                                    | You toggled modes. Toggle back.                                                       |
| "My API key returns 401"                                    | The key is sandbox; the dashboard or another caller is in production (or vice versa). |
| "I can't switch to production"                              | You haven't completed production KYC yet.                                             |
| "My handle is taken in production but I have it in sandbox" | Handles are per-mode. Claim it in production separately.                              |

## See also

* [KYC](/concepts/kyc) — the two-identity model
* [Wallets](/concepts/wallets) — per-mode uniqueness
* [Usernames](/concepts/usernames) — per-mode handles
* [Going live](/developers/production/overview) — the graduation flow
