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
- UBL-Rechnung: Fehler
- UBL-Gutschrift: Fehler
- CII: Fehler
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.
</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></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> <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> <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:
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.
</ram:SpecifiedTradeSettlementPaymentMeans>
<ram:ApplicableTradeTax>
<ram:CalculatedAmount>96.79</ram:CalculatedAmount>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:BasisAmount>501.55</ram:BasisAmount></ram:SpecifiedTradeSettlementPaymentMeans>
<ram:ApplicableTradeTax>
<ram:CalculatedAmount>95.29</ram:CalculatedAmount>
<ram:TypeCode>VAT</ram:TypeCode>
<ram:BasisAmount>501.55</ram:BasisAmount> <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> <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:
Vollständige Dateien im Testkorpus: br-co-17-steuer-falsch-gerechnet_cii.xml (falsch) und standard_cii.xml (richtig).
Testdateien zu BR-CO-17
- br-co-17-steuer-falsch-gerechnet_ubl.xml – Steuerbetrag der Kategorie (BT-117) um 1,50 zu hoch, Summen angepasst
- br-co-17-steuer-falsch-gerechnet_cii.xml – Steuerbetrag der Kategorie (BT-117) um 1,50 zu hoch, Summen angepasst
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.