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

# Sandbox

> Build and test without cost or real messages.

Keys that start with `esk_test_` run in an isolated sandbox:

* **No charges**: the wallet balance is untouched
* **No real messages**: WhatsApp, e-mail and SMS are simulated, and webhooks still fire
* **Isolated data**: test clients and debts never show up in the dashboard's live view
* **Fake PIX**: test QR codes with a way to simulate payment

## Simulate a payment

```bash theme={null}
curl -X POST "https://api.payable.run/api/v1/test/payments/PAYMENT_ID/simulate-paid" \
  -H "Authorization: Bearer esk_test_YOUR_KEY"
```

Fires `payment.received` and `debt.paid` webhooks with `"live": false`. With a live key this returns `403`.

## Going live

**1. Create a live key**

Settings → API & Webhooks → Create key → **Live**.

**2. Swap the key**

Replace the environment variable in your system. No code change is needed.

**3. Register production webhooks**

Use separate URLs from your test ones, and check the `live` field in each payload.

**4. Check your balance**

Live sends are charged to your wallet. A `402` with `INSUFFICIENT_BALANCE` means it needs a top-up.


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