Caso de uso real · despacho contable · CDMX

De 3 horas manuales a 15 minutos:
facturas CFDI 4.0 automatizadas

Un despacho contable en la Ciudad de Mexico con 85 clientes activos genera 200+ PDFs de facturas al mes. Antes lo hacian a mano en Word. Ahora una sola llamada API les devuelve el PDF profesional en menos de 2 segundos.

200+
facturas/mes
85
clientes activos
<2s
por PDF generado
92%
menos tiempo

El problema: generar PDFs de facturas CFDI a mano

Cada mes, el despacho contable de la C.P. Marcela necesita generar entre 180 y 250 facturas para sus 85 clientes. El flujo anterior era asi:

  1. Timbrar el CFDI con el PAC (Finkok) desde su sistema contable.
  2. Abrir una plantilla de Word con el formato de la factura.
  3. Copiar y pegar manualmente: RFC emisor, RFC receptor, razon social, conceptos, totales, UUID del timbrado, sello digital.
  4. Ajustar formato (tablas que se descuadran, paginacion, logo).
  5. Exportar a PDF.
  6. Renombrar el archivo (RFC_UUID.pdf).
  7. Enviar por email al cliente junto con el XML.

Este proceso tardaba entre 8 y 12 minutos por factura. Con 200 facturas al mes, eso son 26 a 40 horas de trabajo manual solo en generar PDFs. Trabajo repetitivo, propenso a errores de copia, y que no aporta valor contable.

La solucion: una llamada API por factura

Con Reportia, el flujo se reduce a 4 pasos automatizados:

1

Timbrar con el PAC

El sistema contable timbra el CFDI 4.0 con Finkok (o cualquier PAC: Facturapi, SW SmartWeb, Digipack). Se obtiene el XML con UUID, sello digital y cadena original. Este paso no cambia.

2

Armar el JSON con los datos del CFDI

Un script en Python parsea el XML timbrado y construye el JSON que Reportia necesita: emisor, receptor, conceptos, impuestos, totales y datos de timbrado.

3

POST a /v1/render

Una sola llamada HTTP. Reportia recibe el JSON, aplica la plantilla de factura (con logo, colores del despacho, pie de pagina legal) y devuelve el PDF en menos de 2 segundos.

4

Email automatico al cliente

El script adjunta el PDF + XML al email y lo envia. El cliente recibe su factura profesional sin que nadie toque nada. Todo el loop tarda 5 segundos por factura.

Ejemplo de codigo: del XML al PDF

Asi se ve el script en Python que conecta el PAC con Reportia. El despacho de Marcela lo corre en un cron cada noche a las 11pm, procesando todas las facturas del dia:

import requests
import xml.etree.ElementTree as ET

# 1. Parsear el XML timbrado del PAC
tree = ET.parse("cfdi_timbrado.xml")
ns = {"cfdi": "http://www.sat.gob.mx/cfd/4",
      "tfd":  "http://www.sat.gob.mx/TimbreFiscalDigital"}

comp = tree.getroot()
emisor = comp.find("cfdi:Emisor", ns)
receptor = comp.find("cfdi:Receptor", ns)
conceptos = comp.findall(".//cfdi:Concepto", ns)
timbre = comp.find(".//tfd:TimbreFiscalDigital", ns)

# 2. Armar el JSON para Reportia
data = {
    "template": "factura",
    "format": "pdf",
    "data": {
        "serie": comp.get("Serie", "A"),
        "folio": comp.get("Folio", "001"),
        "fecha": comp.get("Fecha"),
        "emisor": {
            "rfc": emisor.get("Rfc"),
            "nombre": emisor.get("Nombre"),
            "regimen": emisor.get("RegimenFiscal")
        },
        "receptor": {
            "rfc": receptor.get("Rfc"),
            "nombre": receptor.get("Nombre"),
            "uso_cfdi": receptor.get("UsoCFDI"),
            "domicilio_fiscal": receptor.get("DomicilioFiscalReceptor")
        },
        "conceptos": [
            {
                "descripcion": c.get("Descripcion"),
                "cantidad": float(c.get("Cantidad")),
                "precio_unitario": float(c.get("ValorUnitario")),
                "importe": float(c.get("Importe")),
                "clave_sat": c.get("ClaveProdServ")
            }
            for c in conceptos
        ],
        "subtotal": float(comp.get("SubTotal")),
        "iva": float(comp.get("SubTotal")) * 0.16,
        "total": float(comp.get("Total")),
        "uuid": timbre.get("UUID") if timbre is not None else "",
        "sello_sat": (timbre.get("SelloSAT") or "")[:20] + "...",
        "moneda": comp.get("Moneda", "MXN"),
        "metodo_pago": comp.get("MetodoPago", "PUE"),
        "forma_pago": comp.get("FormaPago", "03")
    }
}

# 3. Generar el PDF con Reportia
resp = requests.post(
    "https://reportia.4l3.org/v1/render",
    json=data,
    timeout=10
)

# 4. Guardar el PDF
filename = f"{data['data']['receptor']['rfc']}_{data['data']['uuid']}.pdf"
with open(filename, "wb") as f:
    f.write(resp.content)

print(f"Factura generada: {filename} ({len(resp.content)//1024} KB)")

Anatomia de la factura generada

El PDF que Reportia genera incluye todos los elementos que el SAT requiere para una representacion impresa de CFDI 4.0:

Encabezado

  • Logo del despacho
  • Datos del emisor (RFC, razon social, regimen fiscal)
  • Datos del receptor (RFC, nombre, uso CFDI, domicilio fiscal)
  • Serie, folio y fecha de emision

