Erros comuns de UBL e Peppol BIS 3.0 e como corrigi-los
Guia prático sobre os erros de validação UBL mais comuns e as regras Peppol BIS 3.0, incluindo códigos de erro BR e correções.
Por que os ficheiros UBL não passam a validação Peppol
As faturas UBL (Universal Business Language) transmitidas através da rede Peppol devem passar por três camadas de validação: esquema XSD UBL 2.1, regras de negócio EN 16931 (códigos BR) e regras CIUS Peppol BIS 3.0 (códigos PEPPOL).
Cada camada pode rejeitar uma fatura. Este guia abrange os erros mais comuns que as equipas encontram ao gerar ou enviar faturas Peppol em produção.
Os códigos de erro seguem um padrão estruturado: BR-XX para regras de negócio EN 16931, PEPPOL-XX para regras específicas do Peppol e UBL-SR-XX para regras de sintaxe UBL.
Erros comuns e correções
Os erros de validação UBL/Peppol mais frequentemente reportados:
BR-01: A fatura deve ter um identificador de especificação
O elemento <cbc:CustomizationID> está em falta ou vazio. Para Peppol BIS 3.0 deve conter exatamente: urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0
BR-02: A fatura deve ter um número de fatura
O elemento <cbc:ID> está em falta ou vazio. O número de fatura deve ser único e não pode consistir apenas em espaços.
BR-04: A data da fatura é obrigatória
<cbc:IssueDate> está em falta. A data deve ser especificada no formato YYYY-MM-DD, ex.: 2026-01-15. O formato DD/MM/AAAA não é aceite.
Erros de estrutura e formato
Blog.post12.s3.intro
Campos obrigatórios em falta em fornecedores/compradores
Tanto AccountingSupplierParty como AccountingCustomerParty devem conter PartyName, PostalAddress (com CountryIdentificationCode) e PartyTaxScheme (com TaxSchemeID=VAT e CompanyID).
ID de TaxScheme inválido
O elemento TaxScheme/ID deve conter exatamente 'VAT', não 'IVA', 'TVA', 'MwSt' ou outras variantes locais.
Cálculo do total da linha de fatura
LineExtensionAmount deve ser igual a Quantity × Price.PriceAmount (menos quaisquer descontos). A soma de todas as linhas deve corresponder ao TaxExclusiveAmount em LegalMonetaryTotal.
Erros de IVA e fiscais
Blog.post12.s4.intro
Código de categoria de IVA inválido
UBL/EN 16931 define códigos de categoria específicos: S (Standard), Z (Taxa zero), E (Isento), AE (Autoliquidação), K (Fornecimento intracomunitário CE), G (Exportação fora da UE), O (Não tributável), L (Ilhas Canárias), M (Ceuta/Melilla). Não use um código que não esteja nesta lista.
Desagregação de IVA em falta
O elemento TaxTotal deve conter pelo menos um TaxSubtotal para cada categoria de IVA distinta aplicada. Uma fatura com taxas de IVA mistas necessita de entradas TaxSubtotal separadas para cada uma.
Blog.post12.s4.e3.label
Blog.post12.s4.e3.desc
Valide as suas faturas UBL gratuitamente
O ValidateFin realiza uma validação completa em três fases: esquema XSD, regras de negócio EN 16931 e regras CIUS Peppol BIS 3.0. Os erros são mostrados com o seu código BR/PEPPOL e o caminho XML incorreto.
Abrir validador UBLPerguntas frequentes
Qual é a diferença entre os códigos de erro BR e PEPPOL?
Os códigos BR (ex.: BR-01, BR-CO-15) provêm da norma EN 16931 e aplicam-se a todas as faturas eletrónicas conformes na Europa. Os códigos PEPPOL (ex.: PEPPOL-EN16931-R004) são regras adicionais específicas do Peppol BIS 3.0 que se aplicam apenas a transmissões através da rede Peppol.
Posso enviar uma fatura UBL sem a rede Peppol?
Sim. UBL pode ser enviado diretamente através de API, e-mail, portal ou outros canais. As regras Peppol BIS 3.0 aplicam-se apenas à rede Peppol. Para outros canais, pode apenas precisar de cumprir EN 16931 e CIUS nacionais.
Como arredondo corretamente os montantes de IVA em UBL?
EN 16931 permite uma tolerância de arredondamento de ±0,01€ por linha. Para o total, deve somar todos os montantes das linhas e depois arredondar para 2 casas decimais. Evite usar aritmética de vírgula flutuante para cálculos financeiros.
O CustomizationID é obrigatório para todas as faturas UBL?
CustomizationID é obrigatório para Peppol BIS 3.0. Para outros CIUS (como XRechnung ou implementações Peppol nacionais) é necessário um valor diferente. Verifique sempre o CIUS específico do seu 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