Skip to content

Ironfang Finance - Rule reference

BR-AE-01: Add exactly one reverse-charge VAT breakdown when anything is reverse charged

A document with a reverse-charge line, document allowance or document charge needs one VAT breakdown in category AE, even beside other categories.

EN 16931Fatal: the document is invalidVAT

On this page

The short answer

BR-AE-01 fails when category AE is used on a line, a document-level allowance or a document-level charge and the root cac:TaxTotal does not hold exactly one cac:TaxSubtotal in category AE. The recorded invoice has a Standard rated line and a reverse-charge line of 40.00 but only a Standard rated breakdown; add the AE breakdown with 40.00 taxable, 0.00 tax, a rate of 0 and the reverse-charge reason.

A breakdown that adds nothing to the VAT total is still required. Leaving it out also takes away the figure on which the buyer accounts for the VAT itself.

What the rule checks

The rule looks for AE under the VAT scheme in any cac:ClassifiedTaxCategory or cac:TaxCategory of the document, then counts the AE breakdowns directly under the root cac:TaxTotal. When tried, a Standard rated invoice whose only reverse-charge item was a freight charge of 4.00 reported this rule alone while it had no AE breakdown.

Two AE breakdowns fail as well. When tried, the 40.00 split into breakdowns of 25.00 and 15.00 reported this rule and BR-AE-08 for each half, and giving the second half the code VATEX-EU-AE instead of the text changed nothing.

The reverse-charge amount has to be in a breakdown of its own category. When tried, turning the AE breakdown into a second S breakdown at 0 reported this rule and BR-S-08.

A stray AE breakdown goes unnoticed, since its own category counts as reverse-charge content. When tried, an AE breakdown of 0.00 added to an invoice with only a Standard rated line passed every layer.

TermMeaningUBL element
BG-23VAT breakdowncac:TaxTotal/cac:TaxSubtotal
BT-118VAT category codecac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID
BT-151Invoiced item VAT category codecac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID (cac:CreditNoteLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID in a credit note)
BT-95Document level allowance VAT category codecac:AllowanceCharge[cbc:ChargeIndicator = false]/cac:TaxCategory/cbc:ID
BT-102Document level charge VAT category codecac:AllowanceCharge[cbc:ChargeIndicator = true]/cac:TaxCategory/cbc:ID

How an integration ends up here

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

  • The breakdown is built only for categories that carry tax, so the reverse-charge amount, with no tax on it, is skipped.
  • Reverse-charge lines are mixed with Standard rated lines on one invoice, and the export was written for one category per document.
  • The breakdown is grouped by rate alone, so the reverse-charge amount at 0 is merged with other amounts at 0 or lost.
  • A separate AE breakdown is produced for each reverse-charge line or reason.

How to fix it

  1. Add up the reverse-charge content: the cbc:LineExtensionAmount of lines in AE, plus AE document charges, minus AE document allowances. In the recorded example it is the 40.00 of line 2.
  2. Emit a single cac:TaxSubtotal with that figure as cbc:TaxableAmount, a cbc:TaxAmount of 0.00, and a cac:TaxCategory with cbc:ID of AE, cbc:Percent of 0 and the reason text Reverse charge or the code VATEX-EU-AE.
  3. Place it in the same cac:TaxTotal as the other breakdowns. The VAT total does not change, 5.00 in the recorded example, because the new breakdown carries no tax.
  4. Where AE breakdowns were split, merge them into one whose taxable amount is their sum.

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 line of 40.00, and a VAT breakdown with only the Standard rated entry

<cac:TaxTotal>
  <cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>S</cbc:ID>
      <cbc:Percent>20</cbc:Percent>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:TaxCategory>
  </cac:TaxSubtotal>
</cac:TaxTotal>

<!-- line 1 omitted from this fragment: Standard rated, 25.00 at 20 -->
<cac:InvoiceLine>
  <cbc:ID>2</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">1</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="GBP">40.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Example installation work</cbc:Name>
    <cac:ClassifiedTaxCategory>
      <cbc:ID>AE</cbc:ID>
      <cbc:Percent>0</cbc:Percent>
      <!-- tax scheme omitted from this fragment -->
    </cac:ClassifiedTaxCategory>
  </cac:Item>
  <!-- price omitted from this fragment -->
</cac:InvoiceLine>

Fragment of the corrected invoice: a reverse-charge breakdown of 40.00 beside the Standard rated one

<cac:TaxTotal>
  <cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>S</cbc:ID>
      <cbc:Percent>20</cbc:Percent>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:TaxCategory>
  </cac:TaxSubtotal>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="GBP">40.00</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>

The corrected invoice has a second cac:TaxSubtotal, 40.00 taxable and 0.00 tax in category AE with the reason Reverse charge; the failing invoice has only the Standard rated breakdown of 25.00. The failing document reports only BR-AE-01. The missing breakdown carried no tax, so the VAT total of 5.00 still matches the breakdowns, and the totals of 65.00 without VAT and 70.00 with VAT 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. The mixed credit note without its AE breakdown reported the same rule when tried.
  • Reported by the EN 16931 layer as one fatal finding at the document root.
  • Exempt and Zero rated content have the same exactly-one rule, BR-E-01 and BR-Z-01, while BR-S-01 lets Standard rated content have one breakdown per rate.
  • Once the breakdown exists, BR-AE-08 checks its taxable amount, BR-AE-09 its zero tax and BR-AE-10 its reason.

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