Business RuleBR-FXEXT-S-8rev
Bemessungsgrundlage passt nicht zu den Posten (Kategorie S)
Info
Erklärung/Beschreibung
Der Betrag der Umsatzsteueraufschlüsselung zur Kategorie S (Normalsatz) passt nicht zu den Posten, die dazugehören. Entweder weichen Positionen, Nachlässe oder Zuschläge in Kategorie oder Steuersatz ab - dann zählen sie nicht mehr zu diesem Steuerfall -, oder die Beträge selbst gehen nicht auf.
Was bedeutet das?
Einsteiger
Ihre Rechnung weist einen Betrag mit der Steuerkategorie S aus (der reguläre Steuersatz).
Die Prüfung rechnet die Posten dieser Kategorie zusammen und vergleicht sie mit dem Betrag in der Steuerübersicht. Beides passt nicht zueinander.
Was zu tun ist:
Prüfen Sie zuerst die Beträge: alle Positionen, Nachlässe und Zuschläge mit diesem Steuersatz müssen zusammen den Betrag aus der Steuerübersicht ergeben.
Prüfen Sie dann den Steuersatz - schon 19,0 gegen 19,00 ist derselbe Wert, aber ein anderer Satz ist ein anderer Steuerfall.
Und eine stille Falle: Bei dieser Kategorie gehört kein Befreiungsgrund in die Rechnung. Steht bei einem einzelnen Posten trotzdem einer, fällt genau dieser Posten aus der Summe heraus.
Die Prüfung rechnet die Posten dieser Kategorie zusammen und vergleicht sie mit dem Betrag in der Steuerübersicht. Beides passt nicht zueinander.
Was zu tun ist:
Prüfen Sie zuerst die Beträge: alle Positionen, Nachlässe und Zuschläge mit diesem Steuersatz müssen zusammen den Betrag aus der Steuerübersicht ergeben.
Prüfen Sie dann den Steuersatz - schon 19,0 gegen 19,00 ist derselbe Wert, aber ein anderer Satz ist ein anderer Steuerfall.
Und eine stille Falle: Bei dieser Kategorie gehört kein Befreiungsgrund in die Rechnung. Steht bei einem einzelnen Posten trotzdem einer, fällt genau dieser Posten aus der Summe heraus.
Fachkraft
Die Prüfung bildet Steuerfälle aus drei Angaben zugleich:
Kategorie (BT-118 = S), Steuersatz (BT-119) und Befreiungsgrund als Text (BT-120) und als Code (BT-121).
Nur Positionen, Nachlässe, Zuschläge und Logistikgebühren, die in allen dreien übereinstimmen, zählen auf die Bemessungsgrundlage BT-116 dieser Aufschlüsselung ein. Ein abweichender Posten fällt aus dieser Summe heraus, die übrigen zählen weiter.
Stimmt kein einziger Posten überein, bleibt der Steuerfall ganz ohne Gegenstück - und BT-116 steht unbelegt da.
Der Steuersatz wird dabei auf allen Ebenen verglichen: BT-119 oben gegen BT-152 an der Position, BT-96 am Nachlass und BT-103 am Zuschlag.
So gehen Sie vor:
1. Vergleichen Sie die Beträge: alle Posten mit diesem Steuersatz müssen zusammen BT-116 ergeben.
2. Vergleichen Sie den Steuersatz BT-119 mit BT-152, BT-96 und BT-103 - ein anderer Satz ist ein anderer Steuerfall.
3. BT-120 und BT-121 gehören bei Kategorie S nicht in die Rechnung (BR-S-10). Steht bei einem Posten trotzdem ein Grund, fällt er aus der Summe.
Die Regel gilt nur für reguläre Positionen, also solche mit dem Untertyp DETAIL oder ohne Angabe eines Untertyps.
Die vollständige Steuerzeile bleibt unabhängig davon erforderlich: BT-116 bis BT-119.
Kategorie (BT-118 = S), Steuersatz (BT-119) und Befreiungsgrund als Text (BT-120) und als Code (BT-121).
Nur Positionen, Nachlässe, Zuschläge und Logistikgebühren, die in allen dreien übereinstimmen, zählen auf die Bemessungsgrundlage BT-116 dieser Aufschlüsselung ein. Ein abweichender Posten fällt aus dieser Summe heraus, die übrigen zählen weiter.
Stimmt kein einziger Posten überein, bleibt der Steuerfall ganz ohne Gegenstück - und BT-116 steht unbelegt da.
Der Steuersatz wird dabei auf allen Ebenen verglichen: BT-119 oben gegen BT-152 an der Position, BT-96 am Nachlass und BT-103 am Zuschlag.
So gehen Sie vor:
1. Vergleichen Sie die Beträge: alle Posten mit diesem Steuersatz müssen zusammen BT-116 ergeben.
2. Vergleichen Sie den Steuersatz BT-119 mit BT-152, BT-96 und BT-103 - ein anderer Satz ist ein anderer Steuerfall.
3. BT-120 und BT-121 gehören bei Kategorie S nicht in die Rechnung (BR-S-10). Steht bei einem Posten trotzdem ein Grund, fällt er aus der Summe.
Die Regel gilt nur für reguläre Positionen, also solche mit dem Untertyp DETAIL oder ohne Angabe eines Untertyps.
Die vollständige Steuerzeile bleibt unabhängig davon erforderlich: BT-116 bis BT-119.
Entwickler
Schematron-Assert BR-FXEXT-S-08rev.
Kontext: //ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='S'][upper-case(ram:TypeCode)='VAT']
Der Test bindet $rate, $exempReasonText und $exempReasonCode aus dem BG-23-Knoten und selektiert damit alle Teilsummen: $calculatedAmountBT131 (Positionen mit LineStatusReasonCode DETAIL oder ohne), $allowancesAmountBT92, $chargesAmountBT99, $logisticChargeAmount sowie die Zähler $nbLineItems, $nbAllowancesOrCharges, $nblogisticCharge.
Geprüft wird:
abs($basisAmount - $calculatedAmountBT131 + $allowancesAmountBT92 - $chargesAmountBT99 - $logisticChargeAmount) le 0.01 * ($nbLineItems + $nbAllowancesOrCharges + $nblogisticCharge)
Daraus folgt die eigentliche Falle: Jeder Posten, der in Kategorie, Steuersatz oder Befreiungsgrund abweicht, fällt aus seiner Teilsumme UND aus seinem Zähler heraus - die passenden bleiben. Stimmt kein einziger relevanter Posten mit dem BG-23 überein, werden sämtliche Teilsummen und alle drei Zähler null, und die Toleranz fällt auf 0.01 * 0 = 0. Die Regel reißt dann in voller Höhe von BT-116, obwohl rechnerisch nichts falsch sein muss.
Umgekehrt bleibt eine Toleranz bestehen, solange auch nur ein Nachlass, Zuschlag oder eine Logistikgebühr passt - sie hängt an der Summe der drei Zähler, nicht allein an den Positionen.
Der Vergleich läuft über normalize-space(): ein fehlendes ram:ExemptionReason bzw. ram:ExemptionReasonCode ergibt den leeren String und wird mitverglichen, nicht übersprungen.
Abgrenzung:
BR-FXEXT-S-08ini prüft dieselbe Summe ohne Abgleich der Befreiungsgründe.
BR-FXEXT-S-08b bindet beide Rechenwege und ist erfüllt, sobald einer von beiden aufgeht.
Der XPath im Bericht zeigt den Kontextknoten der Regel, nicht das fehlerhafte Element - die Abweichung kann ebenso auf Positions-, Nachlass- oder Zuschlagsebene liegen.
⚠️ Zu den BT-Nummern im Meldungstext: BT-194 und BT-195 gibt es im Datenmodell von Factur-X 1.09.2 nicht (gemessen 23.08.2026 gegen 'Factur-X CII D22B EXTENDED' - null Treffer). Gemeint sind die Positionsfelder BT-X-96 (ram:ExemptionReason) und BT-X-97 (ram:ExemptionReasonCode); genau so benennt sie die Schwesterregel 08b. Der Meldungstext bleibt im Original stehen, in der BT-Liste dieses Eintrags stehen sie deshalb nicht.
Kontext: //ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='S'][upper-case(ram:TypeCode)='VAT']
Der Test bindet $rate, $exempReasonText und $exempReasonCode aus dem BG-23-Knoten und selektiert damit alle Teilsummen: $calculatedAmountBT131 (Positionen mit LineStatusReasonCode DETAIL oder ohne), $allowancesAmountBT92, $chargesAmountBT99, $logisticChargeAmount sowie die Zähler $nbLineItems, $nbAllowancesOrCharges, $nblogisticCharge.
Geprüft wird:
abs($basisAmount - $calculatedAmountBT131 + $allowancesAmountBT92 - $chargesAmountBT99 - $logisticChargeAmount) le 0.01 * ($nbLineItems + $nbAllowancesOrCharges + $nblogisticCharge)
Daraus folgt die eigentliche Falle: Jeder Posten, der in Kategorie, Steuersatz oder Befreiungsgrund abweicht, fällt aus seiner Teilsumme UND aus seinem Zähler heraus - die passenden bleiben. Stimmt kein einziger relevanter Posten mit dem BG-23 überein, werden sämtliche Teilsummen und alle drei Zähler null, und die Toleranz fällt auf 0.01 * 0 = 0. Die Regel reißt dann in voller Höhe von BT-116, obwohl rechnerisch nichts falsch sein muss.
Umgekehrt bleibt eine Toleranz bestehen, solange auch nur ein Nachlass, Zuschlag oder eine Logistikgebühr passt - sie hängt an der Summe der drei Zähler, nicht allein an den Positionen.
Der Vergleich läuft über normalize-space(): ein fehlendes ram:ExemptionReason bzw. ram:ExemptionReasonCode ergibt den leeren String und wird mitverglichen, nicht übersprungen.
Abgrenzung:
BR-FXEXT-S-08ini prüft dieselbe Summe ohne Abgleich der Befreiungsgründe.
BR-FXEXT-S-08b bindet beide Rechenwege und ist erfüllt, sobald einer von beiden aufgeht.
Der XPath im Bericht zeigt den Kontextknoten der Regel, nicht das fehlerhafte Element - die Abweichung kann ebenso auf Positions-, Nachlass- oder Zuschlagsebene liegen.
⚠️ Zu den BT-Nummern im Meldungstext: BT-194 und BT-195 gibt es im Datenmodell von Factur-X 1.09.2 nicht (gemessen 23.08.2026 gegen 'Factur-X CII D22B EXTENDED' - null Treffer). Gemeint sind die Positionsfelder BT-X-96 (ram:ExemptionReason) und BT-X-97 (ram:ExemptionReasonCode); genau so benennt sie die Schwesterregel 08b. Der Meldungstext bleibt im Original stehen, in der BT-Liste dieses Eintrags stehen sie deshalb nicht.
Tipp/Lösung
Prüfen Sie zuerst die Beträge und den Steuersatz. Ein Befreiungsgrund gehört bei dieser Kategorie nicht in die Rechnung - steht bei einem Posten trotzdem einer, fällt er aus der Summe.
Prüfschritte
- Alle Posten mit diesem Steuersatz müssen zusammen BT-116 ergeben
- BT-119 oben gegen BT-152, BT-96 und BT-103 unten vergleichen - ein anderer Satz ist ein anderer Steuerfall
- BT-120 und BT-121 gehören bei Kategorie S nicht in die Rechnung
- Ein Grund an einem einzelnen Posten reicht, damit dieser Posten aus der Summe fällt
- Betrifft die Steuerkategorie S - nur ZUGFeRD und Factur-X im Profil EXTENDED
Stammdaten
IDBR-FXEXT-S-8rev (BR-FXEXT-S-08rev)
BezeichnungBemessungsgrundlage passt nicht zu den Posten (Kategorie S)
BereichFactur-X
BG-GruppeBG-23 USt.- Aufschlüsselung
CodelistenUN/CEFACT UNCL 5305 USt-Kategorien · CEF VATEX Code List VATEX - VAT Exemption Reason Codes
QuelleFactur-X 1.09.2 EXTENDED
BR-Gruppefacturx
Fehler BR-FXEXT-S-8rev? Lade deine Rechnung hoch und finde die Lösung – Jetzt prüfen
Bezug
BT-Referenzen
BT-92 NachlassbetragBT-95 Nachlass USt-Kategorie (Code)BT-96 Nachlass USt-SatzBT-99 ZuschlagsbetragBT-102 Zuschlag USt-Kategorie (Code)BT-103 Zuschlag USt-SatzBT-116 USt-Kategorie NettobetragBT-118 USt-Kategorie Code (Code)BT-119 USt-SatzBT-120 BefreiungsgrundBT-121 Befreiungscode (Code)BT-131 Nettobetrag PositionBT-151 USt-Kategorie Position (Code)BT-152 USt-Satz PositionBT-173 Nachlass Befreiungsgrund (Text)BT-174 Nachlass Befreiungscode (Code)BT-175 Zuschlag Befreiungsgrund (Text)BT-176 Zuschlag Befreiungscode (Code)
BG-Gruppe
Codelisten
Profile
Gültig für Profile
ZUGFeRD / Factur-X Extended
Hinweis
ZUGFeRD 2.x und Factur-X sind technisch identisch und nutzen dieselbe Datenstruktur (CII nach EN 16931).