clinica-dental/docs/04-fase-saas/MGN-016-billing
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
..
_MAP.md [DOCS] feat: Add phase 04-SAAS and 05-IA documentation structure 2026-01-16 00:28:18 -06:00
README.md [DOCS] feat: Add phase 04-SAAS and 05-IA documentation structure 2026-01-16 00:28:18 -06:00

id title type status version created_date updated_date module priority normativas
MGN-016-billing Modulo Billing - Suscripciones para Clinica Dental ModuleOverview Draft 1.0.0 2026-01-13 2026-01-13 billing P0
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

# 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


Referencias


Modulo: MGN-016-billing | Clinica Dental | Version: 1.0.0 Propagado desde erp-core via erp-clinicas Actualizado: 2026-01-13