Skip to content

Ironfang Finance - Rule reference

BR-AE-08: Recalculate the reverse-charge taxable amount from the AE lines, charges and allowances

The AE VAT breakdown taxable amount must be exactly the reverse-charge line net amounts, plus AE document charges, minus AE document allowances.

EN 16931Fatal: the document is invalidVATTotals

On this page

The short answer

BR-AE-08 fails when the cbc:TaxableAmount beside the AE tax category does not equal the reverse-charge content of the document: the line net amounts in category AE, plus the root-level charges in AE, minus the root-level allowances in AE. In the recorded example that is 25.00 + 5.00 - 1.50 = 28.50, and the invoice sent 31.50.

The 31.50 comes from adding the discount instead of taking it off. Recalculate the figure from the document, write it to the breakdown, and leave the reverse-charge tax amount at 0.00.

What the rule checks

The rule runs on each cac:TaxCategory with cbc:ID of AE under the VAT scheme in the root cac:TaxTotal, reads the cbc:TaxableAmount of its cac:TaxSubtotal, and reports at the tax category.

Nothing is split by rate. Lines and root-level allowances and charges count when their category is AE, whatever cbc:Percent they carry: when tried, the reverse-charge discount at 20 left 28.50 acceptable here and was reported only by BR-AE-06.

Allowances and charges inside a line are already part of that line's cbc:LineExtensionAmount, so only cac:AllowanceCharge elements directly under the document root enter the reverse-charge sum.

There is no tolerance, unlike the margin under 1.00 in BR-S-08. When tried, 28.51 failed this rule. Writing 28.500 satisfied it, since the values are compared as numbers, but three decimals broke BR-DEC-19 and UBL-DT-01.

Each reverse-charge breakdown is compared with the whole sum. When tried, splitting the 28.50 into breakdowns of 25.00 and 3.50 reported this rule on both, together with BR-AE-01, which allows only one reverse-charge breakdown.

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:

  • Allowances are added to the taxable amount with the same sign as charges, as in the recorded example.
  • The taxable amount is copied from the sum of the line net amounts, before document-level discounts and fees are applied.
  • A reverse-charge fee or discount takes a Standard rated category from the document default, while its amount is still counted in the AE breakdown.
  • Reverse-charge content is summarised in one breakdown per source, one for the lines and one for the fees, so neither holds the full figure.
  • The breakdown is built from stored order totals and not refreshed after a line or fee changed on the invoice.

How to fix it

  1. Add up cbc:LineExtensionAmount for every line whose cac:Item/cac:ClassifiedTaxCategory/cbc:ID is AE, keeping the sign of any negative line.
  2. Add the cbc:Amount of each root-level cac:AllowanceCharge in category AE with cbc:ChargeIndicator of true, and subtract each one with false.
  3. Write the result, with two decimals, as the cbc:TaxableAmount of the one AE cac:TaxSubtotal. Its cbc:TaxAmount remains 0.00 under BR-AE-09.
  4. Compare the result with cbc:TaxExclusiveAmount when the whole document is reverse charge: both are built from the same lines, allowances and charges, and in the recorded example both should read 28.50.

The recorded example has one reverse-charge line, a reverse-charge discount and a reverse-charge call-out charge, all at 0%.

Reverse-charge line net amount: 25.00
Document-level charge in AE: + 5.00
Document-level allowance in AE: - 1.50
Expected taxable amount: 25.00 + 5.00 - 1.50 = 28.50
Sent: 31.50, which is 25.00 + 5.00 + 1.50, 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 reverse-charge taxable amount of 31.50 beside a discount of 1.50 and a charge of 5.00

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <!-- reason code and reason omitted from this fragment -->
  <cbc:Amount currencyID="GBP">1.50</cbc:Amount>
  <!-- tax category AE at 0 omitted from this fragment -->
</cac:AllowanceCharge>
<cac:AllowanceCharge>
  <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
  <!-- reason omitted from this fragment -->
  <cbc:Amount currencyID="GBP">5.00</cbc:Amount>
  <!-- tax category AE at 0 omitted from this fragment -->
</cac:AllowanceCharge>
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="GBP">31.50</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>AE</cbc:ID>
      <cbc:Percent>0</cbc:Percent>
      <cbc:TaxExemptionReason>Reverse charge</cbc:TaxExemptionReason>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:TaxCategory>
  </cac:TaxSubtotal>
</cac:TaxTotal>

<!-- reverse-charge line: LineExtensionAmount 25.00 -->

Fragment of the corrected invoice: 25.00 + 5.00 - 1.50 = 28.50

<cac:TaxSubtotal>
  <cbc:TaxableAmount currencyID="GBP">28.50</cbc:TaxableAmount>
  <cbc:TaxAmount currencyID="GBP">0.00</cbc:TaxAmount>
  <cac:TaxCategory>
    <cbc:ID>AE</cbc:ID>
    <cbc:Percent>0</cbc:Percent>
    <cbc:TaxExemptionReason>Reverse charge</cbc:TaxExemptionReason>
    <cac:TaxScheme>
      <cbc:ID>VAT</cbc:ID>
    </cac:TaxScheme>
  </cac:TaxCategory>
</cac:TaxSubtotal>

Only the reverse-charge cbc:TaxableAmount differs: 31.50 in the failing invoice, 28.50 in the corrected one. The failing document reports only BR-AE-08; its tax amount of 0.00 and its total without VAT and amount due of 28.50 are the same in both documents.

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; in a credit note the lines summed are cac:CreditNoteLine. The failing invoice converted to a credit note reported the same rule when tried.
  • Reported by the EN 16931 layer as a fatal finding at each reverse-charge breakdown that does not match.
  • Exempt, intra-community and Standard rated breakdowns have their own taxable amount rules: BR-E-08, BR-IC-08 and BR-S-08.
  • The monetary totals are checked separately: BR-CO-13 compares the total without VAT with the line total, allowances and charges.

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