ADR-009 · Pagos = Flow.cl únicamente (Stripe descartado)¶
Fecha: 2026-04-27 Source:
/srv/projects/cis/cis-plan/DECISIONS.md(do not edit here — re-split desde la fuente)
Contexto: el scaffold de pagos en cis-platform (abril/2026) y luego el microservicio cis-pagos (2026-04-22) incluyeron desde el día 1 un adapter Stripe en paralelo al adapter Flow.cl, bajo el supuesto de que Stripe iba a ser el camino para tarjetas internacionales. Al revisar la operativa real:
- CIS SpA es persona jurídica chilena (RUT chileno, sin entidad legal en US/EU/UK).
- La cuenta bancaria de la empresa es Banco de Chile 045-71260-89 (CLP), compatible con liquidación Flow → cuenta corriente CL.
- Flow.cl ya cubre tarjetas chilenas + transferencia + WebPay + Onepay + tarjeta internacional Visa/Mastercard/Amex (vía gateway local) y soporta CLP nativo sin conversión.
- Stripe Atlas / Stripe en LatAm sigue requiriendo entidad legal en países soportados; abrir una solo para procesar pagos no se justifica para el volumen actual ni el roadmap.
- El adapter Stripe nunca pasó de modo
stub— no hay merchant account, no hay traffic real, no hay reconciliaciones bancarias dependientes de él.
Alternativas consideradas:
- Mantener adapter Stripe dormido (stub) "por si acaso" ← previo. Costo: superficie de código y tests viva, dos webhooks que monitorear, key-rotation overhead, riesgo de bug en cleanup si nadie lo ejerce nunca. Beneficio real: cero hasta que CIS abra entidad extranjera.
- Abrir Stripe Atlas (entidad Delaware) para habilitar Stripe. Costo: ~500 USD setup + ~100 USD/año + complejidad fiscal CL/US. Sin demanda real de clientes pagando con tarjeta extranjera que Flow no pueda procesar.
- Pagos = Flow.cl únicamente ← elegida. Drop limpio del adapter, env vars, tests, vault keys. Si en el futuro CIS tiene entidad extranjera o si aparece un proveedor LatAm-native con cobertura ≥ Flow + tarjeta internacional fluida, se evalúa entonces.
Decisión: el único proveedor de pagos soportado por cis-pagos es Flow.cl. El código, env vars, secretos en vault, fila en CONTRACTS.md, tests y documentación de Stripe se eliminan. La ruta POST /api/v1/webhooks/stripe se mantiene devolviendo HTTP 410 Gone durante 30 días (hasta ~2026-05-27) como cortesía a cualquier request legacy que pudiera llegar desde una URL vieja en cache; pasada esa ventana se borra el handler completo y se devuelve 404 nativo.
Consecuencias:
cis-pagos: borrado deapp/services/stripe_adapter.py, refs enpacks.py/orders.py/health.py/config.py/schemas/order.py, env varsCIS_PAGOS_STRIPE_*en.env*, tests entests/test_orders.pyytests/conftest.py.- Vault:
cis-pagos/STRIPE_SECRET_KEYycis-pagos/STRIPE_WEBHOOK_SECRETquedan obsoletas; eliminar manualmente cuando se cierre el ticket de cleanup. CONTRACTS.md(cis-platform): fila Stripe → cis-platform marcada❌ Removed 2026-04-27.- Schema BD:
payment_orders.providerqueda con dominio efectivo{flow}aunque la columna sigue siendoString(20)(sin constraint nuevo — no vale la migration). - UI portal
/billing/: el botón "Tarjeta internacional (Stripe)" (si existe) debe desaparecer en la próxima iteración del frontend. - Reactivación futura: si se decide retomar Stripe, reverter este ADR con uno nuevo + restaurar adapter desde git history (
git log -- app/services/stripe_adapter.py).
Implementación: aplicado en sesión 2026-04-27. Ver canal cis-note y diff cis-pagos@HEAD.
Relaciones: refina ADR-l-cleanup-2026-04-22 (que había dejado Stripe en 503 + handler preservado bajo if False:). Aquel era shutdown soft; éste es la decisión arquitectural firme.