On this page
The short answer
BR-E-07 fails when a charge, an cac:AllowanceCharge with cbc:ChargeIndicator of true, is in category E with a cbc:Percent other than 0. The administration fee of 2.50 in the recorded example carries 20; set its cbc:Percent to 0.
Only the tax determination can say whether a fee shares the exemption of the service it belongs to. If it does, its rate is 0; if the fee is taxable in its own right, it needs category S at 20 and a place in a Standard rated breakdown.
What the rule checks
The rule checks each charge tax category with cbc:ID of E under the VAT scheme and reports at that cac:TaxCategory. It is not tied to the document root: when tried, a charge placed inside the exempt line with its own cac:TaxCategory of E at 20 was reported too, along with the UBL-CR-558 warning.
Zero is the only accepted value, compared as a number. Leaving cbc:Percent out of the exempt fee reported this rule alone when tried.
The charge rate plays no part in the exempt breakdown. Its taxable amount of 27.50 adds the fee of 2.50 to the exempt line of 25.00 under BR-E-08, whatever rate the fee carries.
| Term | Meaning | UBL element |
|---|---|---|
| BT-102 | Document level charge VAT category code | cac:AllowanceCharge[cbc:ChargeIndicator = true]/cac:TaxCategory/cbc:ID |
| BT-103 | Document level charge VAT rate | cac:AllowanceCharge[cbc:ChargeIndicator = true]/cac:TaxCategory/cbc:Percent |
How an integration ends up here
Possible causes, from the shape of the rule rather than from measured usage:
- Fees and surcharges are set up as items at the Standard rate, and the category is overridden to
Eon exempt contracts while the rate is not. - The charge is generated by a billing rule with no tax code of its own, which borrows the seller's default rate.
- The rate element is dropped for charges whose rate field is empty.
How to fix it
- Check with the tax determination that the charge shares the exemption. If it does, set
cbc:Percentin itscac:TaxCategoryto0. - Keep the charge in the exempt breakdown: 25.00 + 2.50 = 27.50 in the recorded example, with a tax amount of 0.00.
- If the charge is taxable, change its category to
Sat 20, take its 2.50 out of the exempt taxable amount, add it to a Standard rated breakdown with its tax, and update the VAT total, the total with VAT and the amount due. - Give fee items their own tax code in the source system, so that their category and rate always travel together.
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 administration fee of 2.50 at a rate of 20
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Administration fee</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="GBP">2.50</cbc:Amount>
<cac:TaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>20</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>Fragment of the corrected invoice: the exempt administration fee at 0
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Administration fee</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="GBP">2.50</cbc:Amount>
<cac:TaxCategory>
<cbc:ID>E</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>Only the cbc:Percent of the administration fee differs: 20 in the failing invoice, 0 in the corrected one. The failing document reports only BR-E-07. The exempt breakdown of 27.50, the charge total of 2.50 and the amount due of 27.50 are identical in both documents.
What the validator reported
- The failing invoice reports BR-E-07. 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 exempt credit note with the fee at 20 reported the same rule when tried. - Reported by the EN 16931 layer as a fatal finding for each exempt charge whose rate is not 0.
- Zero rated and reverse-charge charges have the same requirement under
BR-Z-07andBR-AE-07. An exempt charge also needs a seller tax identifier in the document underBR-E-04.
Related rules
- BR-E-06 is the same requirement for an exempt document-level allowance
- BR-E-04 asks for the seller tax identifier once an exempt charge is present
- BR-E-08 adds the exempt charge to the exempt taxable amount
- BR-AE-07 requires a rate of 0 on a reverse-charge document-level charge
- 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-07 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.

