BR-33: Nachlass auf Dokumentenebene ohne Grund
Ein Nachlass auf Dokumentenebene (BG-20) braucht einen Grund als Freitext (BT-97) oder als Code (BT-98). Meist fehlt schlicht der Eintrag im Rabatt-Formular der Software.
Each Document level allowance (BG-20) shall have a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98).
Von den drei Pflichtangaben eines Dokumentnachlasses (Betrag BR-31, Steuerkategorie BR-32, Grund BR-33) ist der Grund die einzige mit Wahlfreiheit: Freitext oder Code, eines von beiden genügt.
Was die Regel prüft
Jeder Nachlass auf Dokumentenebene (BG-20, BG = Business Group, eine Feldgruppe der Norm) muss begründet werden. Dafür gibt es zwei Felder (BT = Business Term, das nummerierte Feld der Norm):
- BT-97, ein Freitext wie „Treuerabatt" oder „Nachlass laut Rahmenvertrag"
- BT-98, ein Code aus der Codeliste UNTDID 5189 (z. B.
95für Discount)
Mindestens eines der beiden muss gefüllt sein, beide zusammen sind erlaubt. Wenn du beide angibst, müssen sie inhaltlich zusammenpassen, das prüft BR-CO-05.
Warum sie in der Praxis fehlschlägt
Der mit Abstand häufigste Fall: Im Rechnungsprogramm wird ein Rabattbetrag eingetragen, das Grund-Feld bleibt leer, und die Software schreibt den Nachlass trotzdem in die XML. Auf dem Papier-Layout fällt ein Rabatt ohne Beschriftung kaum auf, im strukturierten Format ist er ein Verstoß.
Zweiter Fall: Die Software schreibt den Grund als leeres Element (<ram:Reason/>). Das verletzt dann zusätzlich Regeln gegen leere Elemente wie PEPPOL-EN16931-R008, und BR-33 schlägt trotzdem an, weil ein leerer String nicht als Grund zählt.
Dritter Fall: Der Grund steht nur im Positionstext oder in einer Bemerkungszeile der Rechnung, nicht im Nachlass-Block selbst. Für den Validator zählt nur das Feld innerhalb von BG-20.
So behebst du den Fehler
Trag einen kurzen Freitext in BT-97 ein, das ist der einfachste Weg und für deutsche B2B-Rechnungen völlig ausreichend. Ein Wort wie „Rabatt" besteht die Prüfung, aussagekräftiger ist ein Grund, den auch die Buchhaltung des Empfängers versteht: „Treuerabatt 5 %", „Nachlass laut Angebot 2026-041". Den Code BT-98 brauchst du nur, wenn dein Empfänger codierte Gründe automatisiert auswertet.
Belegschmied verlangt beim Anlegen eines Dokumentrabatts eine Bezeichnung und schreibt sie als BT-97 in die XML.
XML-Beispiel: vorher und nachher
<!-- verletzt BR-33: weder Reason (BT-97) noch ReasonCode (BT-98) -->
<ram:SpecifiedTradeAllowanceCharge>
<ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>
<ram:ActualAmount>25.00</ram:ActualAmount>
<!-- … -->
</ram:SpecifiedTradeAllowanceCharge>
<ram:SpecifiedTradeAllowanceCharge>
<ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>
<ram:ActualAmount>25.00</ram:ActualAmount>
<ram:Reason>Treuerabatt laut Rahmenvertrag</ram:Reason>
<!-- … -->
</ram:SpecifiedTradeAllowanceCharge>
Rechnung selbst prüfen
Lade deine Datei hoch und sieh in Sekunden, welche Regeln sie besteht und welche nicht. Kostenlos, ohne Anmeldung, nichts wird gespeichert.