BR-DE-14: Der Umsatzsteuersatz (BT-119) fehlt
Mindestens eine Steuerkategorie in der Umsatzsteueraufschlüsselung hat keinen Steuersatz. Tragen Sie für jede Kategorie den Satz ein, bei steuerfreien, nicht steuerbaren und Reverse-Charge-Umsätzen den Wert 0.
[BR-DE-14] Das Element "VAT category rate" (BT-119) muss übermittelt werden.
Betroffen:BG-23BT-118BT-119
Was die Regel prüft
BT-119 „VAT category rate“ gehört zur Gruppe BG-23 „VAT BREAKDOWN“, in der Visualisierung „Aufschlüsselung der Umsatzsteuer auf Ebene der Rechnung“. Die Spezifikation beschreibt das Feld so: „Sofern die Rechnung von der Umsatzsteuer ausgenommen ist, ist der Wert „0“ zu übermitteln.“
- UBL: Kontext jedes
cac:TaxTotal/cac:TaxSubtotal, Testcac:TaxCategory/cbc:Percent[boolean(normalize-space(.))]. - CII: Kontext jedes
ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax, Testram:RateApplicablePercent[boolean(normalize-space(.))]. - Jede Aufschlüsselungszeile wird einzeln geprüft. Eine Rechnung mit 19 % und 7 % braucht den Satz in beiden Blöcken.
- Der Wert
0ist nicht leer und erfüllt die Regel.
Geprüft wird nur die Aufschlüsselung auf Belegebene. Die Steuerangaben der Positionen (BT-152) gehören nicht dazu. In CII stehen beide in einem Element gleichen Namens, ram:ApplicableTradeTax; maßgeblich ist das unter ram:ApplicableHeaderTradeSettlement, nicht das in ram:SpecifiedLineTradeSettlement.
Typische Ursachen
- Kein Satz bei Kategorie O oder E. Für nicht steuerbare (O) oder steuerfreie (E) Umsätze lässt die Software den Satz leer, weil keine Steuer anfällt.
- Kleinunternehmer nach § 19 UStG. Die Spezifikation (Abschnitt 13.3) sieht dafür Kategorie E mit Satz 0 vor. In den Stammdaten von Kleinunternehmern ist oft gar kein Steuersatz hinterlegt.
- Reverse Charge. Bei Kategorie AE schreibt der Generator keinen Satz, statt 0.
- Satz nur auf Positionsebene. Der eigene Generator schreibt den Prozentsatz in
cac:ClassifiedTaxCategoryder Positionen, aber nicht in die Aufschlüsselung. - Leeres Element.
<cbc:Percent/>oder<ram:RateApplicablePercent></ram:RateApplicablePercent>zählt als fehlend.
Beispiel aus der KoSIT-Testsuite
Die minimale technische Testdatei 01.05 rechnet eine nicht steuerbare Leistung ab (Kategorie O). In der Aufschlüsselung steht trotzdem der Satz 0.
cbc:Percent 0<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">4743.75</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">0</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>O</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cbc:TaxExemptionReasonCode>VATEX-EU-O</cbc:TaxExemptionReasonCode>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>Quelle: KoSIT XRechnung-Testsuite 2026-08-31, Datei instances/technical-cases/cius/01.05_minimal_test_ubl.xml (Apache 2.0)
ram:RateApplicablePercent 0, Kommentare aus der Originaldatei<ram:ApplicableTradeTax>
<!-- BT-117 -->
<ram:CalculatedAmount>0.00</ram:CalculatedAmount>
<!-- BT-118 -->
<ram:TypeCode>VAT</ram:TypeCode>
<!-- BT-116 -->
<ram:BasisAmount>4743.75</ram:BasisAmount>
<!-- BT-118 -->
<ram:CategoryCode>O</ram:CategoryCode>
<!-- BT-121 -->
<ram:ExemptionReasonCode>VATEX-EU-O</ram:ExemptionReasonCode>
<!-- BT-119 -->
<ram:RateApplicablePercent>0</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>Quelle: KoSIT XRechnung-Testsuite 2026-08-31, Datei instances/technical-cases/cius/01.05_minimal_test_uncefact.xml (Apache 2.0)
Auffällig: Auf Positionsebene hat dieselbe Datei für Kategorie O keinen Satz, in UBL besteht cac:ClassifiedTaxCategory nur aus <cbc:ID>O</cbc:ID> und dem Steuerschema. Die Aufschlüsselung braucht den Satz, die Position nicht. Fehlt cbc:Percent bzw. ram:RateApplicablePercent im Beispiel oben, meldet die Prüfung BR-DE-14.
Lösung
In der Rechnungssoftware
- Hinterlegen Sie für jeden Steuerschlüssel einen Prozentsatz, für steuerfreie, nicht steuerbare und Reverse-Charge-Schlüssel den Wert 0.
- Als Kleinunternehmer prüfen Sie, ob die Software einen eigenen Schlüssel für § 19 UStG anbietet, der Kategorie E mit Satz 0 erzeugt.
Im XML
- UBL: Fügen Sie in jedem
cac:TaxSubtotal/cac:TaxCategorynachcbc:IDeincbc:Percentein. - CII: Fügen Sie in jedem
ram:ApplicableTradeTaxunterram:ApplicableHeaderTradeSettlementals letztes Elementram:RateApplicablePercentein. - Achten Sie darauf, dass Satz und Kategorie zueinander passen. Die Spezifikation verlangt, dass BT-118 und BT-119 konsistent sind; Abweichungen melden die kategoriebezogenen EN-Regeln, etwa BR-S-08 für Kategorie S.
- Prüfen Sie die Datei mit XRechnung prüfen erneut.
Quellen
- XRechnung Schematron 2.6.0 (Release v2.6.0, Dateien ubl/XRechnung-UBL-validation.sch und cii/XRechnung-CII-validation.sch)KoSIT (GitHub itplr-kosit/xrechnung-schematron), 31. August 2026 · geprüft am 7. November 2026
- XRechnung-Testsuite, Release 2026-08-31KoSIT (GitHub itplr-kosit/xrechnung-testsuite), 31. August 2026 · geprüft am 7. November 2026
- Spezifikation XRechnung Version 3.0.2KoSIT (xeinkauf.de), 20. Juni 2024 · geprüft am 7. November 2026