BT-116VAT category taxable amountBT-117VAT category tax amountBT-119VAT category rate
Offizieller Regeltext
[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.
Der normative Text ist Englisch und wird unverändert zitiert.
Warum dieser Fehler auftritt
In jeder Steueraufschlüsselung muss der Steuerbetrag (BT-117) der Bemessungsgrundlage (BT-116) mal Steuersatz (BT-119) geteilt durch 100 entsprechen, auf zwei Nachkommastellen gerundet; das Schematron toleriert eine Abweichung unter 1.00, um positionsweise Rundung zuzulassen. Ist der Satz 0, muss der Steuerbetrag 0 sein. Die Regel liest cac:TaxSubtotal/cbc:TaxAmount, cbc:TaxableAmount und cac:TaxCategory/cbc:Percent (UBL) bzw. ram:ApplicableTradeTax/ram:CalculatedAmount, ram:BasisAmount und ram:RateApplicablePercent (CII). Sie schlägt an, wenn der Prozentsatz als Bruch (0.19) geschrieben wird, Kategorien mit verschiedenen Sätzen in einem Subtotal zusammengefasst sind oder die Basis nach der Steuerberechnung verändert wurde.
So beheben Sie den Fehler
Formel: BT-117 = round(BT-116 x BT-119 / 100, 2). Den Satz als Prozentzahl schreiben (19, 7, 0), nicht 0.19. Je Kombination aus Kategoriecode und Satz ein cac:TaxSubtotal (ram:ApplicableTradeTax) bilden, die zugehörigen Positionsnettobeträge und Dokumentnachlässe/-zuschläge in cbc:TaxableAmount / ram:BasisAmount summieren und cbc:TaxAmount / ram:CalculatedAmount aus dieser Basis berechnen. Bei den Kategorien E, AE, K, G, O und Z ist der Satz 0 und der Steuerbetrag muss 0.00 sein.
Beispiel (gültig)
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">245.90</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">46.72</cbc:TaxAmount>
<cac:TaxCategory><cbc:ID>S</cbc:ID><cbc:Percent>19</cbc:Percent><cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme></cac:TaxCategory>
</cac:TaxSubtotal>
Was der Validator prüft
Geprüftes Element (Kontext):
UBL
cac:TaxTotal/cac:TaxSubtotalTest (XPath):
(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))CII
//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTaxTest (XPath):
(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))
Rechnung prüfen
Legen Sie Ihre XML- oder PDF-Datei im Validator ab; jede verletzte Regel ist mit ihrer Seite hier verlinkt. Kostenlos, ohne Konto, die Datei wird nicht gespeichert.
Dieselbe Prüfung per API:
curl -F file=@invoice.xml https://einvoicechecker.com/v1/validateVerwandte Regeln
BR-AF-09The VAT category tax amount in a VAT breakdown where VAT category code is "IGIC" shall…BR-AG-09The VAT category tax amount in a VAT breakdown where VAT category code is "IPSI" shall…BR-S-09Steuerbetrag zum Regelsteuersatz (BT-117) ist nicht Basis mal SatzBR-AF-08For each different value of VAT category rate where the VAT category code is "IGIC",…BR-AG-08For each different value of VAT category rate where the VAT category code is "IPSI",…BR-S-08Bemessungsgrundlage Regelsatz (BT-116) passt nicht zu den PositionenBR-CO-14Gesamtsteuerbetrag (BT-110) passt nicht zur SteueraufschlüsselungBR-45Each VAT breakdown shall have a VAT category taxable amount
Häufige Fragen
Was bedeutet BR-CO-17?
BR-CO-17 ist eine EN-16931-Kernregel: VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals.
Wird meine Rechnung wegen BR-CO-17 abgelehnt?
Ja. BR-CO-17 ist als „fatal“ eingestuft; Validatoren (KoSIT, Peppol Access Points, ZRE/OZG-RE) weisen die Rechnung zurück, bis der Fehler behoben ist.
Für welche Formate gilt BR-CO-17?
Jede EN-16931-Rechnung: XRechnung, ZUGFeRD 2.x / Factur-X (Profile EN 16931, EXTENDED, XRECHNUNG), Peppol BIS Billing 3.0 sowie nationale CIUS. Syntax: UBL und CII.
Quelle: EN 16931-1:2017 schematron (CEN TC434, via Peppol BIS 3.0.20). Katalog erzeugt aus dem offiziellen Schematron am 2026-10-14.