BR-CO-17: Steuerbetrag der Kategorie falsch berechnet

Der Steuerbetrag je Kategorie (BT-117) muss Bemessungsgrundlage (BT-116) mal Steuersatz (BT-119) geteilt durch 100 sein, auf zwei Nachkommastellen gerundet.

Regelwerk
EN 16931 (CEN)
Syntax
UBL und CII
Betroffene Felder
BT-116, BT-117, BT-119

Offizieller Regeltext

VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals.

Regeltext aus den Validierungsartefakten zu EN 16931 in Version 1.3.16 (CEN/TC 434, veröffentlicht von ConnectingEurope), Lizenz EUPL 1.2; enthalten in der XRechnung-Validatorkonfiguration 2026-08-31.

Schweregrad

Ein Verstoß führt im Szenario „XRechnung“ des KoSIT-Validators zur Ablehnung der Rechnung.

Typische Ursachen

Die Steuer wird je Position berechnet und dann addiert; dabei summieren sich Rundungsdifferenzen. Auch ein falscher Steuersatz in der Aufschlüsselung führt zu diesem Fehler.

So behebst du den Fehler

Die Steuer je Kategorie und Satz aus der Bemessungsgrundlage berechnen, nicht aus Positionssteuern.

Der Prüfausdruck toleriert kleine Abweichungen – in UBL weniger als eine Währungseinheit, in CII bis einschließlich einer Währungseinheit; das Beispiel weicht deshalb um 1,50 ab. Bei Normalsatz meldet der Validator zusätzlich BR-S-09.

Geprüftes Beispiel: falsch und richtig

Die Auszüge stammen aus vollständigen, synthetischen Rechnungen des E-Rechnungs-Testkorpus. Geänderte Zeilen sind hervorgehoben. Beide Dateien werden in den automatischen Tests mit dem KoSIT-Validator geprüft.

Bei den Beispielen meldet der Validator außer BR-CO-17 auch: BR-S-09.

Beispiel in UBL

Änderung gegenüber der gültigen Rechnung: Steuerbetrag der Kategorie (BT-117) um 1,50 zu hoch, Summen angepasst.

Falsch – ab Zeile 91
</cac:PaymentTerms>
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="EUR">96.79</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="EUR">501.55</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="EUR">96.79</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>S</cbc:ID>
Richtig – ab Zeile 91
</cac:PaymentTerms>
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="EUR">95.29</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="EUR">501.55</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="EUR">95.29</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>S</cbc:ID>
Falsch – ab Zeile 107
  <cbc:LineExtensionAmount currencyID="EUR">501.55</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="EUR">501.55</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="EUR">598.34</cbc:TaxInclusiveAmount>
  <cbc:PayableAmount currencyID="EUR">598.34</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
Richtig – ab Zeile 107
  <cbc:LineExtensionAmount currencyID="EUR">501.55</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="EUR">501.55</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="EUR">596.84</cbc:TaxInclusiveAmount>
  <cbc:PayableAmount currencyID="EUR">596.84</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>

Prüfergebnis (KoSIT-Validator 1.6.3, Konfiguration 2026-08-31): falsche Datei abgelehnt, korrigierte Datei angenommen. Meldungen zur falschen Datei:

  • BR-CO-17 VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals. Fundstelle: /Invoice[1]/TaxTotal[1]/TaxSubtotal[1]
  • BR-S-09 The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Standard rated" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119). Fundstelle: /Invoice[1]/TaxTotal[1]/TaxSubtotal[1]/TaxCategory[1]

Vollständige Dateien im Testkorpus: br-co-17-steuer-falsch-gerechnet_ubl.xml (falsch) und standard_ubl.xml (richtig).

Beispiel in CII

Änderung gegenüber der gültigen Rechnung: Steuerbetrag der Kategorie (BT-117) um 1,50 zu hoch, Summen angepasst.

Falsch – ab Zeile 191
</ram:SpecifiedTradeSettlementPaymentMeans>
<ram:ApplicableTradeTax>
  <ram:CalculatedAmount>96.79</ram:CalculatedAmount>
  <ram:TypeCode>VAT</ram:TypeCode>
  <ram:BasisAmount>501.55</ram:BasisAmount>
Richtig – ab Zeile 191
</ram:SpecifiedTradeSettlementPaymentMeans>
<ram:ApplicableTradeTax>
  <ram:CalculatedAmount>95.29</ram:CalculatedAmount>
  <ram:TypeCode>VAT</ram:TypeCode>
  <ram:BasisAmount>501.55</ram:BasisAmount>
