EN16931 1.3.16 · UBL / CII · Severity: ERROR
Standard VAT category tax amount does not equal taxable amount times VAT rate
The VAT amount (BT-117) in a standard-rated VAT breakdown must equal the taxable amount (BT-116) multiplied by the VAT percentage (BT-119), rounded to 2 decimal places.
- Rule ID & Severity
BR-S-09· ERROR- Standard & Scope
- EN16931 1.3.16 · UBL / CII
- XPath Condition
xs:decimal(cbc:TaxAmount) = round-half-to-even(xs:decimal(cbc:TaxableAmount) * (xs:decimal(cac:TaxCategory/cbc:Percent) div 100), 2)- Target XML Path
cac:TaxTotal/cac:TaxSubtotal/cbc:TaxAmount
Find the source field
cac:TaxTotal/cac:TaxSubtotal/cbc:TaxAmount
Match namespace URI and element name, not a particular prefix spelling. The validator reports the full expanded-name source path when the published rule supplies a location.
Common causes
- Line-by-line VAT rounding differed from header subtotal VAT calculation.
- Wrong VAT rate was written into TaxCategory/Percent.
Invalid and corrected fragments
<cbc:TaxableAmount currencyID="EUR">150.00</cbc:TaxableAmount><cbc:TaxAmount currencyID="EUR">28.00</cbc:TaxAmount>
<cbc:TaxableAmount currencyID="EUR">150.00</cbc:TaxableAmount><cbc:TaxAmount currencyID="EUR">28.50</cbc:TaxAmount>
Compute TaxSubtotal/TaxAmount as TaxableAmount × (Percent / 100) rounded to two decimals.
Open BR-S-09 in en16931-validator →
Verify the whole document
These are fragments, not complete invoices. The exact rule is exercised by synthetic mutation tests against the stated package. Correcting one field does not prove conformance; run the full selected validator again. Published messages and severity remain authoritative.
Explanation record: 2026-10-14 · Local WebAssembly / SaxonJS validation. No invoice-derived report is published as a search page.