clinica-dental/docs/04-fase-saas/MGN-016-billing/README.md
rckrdmrd 27b4e7bccf [DOCS] feat: Add phase 04-SAAS and 05-IA documentation structure
- Update docs/_MAP.md with new phase references
- Add docs/04-fase-saas/ phase structure
- Add docs/05-fase-ia/ phase structure

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 00:28:18 -06:00

233 lines
6.5 KiB
Markdown

---
id: MGN-016-billing
title: Modulo Billing - Suscripciones para Clinica Dental
type: ModuleOverview
status: Draft
version: 1.0.0
created_date: 2026-01-13
updated_date: 2026-01-13
module: billing
priority: P0
normativas: [NOM-013-SSA2-2015, CFDI-4.0]
---
# MGN-016: Billing - Sistema de Facturacion y Suscripciones Dentales
## Resumen Ejecutivo
El modulo Billing implementa el sistema de facturacion y suscripciones para consultorios y clinicas dentales, integrando Stripe Billing como proveedor de pagos. Permite gestionar suscripciones por tipo de consultorio (individual, grupal, centro dental), periodos de prueba, upgrades/downgrades y facturacion automatica con soporte para CFDI 4.0.
---
## Objetivos
### Objetivo Principal
Implementar un sistema de billing completo para clinicas dentales que permita:
- Suscripciones mensuales y anuales por tipo de consultorio
- Planes diferenciados por numero de sillones dentales
- Facturacion automatica recurrente con CFDI 4.0
- Portal de cliente self-service via Stripe
### Objetivos Secundarios
- Sincronizacion bidireccional con Stripe via webhooks
- Soporte para periodos de prueba (14 dias)
- Manejo de pagos fallidos y dunning
- Historial de facturas accesible para clinicas
- Facturacion adicional por servicios especiales
---
## Planes para Clinica Dental
| Plan | Precio/mes | Sillones | Usuarios | Storage | Features |
|------|------------|----------|----------|---------|----------|
| **Consultorio** | $499 MXN | 1 | 3 | 5 GB | Odontograma, Citas, Expedientes |
| **Clinica** | $1,499 MXN | 5 | 15 | 25 GB | + Ortodoncia, Radiografias, Reportes |
| **Centro Dental** | $3,999 MXN | Ilimitado | Ilimitado | 100 GB | + IA, WhatsApp, Multi-sucursal |
---
## Alcance
### Incluido (In Scope)
| Caracteristica | Descripcion | Prioridad |
|----------------|-------------|-----------|
| Stripe Billing | Integracion completa con Stripe | P0 |
| Planes dentales | Consultorio, Clinica, Centro | P0 |
| Suscripciones | Crear, actualizar, cancelar | P0 |
| Webhooks Stripe | Recibir y procesar eventos | P0 |
| Portal cliente | Redirect a Stripe Customer Portal | P0 |
| CFDI 4.0 | Generacion de facturas fiscales | P0 |
| Pagos OXXO | Soporte para pago en efectivo | P1 |
| Invoices | Historial con PDF | P1 |
### Excluido (Out of Scope)
| Caracteristica | Razon | Fase Futura |
|----------------|-------|-------------|
| Multi-currency | Solo MXN por ahora | Fase 2 |
| Servicios adicionales | Pagos one-time | Fase 2 |
| Facturacion por tratamiento | Complejidad | Fase 3 |
---
## Arquitectura
### Diagrama de Integracion
```
+-------------------+ +-------------------+ +-------------------+
| Frontend |---->| Billing API |---->| Stripe API |
| (Checkout) | | (NestJS) | | |
+-------------------+ +-------------------+ +-------------------+
| |
+-------+---------+ |
| | v
+----------+ +-----------+ +-------------+
| Plans DB | | Invoices | | Webhooks |
| (Dental) | | + CFDI | | (events) |
+----------+ +-----------+ +-------------+
|
v
+-----------+
| SAT/CFDI |
| Timbrado |
+-----------+
```
### Flujo de Suscripcion Dental
```
1. Dentista selecciona plan en frontend
|
2. Frontend llama POST /billing/checkout
|
3. Backend crea Checkout Session en Stripe
|
4. Backend retorna URL de Stripe Checkout
|
5. Frontend redirige a Stripe Checkout
|
6. Dentista paga (tarjeta o OXXO)
|
7. Stripe envia webhook: checkout.session.completed
|
8. Backend crea/actualiza subscription en DB
|
9. Backend activa features del plan (sillones, odontograma, etc.)
|
10. Clinica operativa con funcionalidades activas
```
---
## Facturacion CFDI 4.0
### Datos Requeridos
- RFC de la clinica
- Razon social
- Regimen fiscal
- Uso CFDI (G03 - Gastos en general)
- Codigo postal fiscal
### Flujo de Facturacion
```
1. Stripe cobra suscripcion
|
2. Webhook notifica pago exitoso
|
3. Backend genera pre-CFDI
|
4. Envia a PAC para timbrado
|
5. Almacena XML y PDF
|
6. Notifica a clinica via email
```
---
## Dependencias
### Modulos Prerequisito
| Modulo | Tipo | Descripcion |
|--------|------|-------------|
| MGN-001-auth | Requerido | Autenticacion JWT |
| MGN-002-users | Requerido | Usuario owner clinica |
| MGN-004-tenants | Requerido | Contexto multi-tenant |
| MGN-007-audit | Requerido | Logs de cambios |
### Servicios Externos
| Servicio | Proposito | Requerido |
|----------|-----------|-----------|
| Stripe | Billing y pagos | Si |
| PAC CFDI | Timbrado facturas | Si |
| Redis | Cache de planes | Opcional |
---
## Seguridad y Normativas
| Medida | Implementacion |
|--------|----------------|
| PCI Compliance | No almacenar datos de tarjeta |
| Webhook Signature | Verificar Stripe-Signature |
| CFDI Seguro | Almacenar XMLs firmados |
| Access Control | Solo owner gestiona billing |
| NOM-013-SSA2-2015 | Registro de servicios |
| LFPDPPP | Proteccion datos clinica |
---
## Configuracion
### Variables de Entorno
```bash
# Stripe
STRIPE_SECRET_KEY=sk_live_xxx
STRIPE_PUBLISHABLE_KEY=pk_live_xxx
STRIPE_WEBHOOK_SECRET=whsec_xxx
# Billing Config Dental
BILLING_TRIAL_DAYS=14
BILLING_DEFAULT_PLAN=consultorio
BILLING_SUCCESS_URL=https://clinica.ejemplo.com/billing/success
BILLING_CANCEL_URL=https://clinica.ejemplo.com/billing/cancel
# CFDI
CFDI_PAC_URL=https://pac.ejemplo.com
CFDI_PAC_USER=xxx
CFDI_PAC_PASSWORD=xxx
```
---
## Indices
- [Requerimientos Funcionales](requerimientos/INDICE-RF-BILLING.md)
- [Especificaciones Tecnicas](especificaciones/INDICE-ET-BILLING.md)
- [Historias de Usuario](historias-usuario/INDICE-US-BILLING.md)
- [Trazabilidad](implementacion/TRACEABILITY.yml)
---
## Referencias
- [erp-core/MGN-016-billing](../../../../../erp-core/docs/04-fase-saas/MGN-016-billing/) - Origen
- [Stripe Billing Docs](https://stripe.com/docs/billing) - Documentacion oficial
- [SAT CFDI 4.0](https://www.sat.gob.mx/consultas/42214/cfdi-version-4.0) - Especificacion
---
*Modulo: MGN-016-billing | Clinica Dental | Version: 1.0.0*
*Propagado desde erp-core via erp-clinicas*
*Actualizado: 2026-01-13*