La forma de una factura electrónica de la UE, y por qué apila dos formatos
Una factura electrónica moderna en la UE contiene dos documentos dentro de un solo archivo:
- Un PDF/A-3 legible por una persona: número de factura, líneas, totales y marca del proveedor. La especificación PDF/A-3 (ISO 19005-3) es la única variante de PDF/A que permite adjuntos de archivo arbitrarios dentro del envoltorio de archivo.
- Un adjunto CII XML EN 16931 dentro de ese PDF: la misma factura expresada como datos estructurados que la automatización de cuentas por pagar, las importaciones ERP y los sistemas de autoridades fiscales pueden procesar sin OCR.
Factur-X (Francia) y ZUGFeRD (Alemania) son la misma idea con nombres nacionales distintos. Ambos adjuntan un XML Cross-Industry Invoice (CII) EN 16931 a un envoltorio PDF/A-3. ZUGFeRD es obligatorio para la recepción de facturas B2B alemanas desde 2025; Factur-X se está incorporando de forma gradual como formato obligatorio para la emisión B2B en Francia durante 2026-2027.
Si en 2026 envía facturas a clientes franceses o alemanes, uno de estos dos formatos deja de ser opcional.
Por qué generarlo desde cero duele, y por qué gPdf lo reduce a un endpoint
Montar todo esto desde cero implica:
- Generar los bytes PDF: composición, fuentes y maquetación.
- Generar por separado el CII XML, ajustado a EN 16931.
- Configurar correctamente el namespace XMP de PDF/A-3 (
urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#para Factur-X; el namespace de ZUGFeRD 2.x es distinto). - Integrar el XML con
AFRelationship="Alternative"según la especificación. - Marcar correctamente el archivo integrado en el array
/AFde PDF/A-3. - Validar el resultado con veraPDF (capa PDF/A) Y Mustang (capa CII XML): ambos deben pasar.
Un equipo típico se equivoca dos veces antes de que el resultado pase en ambos motores. La API de gPdf concentra los seis pasos en una sola llamada POST /api/v1/e-invoice/render. Usted proporciona:
settings.e_invoice.standard:factur_xozugferdsettings.e_invoice.xml.content: su CII XMLpages[]: la maquetación visible de la factura- todo lo demás se emite automáticamente con los metadatos PDF/A-3 correctos.
Consulte el §5 de la referencia de E-Invoice API para ver el esquema completo de la solicitud, los modos de validación (basic frente a strict) y el ciclo de vida asíncrono de los trabajos en validación estricta.
Verificar la salida: el patrón de auditoría
Que un proveedor diga “sí, nuestro PDF pasa PDF/A-3” no vale de mucho si el auditor utiliza los motores de referencia. El patrón con nivel de auditoría es:
- Genere la factura electrónica mediante
POST /api/v1/e-invoice/render. - Suba el PDF resultante al validator, que ejecuta:
- veraPDF: la implementación oficial de referencia mantenida por la PDF Association. Conformidad PDF/A-3.
- Mustang: proyecto alemán open source (mustangproject.org) usado de facto como verificador de referencia para Factur-X / ZUGFeRD; extrae el CII XML integrado, lo valida contra EN 16931 Schematron y reporta campo por campo.
- Ambos informes vuelven lado a lado en la misma interfaz. Ambos deben mostrar “Pass” antes de enviarlo a la automatización de cuentas por pagar en producción.
Este patrón importa porque:
- Un PDF que pasa veraPDF pero falla Mustang significa que el envoltorio es conforme, pero el XML interno está mal formado: el sistema de cuentas por pagar rechaza la factura al recibirla.
- Un PDF que pasa Mustang pero falla veraPDF significa que el XML está bien, pero el envoltorio de archivo no cumple PDF/A-3: el archivo a largo plazo lo rechaza.
- Cualquiera de los dos fallos rompe el flujo de extremo a extremo. Ambos deben pasar.
El validador es gratuito, no requiere inicio de sesión y produce informes JSON que puede adjuntar a sus evidencias de QA. Es el mismo patrón de doble motor que utilizan internamente las grandes firmas de auditoría; gPdf simplemente lo aloja de forma pública.
Más allá de Factur-X / ZUGFeRD
Si también trabaja con:
- FatturaPA (Italia, obligatorio desde 2019): ya está en la hoja de ruta del validador.
- Peppol BIS 3.0 UBL (países nórdicos / Benelux / cada vez más transfronterizo): hoja de ruta.
- KSeF (Polonia, obligatorio en 2026): hoja de ruta.
El endpoint de factura electrónica de gPdf ampliará la cobertura a medida que cada formato pase de “hoja de ruta temprana” a “disponible en el validador y el renderizador”. La forma se mantiene: una solicitud JSON, el namespace XMP correcto y AFRelationship gestionados internamente, y ambos motores verificando antes de enviar a producción.
TL;DR
- Una llamada API → PDF/A-3 + CII XML EN 16931 integrado.
- Elija Factur-X o ZUGFeRD mediante
settings.e_invoice.standard. - Verifique con el validator: veraPDF + Mustang en paralelo, gratis.
- Ambos motores deben pasar. La API de gPdf está diseñada para que lo hagan; el validador es el comprobante público.