Cómo usarlo
Agrega el headerX-Sandbox-Scenario: <escenario> a cualquier llamada de cash-in o cash-out. Sin el header, el sandbox usa el escenario success por defecto.
Escenarios disponibles
Los valores canónicos de escenario son:success, pending_long, rejected, returned, insufficient_funds, bad_clabe, timeout, service_unavailable.
Escenarios de resultado asíncrono
Devuelven201 PENDING de forma síncrona; el estado final llega vía webhook en segundos.
Escenarios de error síncrono
Fallan en la propia respuesta HTTP — no se envía ningún webhook.Restricciones de cash-in:
insufficient_funds y bad_clabe no aplican a cash-in (no hay saldo que debitar, y la CLABE de depósito la genera el sistema). Enviar cualquiera de ellos en un cash-in devuelve 400 con código SCENARIO_NOT_APPLICABLE.Ejemplo: webhook de éxito
Escenariosuccess en un cash-out — el webhook cash_out recibe:
Ejemplo: webhook de rechazo
Escenarioinsufficient_funds — el webhook cash_out recibe:
status: REJECTED, los campos de comprobante (reference, voucher) vienen null — la red SPEI nunca confirmó la transacción. El formato completo del payload está en Visión General de Webhooks.
Restricciones
- El header
X-Sandbox-Scenariofunciona exclusivamente en cuentas sandbox. - Las cuentas de producción que envíen el header reciben:
Buenas prácticas
- Prueba todos los escenarios antes de salir a producción — implementa el manejo de los cuatro status (
LIQUIDATED,PENDING,REJECTED,RETURNED). - Enruta por el campo
event—*.settled,*.rejectedy*.returnedexigen acciones diferentes en tu sistema. - Prueba con retraso — usa
pending_longpara verificar que tu sistema maneja bien la liquidación lenta. - Idempotencia — deduplica por el header
x-event-id; el mismo evento puede reentregarse.