Falsch – ab Zeile 206
    <ram:LineTotalAmount>501.55</ram:LineTotalAmount>
    <ram:TaxBasisTotalAmount>501.55</ram:TaxBasisTotalAmount>
    <ram:TaxTotalAmount currencyID="EUR">96.79</ram:TaxTotalAmount>
    <ram:GrandTotalAmount>598.34</ram:GrandTotalAmount>
    <ram:DuePayableAmount>598.34</ram:DuePayableAmount>
  </ram:SpecifiedTradeSettlementHeaderMonetarySummation>
</ram:ApplicableHeaderTradeSettlement>
Richtig – ab Zeile 206
    <ram:LineTotalAmount>501.55</ram:LineTotalAmount>
    <ram:TaxBasisTotalAmount>501.55</ram:TaxBasisTotalAmount>
    <ram:TaxTotalAmount currencyID="EUR">95.29</ram:TaxTotalAmount>
    <ram:GrandTotalAmount>596.84</ram:GrandTotalAmount>
    <ram:DuePayableAmount>596.84</ram:DuePayableAmount>
  </ram:SpecifiedTradeSettlementHeaderMonetarySummation>
</ram:ApplicableHeaderTradeSettlement>

Prüfergebnis (KoSIT-Validator 1.6.3, Konfiguration 2026-08-31): falsche Datei abgelehnt, korrigierte Datei angenommen. Meldungen zur falschen Datei:

  • BR-CO-17 VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals. Fundstelle: /CrossIndustryInvoice[1]/SupplyChainTradeTransaction[1]/ApplicableHeaderTradeSettlement[1]/ApplicableTradeTax[1]
  • BR-S-09 The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Standard rated" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119). Fundstelle: /CrossIndustryInvoice[1]/SupplyChainTradeTransaction[1]/ApplicableHeaderTradeSettlement[1]/ApplicableTradeTax[1]/CategoryCode[1]

Vollständige Dateien im Testkorpus: br-co-17-steuer-falsch-gerechnet_cii.xml (falsch) und standard_cii.xml (richtig).

Testdateien zu BR-CO-17

Technische Details: Kontext und Prüfausdruck aus dem Schematron

CII

Kontext:

//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax

Prüfausdruck:

(round(.[normalize-space(upper-case(ram:TypeCode)) = 'VAT']/xs:decimal(ram:RateApplicablePercent)) = 0 and (round(xs:decimal(ram:CalculatedAmount)) = 0)) or (round(.[normalize-space(upper-case(ram:TypeCode)) = 'VAT']/xs:decimal(ram:RateApplicablePercent)) != 0 and ((abs(xs:decimal(ram:CalculatedAmount)) - 1 <= round(abs(xs:decimal(ram:BasisAmount)) * (.[normalize-space(upper-case(ram:TypeCode)) = 'VAT']/xs:decimal(ram:RateApplicablePercent) div 100) * 10 * 10) div 100 ) and (abs(xs:decimal(ram:CalculatedAmount)) + 1 >= round(abs(xs:decimal(ram:BasisAmount)) * (.[normalize-space(upper-case(ram:TypeCode)) = 'VAT']/xs:decimal(ram:RateApplicablePercent) div 100) * 10 * 10) div 100 ))) or (not(exists(.[normalize-space(upper-case(ram:TypeCode))='VAT']/xs:decimal(ram:RateApplicablePercent))) and (round(xs:decimal(ram:CalculatedAmount)) = 0))

UBL

Kontext:

cac:TaxTotal/cac:TaxSubtotal

Prüfausdruck:

(round(cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/xs:decimal(cbc:Percent)) = 0 and (round(xs:decimal(cbc:TaxAmount)) = 0)) or (round(cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/xs:decimal(cbc:Percent)) != 0 and ((abs(xs:decimal(cbc:TaxAmount)) - 1 < round(abs(xs:decimal(cbc:TaxableAmount)) * (cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/xs:decimal(cbc:Percent) div 100) * 10 * 10) div 100 ) and (abs(xs:decimal(cbc:TaxAmount)) + 1 > round(abs(xs:decimal(cbc:TaxableAmount)) * (cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/xs:decimal(cbc:Percent) div 100) * 10 * 10) div 100 ))) or (not(exists(cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/xs:decimal(cbc:Percent))) and (round(xs:decimal(cbc:TaxAmount)) = 0))

Technische Formatprüfung nach XRechnung 3.0.2; keine steuerliche oder rechtliche Beratung.