Business RuleBR-FXEXT-G-8rev
Bemessungsgrundlage passt nicht zu den Posten (Kategorie G)
Info
Erklärung/Beschreibung
Der Betrag der Umsatzsteueraufschlüsselung zur Kategorie G (Steuerfreie Ausfuhr) passt nicht zu den Posten, die dazugehören. Entweder nennen Positionen, Nachlässe oder Zuschläge den Befreiungsgrund nicht oder anders als die Aufschlüsselung - 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 G aus (steuerfreie Ausfuhr in ein Drittland).
Die Prüfung findet dazu entweder nicht dieselben Posten wie die Steuerübersicht, oder deren Beträge ergeben nicht den dort angegebenen Gesamtbetrag.
Der häufigste Grund ist unscheinbar: In der Steuerübersicht steht, warum keine Steuer berechnet wird - zum Beispiel „Ausfuhrlieferung“. Bei den einzelnen Posten fehlt diese Angabe, oder sie ist dort anders formuliert. Für die Prüfung gehören Betrag und Grund zusammen; passt der Grund nicht, zählt der Posten nicht mit.
Was zu tun ist:
Schreiben Sie bei den Positionen, Nachlässen und Zuschlägen genau dasselbe hin wie in der Steuerübersicht - den Text Wort für Wort und denselben Code.
Steht oben nur ein Text und kein Code, dann gehört unten auch nur der Text hin.
Eine fehlende Angabe unten zählt als leer und passt dann nicht zu einer gefüllten oben.
Stimmen die Angaben überall überein, sehen Sie sich die Beträge an: die Posten dieser Kategorie müssen zusammen den Betrag aus der Steuerübersicht ergeben.
Die Prüfung findet dazu entweder nicht dieselben Posten wie die Steuerübersicht, oder deren Beträge ergeben nicht den dort angegebenen Gesamtbetrag.
Der häufigste Grund ist unscheinbar: In der Steuerübersicht steht, warum keine Steuer berechnet wird - zum Beispiel „Ausfuhrlieferung“. Bei den einzelnen Posten fehlt diese Angabe, oder sie ist dort anders formuliert. Für die Prüfung gehören Betrag und Grund zusammen; passt der Grund nicht, zählt der Posten nicht mit.
Was zu tun ist:
Schreiben Sie bei den Positionen, Nachlässen und Zuschlägen genau dasselbe hin wie in der Steuerübersicht - den Text Wort für Wort und denselben Code.
Steht oben nur ein Text und kein Code, dann gehört unten auch nur der Text hin.
Eine fehlende Angabe unten zählt als leer und passt dann nicht zu einer gefüllten oben.
Stimmen die Angaben überall überein, sehen Sie sich die Beträge an: die Posten dieser Kategorie müssen zusammen den Betrag aus der Steuerübersicht ergeben.
Fachkraft
Die Prüfung bildet Steuerfälle aus drei Angaben zugleich:
Kategorie (BT-118 = G), 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 zuerst BT-120 und BT-121 in der Aufschlüsselung mit den entsprechenden Angaben auf Positions-, Nachlass- und Zuschlagsebene. Erst danach die Beträge.
2. Auf Kopfebene ist mindestens eine der beiden Angaben Pflicht (BR-G-10). Auf Positionsebene verlangt das Schema sie nicht - die Prüfung vergleicht die Angaben aber als Zeichenkette, und eine fehlende Angabe zählt als leer.
3. Der Text muss wörtlich übereinstimmen. Schon ein zusätzliches Wort bildet einen eigenen Steuerfall.
4. Der übliche Code für diese Kategorie ist VATEX-EU-G (Codeliste VATEX).
5. Brauchen Sie mehrere Gründe in einer Rechnung, legen Sie je Grund eine eigene Umsatzsteueraufschlüsselung (BG-23) an.
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 = G), 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 zuerst BT-120 und BT-121 in der Aufschlüsselung mit den entsprechenden Angaben auf Positions-, Nachlass- und Zuschlagsebene. Erst danach die Beträge.
2. Auf Kopfebene ist mindestens eine der beiden Angaben Pflicht (BR-G-10). Auf Positionsebene verlangt das Schema sie nicht - die Prüfung vergleicht die Angaben aber als Zeichenkette, und eine fehlende Angabe zählt als leer.
3. Der Text muss wörtlich übereinstimmen. Schon ein zusätzliches Wort bildet einen eigenen Steuerfall.
4. Der übliche Code für diese Kategorie ist VATEX-EU-G (Codeliste VATEX).
5. Brauchen Sie mehrere Gründe in einer Rechnung, legen Sie je Grund eine eigene Umsatzsteueraufschlüsselung (BG-23) an.
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-G-08rev.
Kontext: //ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='G'][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-G-08ini prüft dieselbe Summe ohne Abgleich der Befreiungsgründe.
BR-FXEXT-G-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='G'][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-G-08ini prüft dieselbe Summe ohne Abgleich der Befreiungsgründe.
BR-FXEXT-G-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
Tragen Sie bei den Positionen, Nachlässen und Zuschlägen genau dieselben Angaben ein wie in der Umsatzsteueraufschlüsselung - Text wie Code. Was oben leer ist, bleibt auch unten leer.
Prüfschritte
- Zuerst BT-120 und BT-121 oben mit den Angaben unten vergleichen, erst danach die Beträge
- Der Text muss wörtlich gleich sein - ein zusätzliches Wort bildet schon einen eigenen Steuerfall
- Eine fehlende Angabe unten zählt als leer und passt nicht zu einer gefüllten oben
- Stimmen alle Angaben überein, liegt es am Betrag: die passenden Posten müssen zusammen BT-116 ergeben
- Üblicher Code dieser Kategorie: VATEX-EU-G (Codeliste VATEX)
- Mehrere Gründe in einer Rechnung brauchen je eine eigene Aufschlüsselung (BG-23)
- Betrifft die Steuerkategorie G - nur ZUGFeRD und Factur-X im Profil EXTENDED
Stammdaten
IDBR-FXEXT-G-8rev (BR-FXEXT-G-08rev)
BezeichnungBemessungsgrundlage passt nicht zu den Posten (Kategorie G)
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-G-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).