ValidateFin
Voltar ao blog
UBL9 min de leituraPor 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

O Peppol aplica regras matemáticas rigorosas nos cálculos fiscais.

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

Problemas de identificação do comprador e vendedor.

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.

Referência do comprador em falta ou inválida

BuyerReference (BT-10) é obrigatório no Peppol BIS 3.0. Para o XRechnung alemão, deve ser o Leitweg-ID. Referências em falta ou malformadas causam rejeição do lado do comprador.

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.

O que é uma regra Schematron?

Schematron é uma linguagem de validação XML usada para expressar regras de negócio Peppol. Ao contrário do XSD (que valida a estrutura), o Schematron pode validar relações entre campos cruzados como "se a categoria fiscal é S, então a taxa de imposto deve ser > 0".

Como encontro o meu endpoint Peppol?

O seu endpoint Peppol está registado no seu fornecedor de ponto de acesso. Utiliza um ID de esquema (ex. 0208 para o número de empresa BE) e o seu identificador. Verifique com o seu fornecedor AP.

O ValidateFin pode verificar regras NLCIUS ou XRechnung?

O ValidateFin valida contra o Peppol BIS 3.0 e as regras core EN 16931, que cobrem a maioria dos requisitos NLCIUS e XRechnung. Extensões específicas de cada país podem requerer validação adicional.

O que é BR-CO-10?

BR-CO-10 é uma regra EN 16931 que exige que a soma dos valores líquidos das linhas de fatura seja igual ao valor sem imposto. É uma das regras mais frequentemente não cumpridas devido a problemas de arredondamento.

As notas de crédito seguem as mesmas regras?

Sim. O Peppol BIS 3.0 aplica as mesmas regras de negócio tanto a faturas como a notas de crédito. A principal diferença é o código do tipo de documento (380 para fatura, 381 para nota de crédito).

Com que frequência mudam as regras Peppol?

O Peppol publica atualizações de regras aproximadamente duas vezes por ano (lançamentos de primavera e outono). Cada atualização pode adicionar, modificar ou remover regras. O ValidateFin mantém-se atualizado com a última versão.