# 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