| 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