# Sandbox y live (/docs/sandbox)

| | Sandbox | Live |
| --- | --- | --- |
| Host | `https://api-sandbox.caibopay.app` | `https://api.caibopay.app` |
| Clave | `psp_test_…` | `psp_live_…` |
| Dinero | De prueba | Real |
| `livemode` en los eventos | `false` | `true` |
| `environment` en `GET /v1/account` | `sandbox` | `live` |

Son despliegues separados: cada uno tiene sus propios datos, clientes, beneficiarios, webhooks y claves. Una clave enviada al entorno equivocado se rechaza con `401 invalid_api_key`, igual que una clave inválida.

## Lo que solo existe en sandbox [#lo-que-solo-existe-en-sandbox]

- **Depósitos simulados.** <Endpoint method="POST" path="/v1/sandbox/deposits" href="/docs/api/sandbox/simulate-deposit" /> deposita en una cuenta de cobro del banco de prueba, la cuenta USD de `bank_transfer`. El depósito recorre el camino real (aviso, verificación, acreditación) y te llega `payin.completed`. En live esta ruta no existe.
- **Un banco de prueba** que ejecuta los pagos, para recorrerlos de punta a punta.

<Callout type="warn" title="Diferencias que debes conocer">
- En sandbox, los cobros con PIX y en soles van al entorno de pruebas del banco real y **no** se pueden pagar con `POST /v1/sandbox/deposits`.
- En sandbox, el banco de prueba también acepta pagos PIX **sin validar los datos**, por eso `pix_key` y `name` aparecen como opcionales. En live los dos son obligatorios y se validan. Envía siempre los datos completos.
</Callout>

## Recomendaciones [#recomendaciones]

- Guarda el host y la clave en tu configuración, no en el código: pasar a live es cambiar esas dos variables.
- Usa el `livemode` de cada evento para no mezclar datos de prueba con datos reales.
- Antes de salir, recorre la [lista de verificación](/docs/go-live).
