On this page
The short answer
BR-IC-05 fails on each invoice or credit note line whose cac:Item/cac:ClassifiedTaxCategory is K with a cbc:Percent that is not zero. The recorded example gives the line 19, the German rate; set it to 0.
The buyer accounts for VAT on the acquisition in its own country, at that country's rate. The seller's document only states that it charges none.
What the rule checks
Each cac:ClassifiedTaxCategory in category K under the VAT scheme, in cac:InvoiceLine or cac:CreditNoteLine, is checked on its own, and the finding points at that element.
The comparison is numeric and needs a value. When tried, removing cbc:Percent from the K line reported this rule alone.
The breakdown rate is not what this rule reads, and no intra-community rule checks it. When tried, putting 19 in the K breakdown as well, with its tax amount still 0.00, added BR-CO-17 and nothing more.
The wrong rate does not upset the taxable amount. With the line at 19, the K breakdown of 25.00 still satisfied BR-IC-08, which adds up K lines regardless of rate.
| 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 line rate is looked up from the delivery country, so goods sent to Germany get 19 while the category is correctly set to
K. - The item master holds the seller's domestic rate, and only the category is switched for EU business customers.
- The rate is shown on purpose so the buyer can see what to account for, which the document has no field for.
How to fix it
- Confirm that the line is an intra-community supply to a VAT-registered business in another member state.
- Set
cbc:Percentin the line'scac:ClassifiedTaxCategoryto0. The line amount, theKbreakdown and the totals do not change. - Derive the line rate from the category rather than from the destination country: category
Kalways carries 0. - If the seller does owe VAT on the line, for example because the buyer gave no VAT number, the line is not
K. Recode it with the rate that applies and rebuild the breakdowns.
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 intra-community line at 19
<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>K</cbc:ID>
<cbc:Percent>19</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 intra-community 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>K</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 line's cbc:Percent differs: 19 in the failing invoice and 0 in the corrected one. The failing document reports only BR-IC-05; the K breakdown at 0 with a taxable amount of 25.00 is the same in both.
What the validator reported
- The failing invoice reports BR-IC-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. The failing invoice converted to a credit note reported this rule at thecac:CreditNoteLinetax category when tried. - Reported by the EN 16931 layer as a fatal finding per offending line.
- Document-level allowances and charges in
Khave their own rate rules,BR-IC-06andBR-IC-07, and the breakdown tax amount must be 0 underBR-IC-09.
Related rules
- BR-AE-05 is the same line rule for reverse charge
- BR-IC-06 requires a rate of 0 on a K document allowance
- BR-IC-07 requires a rate of 0 on a K document charge
- BR-IC-09 keeps the tax amount of the K breakdown at zero
- 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-IC-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.

