Skip to content

Ironfang Finance - Rule reference

BR-IC-08: Include intra-community charges and allowances in the K taxable amount

The K VAT breakdown taxable amount must equal the K line net amounts plus K document charges minus K document allowances, with no tolerance.

EN 16931Fatal: the document is invalidVATTotals

On this page

The short answer

BR-IC-08 fails when the cbc:TaxableAmount of the K breakdown differs from the intra-community content of the document: K line net amounts, plus root-level K charges, minus root-level K allowances. The recorded example sends 25.00, the line alone, and leaves out the 6.00 freight charge in K; the correct figure is 31.00.

Rebuild the breakdown from the same allowances and charges that already feed the total without VAT, which in the example is 31.00 as well.

What the rule checks

For each cac:TaxCategory with cbc:ID of K and scheme VAT in the root cac:TaxTotal, the rule compares its cac:TaxSubtotal/cbc:TaxableAmount with a sum over the whole document and reports at that tax category.

Lines count when their item category is K, and root-level cac:AllowanceCharge elements when their cac:TaxCategory is K; the rates they carry play no part. The freight at 19, for instance, still counted towards 31.00 when tried, and only BR-IC-07 objected.

The match must be exact. When tried, 31.01 failed, where the Standard rated rule BR-S-08 would let a difference under 1.00 pass.

The monetary totals are not part of the comparison. The failing invoice keeps a total without VAT of 31.00, correct under BR-CO-13, and nothing is reported about it.

Several K breakdowns are each measured against the full sum. When tried, one breakdown of 25.00 for the line and another of 6.00 for the freight both failed this rule, and BR-IC-01 objected to there being two.

TermMeaningUBL element
BT-116VAT category taxable amountcac:TaxTotal/cac:TaxSubtotal/cbc:TaxableAmount
BT-118VAT category codecac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID
BT-131Invoice line net amountcac:InvoiceLine/cbc:LineExtensionAmount (cac:CreditNoteLine/cbc:LineExtensionAmount in a credit note)
BT-99Document level charge amountcac:AllowanceCharge[cbc:ChargeIndicator = true]/cbc:Amount
BT-92Document level allowance amountcac:AllowanceCharge[cbc:ChargeIndicator = false]/cbc:Amount

How an integration ends up here

Possible causes, from the shape of the rule rather than from measured usage:

  • The breakdown is built from the lines only, and freight or packaging added at document level never reaches it, as in the recorded example.
  • The charge is coded K but grouped into another breakdown, because the grouping uses the charge's tax code rather than its category.
  • An intra-community discount is subtracted from the total without VAT but not from the K breakdown.
  • The taxable amount is taken from the order, and fees added at invoicing are missed.

How to fix it

  1. Add up cbc:LineExtensionAmount of each line whose cac:Item/cac:ClassifiedTaxCategory/cbc:ID is K.
  2. Add the amounts of root-level charges in category K and subtract the amounts of root-level allowances in category K. Line-level allowances and charges are already in the line amounts.
  3. Write the result to the cbc:TaxableAmount of the single K cac:TaxSubtotal: 25.00 + 6.00 = 31.00 in the recorded example. The tax amount stays 0.00.
  4. Build every breakdown from the same list of lines, allowances and charges that produces cbc:TaxExclusiveAmount, so the two cannot drift apart.

The recorded example has one intra-community line and one freight charge in K, and no allowance.

Intra-community line net amount: 25.00
Freight charge in K: + 6.00
Allowances in K: none
Expected taxable amount: 25.00 + 6.00 = 31.00
Sent: 25.00, which leaves out the freight, so the rule fails

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: a freight charge of 6.00 in K, and a K taxable amount of 25.00

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>FC</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Freight to Berlin</cbc:AllowanceChargeReason>
  <cbc:Amount currencyID="GBP">6.00</cbc:Amount>
  <!-- tax category K at 0 omitted from this fragment -->
</cac:AllowanceCharge>
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>K</cbc:ID>
      <!-- rate 0, VATEX-EU-IC, reason text and tax scheme VAT omitted from this fragment -->
    </cac:TaxCategory>
  </cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="GBP">31.00</cbc:TaxExclusiveAmount>
  <!-- other totals omitted from this fragment -->
</cac:LegalMonetaryTotal>

Fragment of the corrected invoice: 25.00 + 6.00 = 31.00 in the K breakdown

<cac:TaxSubtotal>
  <cbc:TaxableAmount currencyID="GBP">31.00</cbc:TaxableAmount>
  <cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
  <cac:TaxCategory>
    <cbc:ID>K</cbc:ID>
    <cbc:Percent>0</cbc:Percent>
    <cbc:TaxExemptionReasonCode>VATEX-EU-IC</cbc:TaxExemptionReasonCode>
    <cbc:TaxExemptionReason>Intra-community supply</cbc:TaxExemptionReason>
    <cac:TaxScheme>
      <cbc:ID>VAT</cbc:ID>
    </cac:TaxScheme>
  </cac:TaxCategory>
</cac:TaxSubtotal>

The K taxable amount is 25.00 in the failing invoice and 31.00 in the corrected one; the freight charge, the line and the monetary totals are identical in both. The failing document reports only BR-IC-08.

What the validator reported

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 Invoice and CreditNote, summing cac:CreditNoteLine amounts in a credit note. The failing invoice converted to a credit note reported the same finding when tried.
  • Reported by the EN 16931 layer at each K breakdown whose taxable amount is off.
  • The K tax amount beside it must be 0 under BR-IC-09, and only one K breakdown is allowed under BR-IC-01.

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-08 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.