Validation rules

BR-O-08 — EN 16931 rule

The taxable amount (BT-116) of the "not subject to VAT" (O) breakdown does not equal the sum of line net amounts minus allowances plus charges with category O.

Rule
BR-O-08 — official EN 16931 / XRechnung rule
Severity
error
Business term
BT-116 — VAT category taxable amount
Field in your JSON
invoice.lines
Detected by
tier 3 — KoSIT validator (authoritative)
Reachability
Triggerable from your request JSON (generate & validate)

The engine computes breakdown amounts from the lines, so generated documents only violate this when O items carry differing vat values.

How to fix it

Omit line.vat on every O line, allowance and charge — differing vat values split the breakdown so no part matches the category-wide sum this rule checks.

BR-O-08 auf Deutsch — was bedeutet der Fehler?

Der Grundbetrag (BT-116) der O-Aufschlüsselung (nicht umsatzsteuerbar) entspricht nicht der Summe der Positionsnettobeträge abzüglich Nachlässen zuzüglich Zuschlägen der Kategorie O. Bei normbill passiert das nur, wenn O-Positionen unterschiedliche vat-Werte tragen.

So beheben Sie den Fehler

Lassen Sie line.vat auf allen O-Positionen, -Nachlässen und -Zuschlägen weg — unterschiedliche vat-Werte teilen die Aufschlüsselung so auf, dass keine Teilsumme mehr passt.

Related rules

  • BR-45 — A VAT breakdown (BG-23) has no taxable amount (BT-116).
  • BR-DEC-19 — A VAT category taxable amount (BT-116) uses more than 2 decimal places — EN 16931 allows at most 2.
  • BR-AE-08 — The taxable amount (BT-116) of the reverse-charge (AE) breakdown does not equal the sum of line net amounts…
  • BR-AF-08 — For each IGIC (L) rate, the taxable amount (BT-116) of the breakdown must equal the sum of line net amounts…
  • BR-AG-08 — For each IPSI (M) rate, the taxable amount (BT-116) of the breakdown must equal the sum of line net amounts…
  • BR-E-08 — The taxable amount (BT-116) of the exempt (E) breakdown does not equal the sum of line net amounts minus…

Official sources

Every 422 from the API lists the rule id, the path in your request JSON, a plain-language message and a suggested fix — see the docs overview for the report format.

Or try it live: drop any XRechnung XML on the free validator — same KoSIT-backed report, no account.

Spotted something?

Bug, missing feature, wrong validation result — tell us. The page you're on is attached automatically; email optional.