BR-44: Zuschlag auf Positionsebene ohne Begründung
Ein Zuschlag in einer Rechnungsposition (BG-28) braucht einen Grund als Freitext (BT-144) oder als Code (BT-145). Fehlt beides, lehnt der Validator die Rechnung ab.
Each Invoice line charge (BG-28) shall have an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145).
BR-44 ist das Gegenstück zu BR-43: Dort geht es um den Betrag eines Positionszuschlags, hier um seine Begründung. Beide Meldungen treten oft gemeinsam auf, wenn eine Software einen halbleeren Zuschlagsblock erzeugt.
Was die Regel prüft
Jeder Zuschlag auf Positionsebene (BG-28, BG = Business Group, eine Feldgruppe der Norm) muss begründet sein, damit der Empfänger nachvollziehen kann, wofür er zahlt. Zulässig sind zwei Wege, von denen mindestens einer gefüllt sein muss:
- BT-144 (BT = Business Term, das nummerierte Einzelfeld): Freitext wie „Expresszuschlag“ oder „Mindermengenzuschlag“
- BT-145: ein Code aus der Codeliste UNTDID 7161
Werden beide angegeben, müssen sie inhaltlich zusammenpassen (das prüft BR-CO-08).
Warum sie in der Praxis fehlschlägt
Der typische Auslöser: Ein Zuschlag wird als reiner Betrag erfasst, etwa „+ 15,00 EUR“, ohne dass die Software ein Begründungsfeld anbietet oder erzwingt. Der Betrag landet in der XML, der Grund nicht.
Zweiter Fall: Die Begründung steht zwar auf dem PDF-Beleg als Text in der Positionsbeschreibung, wird aber nicht in das strukturierte Feld ram:Reason übernommen. Für den Validator zählt nur das XML-Feld, nicht der sichtbare Text.
So behebst du den Fehler
Trag für jeden Positionszuschlag einen kurzen Freitext-Grund ein. Der Freitext (BT-144) reicht völlig, den Code (BT-145) brauchst du nur, wenn dein Empfänger maschinell nach Zuschlagsarten auswertet. Wenn der Zuschlag inhaltlich gar nicht existiert, entferne den Block komplett. Belegschmied verlangt beim Anlegen eines Zuschlags immer eine Bezeichnung, der Fall ist damit abgedeckt.
XML-Beispiel: vorher und nachher
Der Zuschlag hat einen Betrag, aber weder Grund noch Code:
<!-- verletzt BR-44: weder Reason noch ReasonCode vorhanden -->
<ram:SpecifiedLineTradeSettlement>
<ram:SpecifiedTradeAllowanceCharge>
<ram:ChargeIndicator><udt:Indicator>true</udt:Indicator></ram:ChargeIndicator>
<ram:ActualAmount>15.00</ram:ActualAmount>
</ram:SpecifiedTradeAllowanceCharge>
<!-- … -->
</ram:SpecifiedLineTradeSettlement>
Korrigiert mit Freitext-Begründung (BT-144):
<ram:SpecifiedLineTradeSettlement>
<ram:SpecifiedTradeAllowanceCharge>
<ram:ChargeIndicator><udt:Indicator>true</udt:Indicator></ram:ChargeIndicator>
<ram:ActualAmount>15.00</ram:ActualAmount>
<ram:Reason>Expresszuschlag</ram:Reason>
</ram:SpecifiedTradeAllowanceCharge>
<!-- … -->
</ram:SpecifiedLineTradeSettlement>
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.