6.9 KiB
6.9 KiB
RF-MGN-015-004: Facturación y Cobros
Módulo: MGN-015 - Billing y Suscripciones Prioridad: P0 (MVP para SaaS) Story Points: 13 Estado: Definido Fecha: 2025-11-24
Descripción
El sistema debe generar facturas automáticamente por las suscripciones contratadas, procesar cobros mediante los métodos de pago registrados, y mantener un historial completo de transacciones. En México, debe soportar la generación de CFDI (Comprobante Fiscal Digital por Internet).
Actores
- Actor Principal: Sistema (generación automática)
- Actores Secundarios:
- Tenant Owner (consulta y descarga)
- Gateway de Pagos (procesamiento)
- PAC (timbrado CFDI para México)
Precondiciones
- Suscripción activa con plan de pago
- Método de pago válido registrado
- Datos fiscales del tenant (para CFDI)
- Integración con gateway de pagos activa
Flujo Principal - Facturación Automática
- Sistema detecta suscripción próxima a renovar (1 día antes)
- Sistema genera factura con líneas correspondientes:
- Plan de suscripción (período)
- Uso adicional si aplica
- Descuentos/cupones activos
- Sistema calcula subtotal, impuestos, total
- Sistema intenta cobrar al método de pago principal
- Si cobro exitoso:
- Registra pago en
billing.payments - Marca factura como
paid - Genera CFDI si es requerido
- Envía factura por email
- Registra pago en
- Si cobro falla: Inicia flujo de reintentos
Flujos Alternativos
FA-1: Cobro Fallido
- Gateway rechaza transacción
- Sistema registra error en factura (
billing_errors) - Sistema marca factura como
pending - Sistema notifica al tenant owner
- Sistema programa reintento (día 1, 3, 7)
- Si todos fallan: Suspende suscripción
FA-2: Factura con Cupón
- Sistema detecta cupón activo en suscripción
- Sistema aplica descuento según tipo (porcentaje/fijo)
- Sistema reduce monto a cobrar
- Línea de descuento aparece en factura
- Sistema actualiza usos restantes del cupón
FA-3: Solicitud de CFDI
- Tenant owner solicita CFDI de factura
- Sistema valida datos fiscales completos (RFC, razón social)
- Sistema genera XML según especificación SAT
- Sistema envía a PAC para timbrado
- PAC retorna UUID y sello
- Sistema almacena XML timbrado
- Usuario puede descargar PDF y XML
FA-4: Nota de Crédito
- Admin genera nota de crédito (reembolso parcial/total)
- Sistema crea factura con amount negativo
- Sistema procesa reembolso vía gateway
- Si CFDI: Genera comprobante de egreso
- Crédito disponible para próximas facturas
Reglas de Negocio
- RN-1: Facturas se generan 1 día antes de renovación
- RN-2: Cobro automático usa método de pago principal
- RN-3: IVA 16% para clientes en México
- RN-4: CFDI obligatorio para clientes con RFC
- RN-5: Facturas pagadas no se pueden modificar
- RN-6: Reembolsos solo mediante nota de crédito
- RN-7: Historial de facturas disponible por 5 años
- RN-8: Numeración consecutiva por serie
Criterios de Aceptación
- Sistema genera facturas automáticamente por renovación
- Sistema procesa cobros al método de pago principal
- Tenant owner puede ver historial de facturas
- Tenant owner puede descargar PDF de facturas
- Sistema genera CFDI para clientes mexicanos
- Tenant owner puede descargar XML de CFDI
- Sistema aplica cupones/descuentos correctamente
- Sistema maneja reintentos de cobros fallidos
- Admin puede generar notas de crédito
- Sistema envía facturas por email
Entidades Involucradas
- Principales:
- billing.invoices (id, tenant_id, subscription_id, status, subtotal, tax, total)
- billing.invoice_lines (id, invoice_id, description, quantity, unit_price)
- billing.payments (id, invoice_id, amount, status, gateway_response)
- Relacionadas:
- billing.subscriptions (suscripción facturada)
- billing.payment_methods (método de cobro)
- billing.coupon_redemptions (descuentos aplicados)
Estados de Factura
draft → pending → paid
↓
overdue → void
paid → refunded (nota de crédito)
| Estado | Descripción |
|---|---|
| draft | En preparación |
| pending | Emitida, pendiente de pago |
| paid | Pagada |
| overdue | Vencida (pago fallido) |
| void | Anulada |
| refunded | Reembolsada |
Estructura de Factura
┌────────────────────────────────────────────────┐
│ FACTURA #INV-2024-0001 │
│ Fecha: 2024-01-15 │
├────────────────────────────────────────────────┤
│ Cliente: Demo Company S.A. de C.V. │
│ RFC: DCO123456ABC │
├────────────────────────────────────────────────┤
│ Concepto Cant. Precio Total │
│ ───────────────────────────────────────────── │
│ Plan Professional 1 $499.00 $499.00 │
│ (Ene 15 - Feb 14) │
│ Usuarios adicionales 2 $50.00 $100.00 │
│ Descuento PROMO20 -1 20% -$119.80│
├────────────────────────────────────────────────┤
│ Subtotal: $479.20 │
│ IVA 16%: $76.67 │
│ TOTAL: $555.87 │
├────────────────────────────────────────────────┤
│ UUID CFDI: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx│
└────────────────────────────────────────────────┘
Referencias
- RF-MGN-015-002 - Suscripciones
- RF-MGN-015-003 - Métodos de Pago
- Especificación CFDI 4.0 SAT
Notas Técnicas
- Tablas:
billing.invoices,billing.invoice_lines,billing.payments - Numeración: Serie + consecutivo (INV-2024-0001)
- CFDI: Integración con PAC (Facturama, SW Sapien, etc.)
- Gateway: Stripe para cobros, webhook para confirmaciones
- Jobs:
- Generación de facturas (diario, 1 día antes de renovación)
- Reintentos de cobro (días 1, 3, 7)
- Envío de recordatorios (3 días antes de vencimiento)
Dependencias
- RF Requeridos:
- RF-MGN-015-002 (Suscripciones)
- RF-MGN-015-003 (Métodos de Pago)
- Bloqueante para: RF-MGN-015-005 (Registro de Uso)