Saltar al contenido principal

RF40: Usuario solicita factura electrónica

Descripción

Como usuario autenticado que pagó una suscripción, quiero solicitar la factura electrónica (CFDI) de mi pago para deducir el gasto y cumplir mis obligaciones fiscales.

La facturación CFDI requiere el RFC del usuario (RF13) y sus datos fiscales (uso de CFDI, régimen). La emisión se realiza mediante un PAC (Proveedor Autorizado de Certificación) integrado; Finnova relaciona la factura con el pago de Stripe.

CampoValor
MóduloSubscription Module (coordina con Accounting)
ActorUsuario autenticado
EndpointPOST /subscription/invoices
PrecondicionesSesión activa; pago existente facturable; RFC y datos fiscales registrados
PrioridadMedia (post-MVP)
EtapaMVP
Requisitos relacionadosRF13, RF38, RF66

Reglas de negocio

  • RN-40.1 — Solo se factura un pago efectivamente realizado y dentro del plazo fiscal permitido (mismo mes/ejercicio, según reglas del SAT).
  • RN-40.2 — Requiere RFC válido (RF13), régimen fiscal y uso de CFDI.
  • RN-40.3 — La factura se emite vía PAC; Finnova guarda el CFDI (XML + PDF) y lo relaciona con el pago.
  • RN-40.4 — Un mismo pago no se factura dos veces (idempotencia); si ya existe, se reenvía la factura previa.
  • RN-40.5 — Los archivos CFDI se almacenan de forma segura y se entregan por enlace prefirmado/descarga autenticada.

Validaciones de entrada

CampoReglasMensaje de error
paymentIdObligatorio. Pago propio y facturable."El pago no existe o no es facturable."
taxRegimeObligatorio. Catálogo SAT."Selecciona un régimen fiscal válido."
cfdiUseObligatorio. Catálogo SAT."Selecciona un uso de CFDI válido."
RFCDebe existir y ser válido (RF13)."Registra un RFC válido antes de facturar."

Criterios de aceptación

Escenario 1: Emisión de factura exitosa

Dado que tengo RFC y datos fiscales válidos y un pago facturable, Cuando solicito la factura, Entonces el sistema emite el CFDI vía PAC, Y guarda XML y PDF relacionados al pago, Y me responde 201 Created con el enlace de descarga.

Escenario 2: RFC o datos fiscales faltantes

Dado que no tengo RFC registrado, Cuando intento facturar, Entonces el sistema responde 400 con "Registra un RFC válido antes de facturar".

Escenario 3: Pago no facturable o fuera de plazo

Dado que el pago no existe, no es mío o ya pasó el plazo fiscal, Cuando intento facturar, Entonces el sistema responde con un error claro y no emite CFDI.

Escenario 4: Pago ya facturado (idempotencia)

Dado que un pago ya tiene factura, Cuando vuelvo a solicitarla, Entonces el sistema reenvía el CFDI existente sin duplicarlo.

Escenario 5: Error del PAC

Dado que el PAC no responde o rechaza la emisión, Cuando solicito la factura, Entonces el sistema informa el error y permite reintentar, sin marcar el pago como facturado.

Criterios no funcionales

  • CFDI almacenado de forma segura; descarga autenticada.
  • Comunicación TLS 1.2+; datos fiscales tratados como datos personales.

Diagrama de secuencia