On this page
The short answer
BR-E-05 fails on each line whose cac:Item/cac:ClassifiedTaxCategory has cbc:ID of E and a cbc:Percent that is not 0. The exempt line of the recorded example carries 5; set it to 0.
An exempt line with a rate says two different things. If VAT at 5 really is due on the item, it is not exempt and belongs in category S at 5; if it is exempt, the rate is the error.
What the rule checks
Each cac:ClassifiedTaxCategory with cbc:ID of E under the VAT scheme, in a cac:InvoiceLine or cac:CreditNoteLine item, is checked separately, and the finding points at that element.
The rate has to equal zero as a decimal. When tried, 0.00 on the exempt line passed and 20 failed as 5 does, while a line with its cbc:Percent removed reported this rule alone, so leaving the rate out is no way round it.
Only line rates are read. When tried, the exempt breakdown given a rate of 5 while the line stayed at 0 did not trigger this rule; BR-CO-17 rejected it instead, since 5% of the 25.00 taxable amount is 1.25, too far from a tax amount of 0.00.
Exempt document-level allowances and charges have rate rules of their own, BR-E-06 and BR-E-07, with the same requirement of 0.
| Term | Meaning | UBL element |
|---|---|---|
| BT-151 | Invoiced item VAT category code | cac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID (cac:CreditNoteLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID in a credit note) |
| BT-152 | Invoiced item VAT rate | cac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:Percent (cac:CreditNoteLine/cac:Item/cac:ClassifiedTaxCategory/cbc:Percent in a credit note) |
How an integration ends up here
Possible causes, from the shape of the rule rather than from measured usage:
- The rate comes from the item record while the category comes from the customer or contract, and nothing reconciles the two.
- An item once taxed at the reduced rate was reclassified as exempt, and only its category code was updated.
- Every line gets a default rate from the seller's settings, and the default is not 0.
- An empty rate on exempt items is serialised by leaving
cbc:Percentout, which fails in the same way.
How to fix it
- Check the tax determination for the item. If the supply is exempt, set
cbc:Percentin the line'scac:ClassifiedTaxCategoryto0; nothing else on the line changes. - Always write
cbc:Percentfor exempt lines, as0, rather than omitting it. - If VAT at 5 is due, change the line category to
Sand keep the 5, move its net amount out of the exempt breakdown into a Standard rated breakdown at 5, and calculate the tax. Drop the exempt breakdown and its reason if nothing exempt is left. - Correct the item or tax code at source, so that the category and the rate on a line come from one record.
Validate your corrected invoice
Before and after
These are fragments, not complete documents. The complete synthetic documents they come from are linked below.
Fragment of the failing invoice: an exempt line with a rate of 5
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Example service</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>5</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<!-- price omitted from this fragment -->
</cac:InvoiceLine>Fragment of the corrected invoice: the exempt line at 0
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Example service</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<!-- price omitted from this fragment -->
</cac:InvoiceLine>Only the cbc:Percent of the exempt line differs: 5 in the failing invoice, 0 in the corrected one. The failing document reports only BR-E-05. Its exempt breakdown keeps the rate of 0 and the taxable amount of 25.00, which BR-E-08 still accepts because it adds up exempt lines whatever their rates, and no tax is charged anywhere.
What the validator reported
- The failing invoice reports BR-E-05. The corrected document passes every layer with no findings.Download the failing XMLDownload the corrected XML
Recorded on phive 12.1.0 / phive-rules-peppol 4.5.6 / Saxon-HE 12.10, the engine behind the free validator, using synthetic data. A recorded result is regression evidence for these documents; it is not a certification.
Where it applies
- Applies to UBL
InvoiceandCreditNote. An exemptcac:CreditNoteLineat 5 reported the same rule when tried. - Reported by the EN 16931 layer as a fatal finding at each exempt
cac:ClassifiedTaxCategorywhose rate is not 0. - Zero rated and reverse-charge lines carry the same requirement under
BR-Z-05andBR-AE-05, while a line not subject to VAT must have no rate at all underBR-O-05.
Related rules
- BR-E-06 requires the same rate of 0 on an exempt document-level allowance
- BR-AE-05 is the reverse-charge line rule, also fixed at 0
- BR-Z-05 is the Zero rated line rule, also fixed at 0
- BR-CO-17 rejected the exempt breakdown given a rate of 5, a case this rule leaves alone
- Browse every rule in the reference
- Background: Understanding EN 16931 validation errors
Scope and source
Written for Peppol BIS Billing 3.0.21 (May 2026), EN 16931 1.3.16, as applied to UBL 2.1 Invoice and CreditNote documents. Other profiles, syntaxes and releases can define this identifier differently. Guidance version 2026-09-28.1: source checked 2026-09-28, explanation last updated 2026-09-28.
The official definition of BR-E-05 carries the normative wording and test. This page is our explanation of it, not a copy.
Guidance does not change the engine verdict. Fixing this finding does not mean the document passes every layer, and validation does not certify legal or tax compliance or transmit a document over Peppol.

