Testing financiero en sandbox: cómo logramos cero incidentes en producción
Nuestro sandbox es una réplica 1:1 de producción — mismas APIs, mismos edge cases, mismo comportamiento. Time travel, inyección de caos, webhooks determinísticos, y la filosofía de testing detrás de 18 meses de cero incidentes de pago en producción.

La brecha de testing en fintech
La mayoría del testing en fintech usa respuestas mockeadas. La API de pagos retorna { "status": "success" } en tests, y los ingenieros asumen que producción hará lo mismo. Funciona hasta que una clave PIX expira, un boleto se paga dos veces, un webhook no se entrega, o un split parcialmente falla.
Los mocks no detectan nada de esto. No pueden — no modelan la máquina de estados de transacciones financieras. Por eso la mayoría de las fintechs tienen sus peores bugs en producción.
Nuestra filosofía de sandbox: replicación comportamental, no mocking de API
El sandbox de Revenu no es un servidor mock. Es un sistema financiero completo corriendo el mismo código que producción, con la misma lógica de negocio, las mismas máquinas de estado, los mismos edge cases — pero con dependencias externas simuladas.
Qué significa "mismo comportamiento"
- Mismos contratos de API — mismos campos, validaciones, códigos de error, rate limits
- Mismas máquinas de estado — PIX: INITIATED → PROCESSING → CONFIRMED/FAILED
- Mismos webhooks — mismo payload, misma lógica de retry, misma firma HMAC-SHA256
- Mismos edge cases — saldo insuficiente, clave PIX expirada, duplicidad de idempotency key
Qué es diferente
- No se mueve dinero real — pero los asientos de ledger son reales
- Timing determinístico — confirmación configurable: instantánea, demorada, o nunca
- Fallas controlables — trigger de fallas específicas bajo demanda
Time travel: testing de edge cases temporales
Los sistemas financieros están llenos de comportamiento dependiente del tiempo: boletos expiran, liquidaciones tienen schedules D+N, escrows terminan.
La API de time travel
POST /sandbox/time-travel { "advance": "30d" }
Avanza el reloj del sistema 30 días. Todos los procesos dependientes del tiempo se ejecutan: boletos expiran, escrows liberan fondos, accruals corren, sweeps y liquidaciones se ejecutan.
Time travel + webhooks
Todos los eventos que habrían ocurrido en el período intermedio se generan y entregan como webhooks en orden cronológico pero a velocidad acelerada.
Inyección de caos: romper cosas a propósito
API de inyección de fallas
POST /sandbox/chaos { "target": "pix", "failure": "psti_timeout", "probability": 0.5 }
Modos de falla disponibles
PIX: timeout de PSTI, rechazo, DICT indisponible, mantenimiento SPI, colisión EndToEndId.
Boleto: timeout de registro, pago doble, pago después de expiración, pago parcial.
Tarjeta: fondos insuficientes, tarjeta vencida, do not honor, timeout de adquirente, chargeback post-captura.
Webhooks: timeout de entrega, error 5xx, entrega demorada, entrega fuera de orden.
Infraestructura: lag de ledger, colisión de idempotency.
Escenarios pre-construidos
- "Black Friday" — 10x volumen con 5% fallas
- "Caída de PSTI" — PSTI primario caído 15 minutos
- "Rush de fin de mes" — salarios + impuestos + proveedores simultáneamente
- "Ataque de fraude" — PIX rápidos disparando MED 2.0
- "Congelamiento judicial" — Orden SisbaJud en cuenta con transacciones pendientes
Webhooks determinísticos
Modo sincrónico
POST /sandbox/config { "webhooks": { "mode": "synchronous" } }
La llamada API no retorna hasta que el webhook ha sido entregado. Tests determinísticos — sin sleeps, sin polling.
Inspección y replay de webhooks
Consultar los últimos webhooks entregados y re-enviarlos si necesita retestear.
Gestión de datos de test
Seed data API
POST /sandbox/seed { "scenario": "marketplace_with_sellers", "sellers": 5, "transactions": 100 }
Crea escenarios realistas en una llamada.
Reset y snapshots
Reset en < 3 segundos. Guardar y restaurar estados del sandbox.
Integración CI/CD
Pipeline típico: reset → seed → unit tests → integration tests → chaos tests → time travel tests → compliance tests.
Cada API key obtiene un ambiente aislado — 10 suites paralelas sin interferencia.
Análisis what-if
- Testing de estructura de tarifas sin afectar producción
- Optimización de schedules de liquidación con time travel
- Lanzamiento de nuevos métodos de pago con simulación completa
Los números de producción
- Zero incidentes de pago en producción en 18 meses
- 100% paridad de API entre sandbox y producción
- 47 escenarios de caos disponibles
- < 3 segundos de reset
- 4.200+ tests de integración por deploy
- 94% de bugs detectados en sandbox antes de producción
- 23 clientes usando sandbox para análisis what-if
Por qué esto importa
En fintech, bugs en producción causan pérdidas financieras reales. Estos bugs son prevenibles — pero solo si su ambiente de testing se comporta como producción. Mocks no alcanzan. Necesita un sandbox que sea una réplica comportamental de producción.
Eso es lo que construimos. Y 18 meses de zero incidentes lo prueban.