Cuerpo

  • Tabla de conceptos con clave SAT, descripcion, cantidad, precio unitario, importe
  • Desglose de impuestos (IVA 16%, retenciones si aplica)
  • Subtotal y total en MXN
  • Metodo de pago, forma de pago, moneda

Pie de timbrado

  • UUID del timbre fiscal
  • Sello digital del SAT (truncado)
  • Cadena original del complemento
  • Fecha y hora de timbrado

Personalizacion

  • Colores corporativos del despacho
  • Pie de pagina legal configurable
  • QR code opcional para verificacion SAT
  • Layout responsive (carta o A4)

Resultados despues de 3 meses

Antes (manual)

  • 8-12 min por factura
  • 26-40 horas/mes en PDFs
  • Errores de captura en ~5% de facturas
  • Formato inconsistente entre facturas
  • Auxiliar contable dedicada solo a esto

Despues (Reportia)

  • 5 segundos por factura (end-to-end)
  • 15 minutos/mes (cron nocturno)
  • 0 errores de captura (datos del XML)
  • Formato identico en todas las facturas
  • Auxiliar reasignada a atencion al cliente

El ahorro directo es claro: de 30+ horas mensuales a 15 minutos. Pero el impacto real esta en la calidad y consistencia. Cada factura sale identica, con todos los campos del CFDI 4.0 en su lugar, sin errores de dedo, sin tablas descuadradas.

El costo: $9 USD/mes en el plan Pro de Reportia (1,000 PDFs). Antes del cambio, el despacho pagaba $4,500 MXN/mes (aprox. $250 USD) en horas de la auxiliar dedicada a esta tarea. El ROI es inmediato.

Flujo completo: del timbrado al email

Este es el flujo end-to-end que corre en el cron nocturno del despacho:

11:00 PM Cron arranca el script de facturacion
11:00:02 Lee XMLs timbrados del dia desde carpeta del PAC
11:00:05 Por cada XML: parsea, arma JSON, POST a Reportia /v1/render
11:03:20 200 PDFs generados. Emails enviados con PDF + XML adjuntos
11:03:25 Log guardado. Resumen enviado a la C.P. Marcela por email

3 minutos y 25 segundos. Las 200 facturas del dia, generadas, enviadas y logueadas. Sin intervencion humana.

Plantilla personalizada del despacho

El despacho de Marcela usa una plantilla custom que hicieron en el builder visual de Reportia. Incluye:

  • Logo del despacho en esquina superior izquierda
  • Colores corporativos (azul marino + gris)
  • Tabla de conceptos con bordes alternados para legibilidad
  • Seccion de timbrado con UUID y sello en gris claro (no distrae pero cumple requisitos SAT)
  • Pie de pagina con datos de contacto del despacho y leyenda fiscal
  • Formato carta (216x279mm) que es el estandar en Mexico

La plantilla se creo una vez en el builder y se referencia por ID en cada llamada API. Si el despacho cambia de logo o colores, solo actualizan la plantilla en el builder y todas las facturas futuras salen con el nuevo diseno.

Compatibilidad con PACs mexicanos

Reportia no timbra CFDIs (eso lo hace tu PAC). Lo que hace es tomar los datos del CFDI ya timbrado y generar el PDF profesional. Funciona con cualquier PAC que genere XML valido de CFDI 4.0:

Finkok
El mas popular en despachos
Facturapi
API-first para devs
SW SmartWeb
Timbrado masivo
Digipack
ERP integration

El XML del CFDI 4.0 es un estandar del SAT. No importa que PAC uses: el XML tiene la misma estructura y Reportia puede parsearlo para generar el PDF.

Costos y planes para despachos contables

Dependiendo del volumen de facturas de tu despacho:

Plan Precio PDFs/mes Ideal para
Free $0 50 Probar antes de comprar
Pro $9 USD/mes 1,000 Despacho con 20-80 clientes
Scale $29 USD/mes 10,000 Despacho grande o facturacion masiva
Lifetime $49 pago unico 1,000/mes para siempre Despacho que quiere pagar una vez

Para un despacho como el de Marcela (200 facturas/mes), el plan Pro a $9 USD es mas que suficiente. El Lifetime $49 es la opcion mas economica a largo plazo: un solo pago y nunca mas te preocupas.

FAQ

Preguntas frecuentes sobre facturacion

Reportia timbra CFDIs ante el SAT?

No. Reportia genera el PDF visual profesional de tu factura. El timbrado lo hace tu PAC (Finkok, Facturapi, SW, etc.). Reportia complementa al PAC dandole formato visual al CFDI ya timbrado. Piensa en Reportia como la "impresora bonita" de tus XMLs.

Que datos necesito para generar el PDF?

Los mismos que ya tienes en el XML timbrado: emisor (RFC, razon social, regimen fiscal), receptor (RFC, nombre, uso CFDI, domicilio fiscal), conceptos (descripcion, cantidad, precio unitario, clave SAT), totales (subtotal, IVA, total), y datos de timbrado (UUID, sello, cadena original).

Puedo personalizar el diseno del PDF?

Si. Puedes usar la plantilla pre-construida de factura o crear la tuya con el builder visual (HTML+CSS). Cambias logo, colores, layout, fuentes, pie de pagina. La plantilla se guarda y se referencia por ID en cada llamada API.

Funciona con mi sistema contable actual?

Si tu sistema genera XMLs de CFDI 4.0 (que es el estandar del SAT desde enero 2022), funciona. Reportia es una API REST: acepta JSON y devuelve PDF. No importa si usas CONTPAQi, Aspel, un ERP a medida o un script propio. Si puedes hacer una llamada HTTP, funciona.

Automatiza tus facturas hoy mismo

50 PDFs/mes gratis sin tarjeta. Genera tu primera factura en menos de 30 segundos.