Saltar al contenido principal
CBPay opera sobre dos ambientes: test (sandbox, dinero simulado) y live (producción, dinero real). Están completamente aislados — URLs separadas, API keys separadas, datos separados — y exponen exactamente la misma API: una integración construida contra test funciona en live cambiando la base URL y la key.
Las keys jamás cruzan de ambiente: una key pk_test_ es rechazada por live y una key pk_ de live es rechazada por test. No hay ningún flag que cambiar — el ambiente lo define hacia dónde apuntas tus requests.

Cómo se comporta el ambiente de test

El ambiente de test es 100% autocontenido: todos los corredores (payouts, payins, transferencias, crypto, banking, tarjetas, verificación de identidad) los atiende un simulador interno, así que nunca depende de que un tercero esté disponible. Las operaciones se resuelven de forma determinista:
  • Toda operación que crees se acepta y llega a completed a los pocos segundos (default ~10s), disparando los mismos webhooks que live.
  • Los valores mágicos fuerzan cada resultado alternativo, para que pruebes tu manejo de errores sin adivinar.

Valores mágicos

Los depósitos crypto en test se acreditan desde el dashboard (o por tu administrador de plataforma) — no hay chain real desde dónde enviar. Los retiros, saldos, holds y webhooks se comportan exactamente igual que live.

QRs PIX de ejemplo (payout QR Brasil)

El scan de test valida el BR Code igual que producción, así que necesitas payloads PIX reales. Usa estos (o genera los tuyos con cualquier generador de QR PIX estático):
Monto fijo 75.00 BRL (flujo feliz)
Monto abierto (tú eliges el monto en el confirm)
Monto fijo 80.99 BRL (el confirm falla — valor mágico .99)

Qué difiere de live

  • Ningún dinero, tarjeta, email ni SMS real sale jamás del ambiente de test.
  • Las cuentas nacen verificadas: toda cuenta nueva de test parte con kyc_status: approved, así puedes ejercitar todos los productos de inmediato — sin gate de onboarding. En live las cuentas nacen sin verificar y deben completar su KYC/KYB antes de que salga dinero.
  • Las cuentas nacen pobladas: toda cuenta nueva de test parte con ~6 meses de historia demo realista de todos los productos (payouts, payins, transfers, crypto, swaps, tarjetas, banking, contactos…), con saldos, cartola conciliada y analytics listos para explorar — puedes construir dashboards y reportes antes de crear una sola operación.
  • Los catálogos de bancos son ficticios (Simulated National Bank, …).
  • Las tasas FX son reales (misma fuente que live), así los montos se ven realistas.
  • Los datos de test son totalmente independientes de live: nada se copia desde producción. Trata el dataset de test como desechable.

Modo test desde el dashboard

El switch test/live del dashboard mueve tu sesión entre ambientes con un click — sin registro aparte ni segundo login. Si tu cuenta aún no existe en test, se crea automáticamente la primera vez que cambias — nace verificada y poblada con historia demo, como toda cuenta de test. Las API keys se administran por ambiente: crea tus keys pk_test_ estando en modo test.

Probar webhooks en desarrollo local

Las callback URLs deben ser HTTPS públicas: localhost, IPs privadas y dominios .local se rechazan al crear la suscripción. Para desarrollar en tu máquina usa un túnel HTTPS:
Luego crea la suscripción con esa URL pública (nota la base URL de test):
Las entregas fallidas reintentan hasta 5 veces con backoff incremental, así que si tu túnel se cae unos minutos no pierdes el evento. Verifica siempre la firma HMAC — receta completa en webhooks.

Ejercitar cada flujo en test

Checklist de go-live

Antes de apuntar tu integración al ambiente live:
  • Cambia la base URL a https://api.qbank.cl/platform y la key a tu pk_... de live (emitida en modo live).
  • Las API keys viven en un secrets manager (nunca en el frontend ni en el repo).
  • Toda operación de dinero envía un idempotency_key derivado de TU id interno (no un UUID aleatorio por intento).
  • Ante timeout o 5xx no reintentas con una key nueva: repite con la misma key o consulta el estado con el GET.
  • Verificas la firma HMAC de cada webhook y respondes 2xx rápido (procesa async).
  • Manejas los estados no finales (pending, processing) sin asumir éxito — en live la liquidación tarda más que los 10 segundos simulados.
  • Re-creaste tus suscripciones de webhook en live (las de test no se traspasan).
  • Consultas GET /v1/services para mostrar solo productos habilitados — ver servicios.
  • Concilias a diario con GET /v1/movements o la cartola.
  • Tienes un canal con el equipo CBPay para depósitos unassigned o incidentes.
En live toda operación es real e irreversible una vez completada. Un payout completed ya está en la cuenta del beneficiario; la única vía de reversa es fuera de la API (contactar al equipo CBPay).
No. Las comisiones se cobran contra saldos simulados, así que puedes ejercitar toda la lógica de pricing sin gastar dinero real.
No. Cada ambiente acepta solo sus propias keys (pk_test_ en test, pk_ en live). Una key del otro ambiente devuelve 401.
Toda respuesta lleva el header CBPay-Environment (test o live), y GET /healthz devuelve livemode.
Se genera al crear la cuenta: ~6 meses de operaciones demo deterministas y contablemente consistentes de todos los productos. No es data real ni se copia desde producción — los ambientes no comparten nada. Trata los datos de test como desechables.
Sí — exactamente los mismos eventos, firmados con el secreto de tu suscripción de test. Apúntalos a tu túnel de desarrollo.
Última modificación el 17 de julio de 2026