erp-core/docs/08-epicas/EPIC-MGN-017-stripe-integration.md

3.4 KiB

EPICA: EPIC-MGN-017 - Integracion Stripe

Metadata

Campo Valor
ID EPIC-MGN-017
Nombre Integracion Stripe para Suscripciones
Modulo billing
Fase Fase 4 - SaaS Platform
Prioridad P0
Estado Backlog
Story Points 34
Sprint(s) Sprint 22-24

Descripcion

Integracion completa con Stripe para gestion de suscripciones por usuario, cobros recurrentes, prorratas automaticas, y webhooks para sincronizacion de estado.


Objetivo de Negocio

  • Automatizar cobros recurrentes por suscripcion
  • Soportar modelo per-seat con prorratas
  • Facilitar cambios de plan (upgrade/downgrade)
  • Mantener sincronizacion bidireccional con Stripe

Historias de Usuario

ID Historia Prioridad SP Estado
US-MGN017-001 Como tenant owner, quiero vincular mi cuenta con Stripe P0 3 Backlog
US-MGN017-002 Como tenant owner, quiero agregar tarjeta de credito P0 5 Backlog
US-MGN017-003 Como sistema, quiero crear suscripcion en Stripe al activar tenant P0 5 Backlog
US-MGN017-004 Como sistema, quiero actualizar cantidad de usuarios en Stripe P0 5 Backlog
US-MGN017-005 Como sistema, quiero procesar webhooks de Stripe P0 8 Backlog
US-MGN017-006 Como sistema, quiero manejar pagos fallidos P0 5 Backlog
US-MGN017-007 Como tenant owner, quiero ver portal de facturacion Stripe P1 3 Backlog

Total Story Points: 34 SP


Criterios de Aceptacion

Funcionales:

  • Crear Customer en Stripe al registrar tenant
  • Agregar/actualizar metodos de pago via Stripe Elements
  • Crear Subscription con quantity = usuarios
  • Actualizar quantity automaticamente al agregar/remover usuarios
  • Procesar webhooks: invoice.paid, payment_failed, subscription.updated, etc.
  • Cancelar suscripcion al final del periodo
  • Redirigir a Stripe Customer Portal

No Funcionales:

  • Webhook retry logic
  • Idempotencia en procesamiento de webhooks
  • Logs de todas las transacciones

Webhooks a Implementar

Evento Accion
customer.subscription.created Registrar suscripcion
customer.subscription.updated Actualizar estado/cantidad
customer.subscription.deleted Marcar suscripcion cancelada
invoice.created Registrar factura draft
invoice.finalized Actualizar factura a open
invoice.paid Marcar factura pagada, activar tenant
invoice.payment_failed Alertar, iniciar dunning
payment_intent.succeeded Registrar pago
payment_intent.payment_failed Registrar intento fallido

Dependencias

Depende de:

  • EPIC-MGN-016 Billing (Ready)
  • EPIC-MGN-004 Tenants (Ready)

Bloquea:

  • EPIC-MGN-018 WhatsApp (feature flag por plan)
  • EPIC-MGN-019 AI Agents (feature flag por plan)

Desglose Tecnico

Database:

  • Tabla: stripe_customers
  • Tabla: stripe_webhook_events

Backend:

  • Service: StripeService
  • Controller: StripeWebhookController
  • Job: SyncStripeDataJob

Integraciones:

  • Stripe SDK (Node.js)
  • Stripe Elements (Frontend)
  • Stripe Customer Portal

Creado por: Requirements-Analyst Fecha: 2025-12-05