ValidateFin
Voltar ao blog
·Atualizado 11 de mar. de 2026·UBL·Por Eliel Nicaise

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 UBL

Perguntas 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