EN16931 / XRechnung / Peppol BIS 3 Validator

BR-O-09: The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the…

fatal CII UBL auto-fix

What this error means and how to fix it

A rule for supplies not subject to VAT (category O): such an invoice has no VAT identifiers and no VAT rates, only one VAT breakdown (category O) with its reason, and every line, allowance and charge is category O. This is an error: the invoice is rejected until it is fixed.

Check your invoice against BR-O-09 — free

Runs the KoSIT validator 1.6.3, unmodified · result in seconds · the file is not stored · No file at hand? Try a sample invoice

Automatic fix: 9 € per file (excl. VAT where applicable). The not-subject-to-VAT breakdown tax amount is set to 0. The result page shows which errors the repair removes and whether the corrected file then passes — before you pay. Many files? Pilot and Repair API.

Rule text

[BR-O-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Not subject to VAT" shall be 0 (zero).

Automatic repair

The not-subject-to-VAT breakdown tax amount is set to 0.

This rule is in the deterministic set of our repair engine (UBL 2.1; measured 2026-10-23: XRechnung 15 broken test invoices accepted after repair, 45 valid invoices unchanged; Peppol BIS Billing 3: 10 official examples unchanged, 40 mutated invoices: 36 accepted after repair, 4 rejected as expected — one documented limit, two with the repair parameter switched off, one where no address could be derived; profile conversion of 33 XRechnung test invoices to Peppol: 30 accepted). For UN/CEFACT CII (Factur-X / ZUGFeRD EN 16931 XML, XRechnung CII) the engine repairs the totals chain, VAT breakdown, rounding, decimals and element order (measured 2026-10-24: 53 valid CEN and XRechnung CII invoices unchanged; 28 broken invoices: 27 accepted after repair, 1 rejected as expected because a VAT exemption reason cannot be derived). Single files: 9 € on the result page; many files: the Repair API — see Pricing.

Where the rule is checked (XPath context and test)
SyntaxSeverityContext (XPath)Test (XPath)
EN16931-UBLfatal/*/cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[normalize-space(cbc:ID) = 'O'][cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']xs:decimal(../cbc:TaxAmount) = 0
EN16931-CIIfatal//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = 'O'][upper-case(ram:TypeCode) = 'VAT']ram:CalculatedAmount = 0

Business terms referenced

BT-117, BG-23, BT-118

Related rules

BR-CO-14, BR-46, BR-CO-17, BR-DEC-20, BR-AE-09, BR-E-09, BR-G-09, BR-IC-09, BR-IG-09, BR-IP-09, BR-S-09, BR-Z-09

Source: EN 16931-1 Schematron, UN/CEFACT CII syntax binding (ConnectingEurope/eInvoicing-EN16931, EUPL-1.2).

Source: EN 16931-1 Schematron, UBL syntax binding (ConnectingEurope/eInvoicing-EN16931, EUPL-1.2).

Check your invoice against this rule