Errores comunes de UBL y Peppol BIS 3.0 y cómo corregirlos
Guía práctica sobre los errores de validación UBL más comunes y las reglas Peppol BIS 3.0, incluyendo códigos de error BR y correcciones.
Por qué los archivos UBL no pasan la validación Peppol
Las facturas UBL (Universal Business Language) transmitidas a través de la red Peppol deben pasar tres capas de validación: esquema XSD UBL 2.1, reglas de negocio EN 16931 (códigos BR) y reglas CIUS Peppol BIS 3.0 (códigos PEPPOL).
Cada capa puede rechazar una factura. Esta guía cubre los errores más comunes que encuentran los equipos al generar o enviar facturas Peppol en producción.
Los códigos de error siguen un patrón estructurado: BR-XX para reglas de negocio EN 16931, PEPPOL-XX para reglas específicas de Peppol y UBL-SR-XX para reglas de sintaxis UBL.
Errores comunes y correcciones
Los errores de validación UBL/Peppol más frecuentemente reportados:
BR-01: La factura debe tener un identificador de especificación
El elemento <cbc:CustomizationID> falta o está vacío. Para Peppol BIS 3.0 debe contener exactamente: urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0
BR-02: La factura debe tener un número de factura
El elemento <cbc:ID> falta o está vacío. El número de factura debe ser único y no puede consistir solo de espacios.
BR-04: La fecha de factura es obligatoria
<cbc:IssueDate> falta. La fecha debe especificarse en formato YYYY-MM-DD, p.ej. 2026-01-15. El formato DD/MM/AAAA no es aceptado.
Errores de estructura y formato
Blog.post12.s3.intro
Campos obligatorios faltantes en proveedores/compradores
Tanto AccountingSupplierParty como AccountingCustomerParty deben contener PartyName, PostalAddress (con CountryIdentificationCode) y PartyTaxScheme (con TaxSchemeID=VAT y CompanyID).
ID de TaxScheme no válido
El elemento TaxScheme/ID debe contener exactamente 'VAT', no 'IVA', 'TVA', 'MwSt' u otras variantes locales.
Cálculo del total de línea de factura
LineExtensionAmount debe ser igual a Quantity × Price.PriceAmount (menos cualquier descuento). La suma de todas las líneas debe coincidir con TaxExclusiveAmount en LegalMonetaryTotal.
Errores de IVA e impuestos
Blog.post12.s4.intro
Código de categoría de IVA no válido
UBL/EN 16931 define códigos de categoría específicos: S (Estándar), Z (Tasa cero), E (Exento), AE (Inversión del sujeto pasivo), K (Suministro intracomunitario CE), G (Exportación fuera de la UE), O (No imponible), L (Islas Canarias), M (Ceuta/Melilla). No uses un código que no esté en esta lista.
Desglose de IVA faltante
El elemento TaxTotal debe contener al menos un TaxSubtotal para cada categoría de IVA distinta aplicada. Una factura con tasas de IVA mixtas necesita entradas TaxSubtotal separadas para cada una.
Blog.post12.s4.e3.label
Blog.post12.s4.e3.desc
Valida tus facturas UBL gratuitamente
ValidateFin realiza una validación completa en tres fases: esquema XSD, reglas de negocio EN 16931 y reglas CIUS Peppol BIS 3.0. Los errores se muestran con su código BR/PEPPOL y la ruta XML incorrecta.
Abrir validador UBLPreguntas frecuentes
¿Cuál es la diferencia entre los códigos de error BR y PEPPOL?
Los códigos BR (p.ej. BR-01, BR-CO-15) provienen de la norma EN 16931 y se aplican a todas las facturas electrónicas conformes en Europa. Los códigos PEPPOL (p.ej. PEPPOL-EN16931-R004) son reglas adicionales específicas de Peppol BIS 3.0 que solo aplican para transmisiones a través de la red Peppol.
¿Puedo enviar una factura UBL sin la red Peppol?
Sí. UBL puede enviarse directamente a través de API, correo electrónico, portal u otros canales. Las reglas Peppol BIS 3.0 solo aplican para la red Peppol. Para otros canales, puede que solo necesites cumplir con EN 16931 y los CIUS nacionales.
¿Cómo redondeo correctamente los importes de IVA en UBL?
EN 16931 permite una tolerancia de redondeo de ±0,01€ por línea. Para el total, debes sumar todos los importes de las líneas y luego redondear a 2 decimales. Evita usar aritmética de punto flotante para cálculos financieros.
¿Es CustomizationID obligatorio para todas las facturas UBL?
CustomizationID es obligatorio para Peppol BIS 3.0. Para otros CIUS (como XRechnung o implementaciones Peppol nacionales) se requiere un valor diferente. Siempre verifica el CIUS específico de tu país de destino.
Blog.post12.faq.q5
Blog.post12.faq.a5
Blog.post12.faq.q6
Blog.post12.faq.a6
Blog.post12.faq.q7
Blog.post12.faq.a7
Blog.post12.faq.q8
Blog.post12.faq.a8
Blog.post12.faq.q9
Blog.post12.faq.a9
Blog.post12.faq.q10
Blog.post12.faq.a10