Cumplimiento de la norma EN 16931: Peppol, Factur-X y ZUGFeRD evaluados frente a las reglas oficiales
Ejecutamos los archivos de factura que genera Nordlet a través de las reglas de validación oficiales de la norma EN 16931. Los archivos de Peppol y rumanos pasan la validación. Los archivos Factur-X incumplen dos reglas, y este artículo las detalla.
La norma EN 16931 es el estándar europeo para el contenido de una factura electrónica. Define los términos comerciales que contiene una factura (vendedor, comprador, líneas, desglose de IVA, totales) y las reglas de negocio que dichos términos deben cumplir, por ejemplo, que el desglose de IVA sume el total de la factura. El estándar se puede redactar en dos formatos XML: UBL 2.1 y UN/CEFACT Cross Industry Invoice (CII).
La mayoría de los formatos europeos de factura electrónica se basan en la norma EN 16931:
- Peppol BIS Billing 3.0 es la norma EN 16931 en UBL con reglas adicionales de Peppol.
- e-Factura rumana (CIUS-RO) es la norma EN 16931 en UBL con reglas adicionales de Rumanía.
- Factur-X (Francia) y ZUGFeRD 2.3 (Alemania) contienen la norma EN 16931 en CII. En el perfil "EN 16931", que genera Nordlet, ambos formatos utilizan el mismo XML.
Si una factura incumple una regla de la norma EN 16931, también incumple todos los formatos basados en ella.
Cómo realizamos la comprobación
La Comisión Europea remite a las reglas de validación publicadas en GitHub por el comité técnico de facturación electrónica del CEN (CEN/TC 434). Utilizamos la versión más reciente, la 1.3.17 del 12 de octubre de 2026, tanto para UBL como para CII. Las reglas están escritas en Schematron y compiladas a XSLT, y las ejecutamos con el motor XSLT Saxon-HE 12.5.
Los archivos de factura fueron generados por el código actual de Nordlet a partir de datos de muestra. El vendedor es una empresa lituana; los compradores son una empresa lituana, una empresa alemana y, en el caso de la exportación a través de Peppol, una empresa estadounidense. Las facturas de muestra tienen una línea con un 21% de IVA y una línea al 0% con una nota de exención.
Resultados
| Lo que genera Nordlet | Archivos comprobados | Resultado |
|---|---|---|
| Peppol BIS Billing 3.0 (UBL) | 7: factura nacional, nota de crédito, venta intracomunitaria, exportación, inversión del sujeto pasivo (reverse charge), vendedor no registrado a efectos de IVA, factura en USD con un descuento | Todo correcto: 0 errores, 0 advertencias |
| e-Factura rumana (UBL, CIUS-RO) | 4: factura nacional, nota de crédito, venta intracomunitaria, factura en USD con un descuento | Todo correcto |
| Factur-X / ZUGFeRD (CII, perfil EN 16931) | 4: factura nacional, nota de crédito, venta intracomunitaria, factura en USD con un descuento | Los 4 fallan, 1 error cada uno |
Las dos reglas que incumplen los archivos Factur-X
BR-Z-10: una línea gravada al 0% no debe incluir un motivo de exención
La norma EN 16931 establece categorías de IVA separadas para un tipo del 0% ("Z", zero rated) y para una entrega exenta ("E", exempt). Solo las entregas exentas indican un motivo. La regla BR-Z-10 establece que un desglose de IVA de la categoría "Z" no debe tener un código de motivo de exención (BT-121) ni un texto de motivo de exención (BT-120).
El generador de Factur-X escribe el texto de motivo "Taux zéro" en cada desglose con tipo 0%, por lo que tres de los cuatro archivos fallan. Asimismo, ignora la nota de exención introducida en la línea. El generador de Peppol gestiona la misma línea correctamente: cuando una línea al 0% tiene una nota de exención, la registra como exenta ("E") y utiliza la nota como motivo.
BR-IC-12: una venta intracomunitaria debe indicar el país de entrega
La regla BR-IC-12 establece que, cuando el desglose de IVA pertenece a la categoría "K" (entrega intracomunitaria), el código del país de entrega (deliver-to country code, BT-80) no puede estar vacío. El país de entrega demuestra que las mercancías salieron del país del vendedor.
El generador de Factur-X no incluye un país de entrega, por lo que el archivo intracomunitaria falla. El generador de Peppol indica el país del comprador como el país de entrega para estas operaciones.
Lo que no cubre esta comprobación
- Esquema XML. Ejecutamos únicamente las reglas de negocio, no las comprobaciones de los esquemas (XSD) de UBL y CII.
- Campos que Nordlet no genera. No se ejecutaron las reglas correspondientes a términos que los archivos no contienen. Algunos ejemplos son los cargos a nivel de documento, los importes prepagados, el periodo de facturación y las referencias a pedidos de compra.
- Reglas nacionales adicionales a la norma EN 16931. No comprobamos las reglas de la reforma francesa de facturación electrónica ni las reglas alemanas XRechnung. Las reglas específicas de Peppol se comprueban mediante un script independiente de Nordlet, que utiliza los conjuntos de reglas de OpenPeppol.
- La parte en PDF de Factur-X. Una factura Factur-X es un archivo PDF/A-3 con el XML adjunto. La comprobación abarca exclusivamente el XML.