BR-38: Zuschlag auf Dokumentenebene ohne Grund
Ein Zuschlag auf Dokumentenebene (BG-21) braucht einen Grund als Freitext (BT-104) oder als Code (BT-105). Meist bleibt das Bezeichnungsfeld in der Software leer.
Each Document level charge (BG-21) shall have a Document level charge reason (BT-104) or a Document level charge reason code (BT-105).
Der Empfänger einer Rechnung soll nachvollziehen können, wofür er einen Aufschlag zahlt. Deshalb verlangt BR-38 für jeden Dokumentzuschlag eine Begründung, wahlweise als Text oder als Code.
Was die Regel prüft
Jeder Zuschlag auf Dokumentenebene (BG-21, BG = Business Group, eine Feldgruppe der Norm) muss mindestens eines dieser beiden Felder füllen (BT = Business Term, das nummerierte Feld der Norm):
- BT-104, ein Freitext wie „Versandkosten" oder „Mindermengenzuschlag"
- BT-105, ein Code aus der Codeliste UNTDID 7161 (z. B.
FCfür Freight charge)
Beides zusammen ist erlaubt; dann müssen Text und Code dieselbe Art von Zuschlag bezeichnen, das prüft BR-CO-06 nach.
Warum sie in der Praxis fehlschlägt
Der Standardfall: Versand- oder Verpackungskosten werden als nackter Betrag erfasst, das Bezeichnungsfeld bleibt leer, und die Software schreibt den Zuschlag ohne Reason in die XML. Auf dem PDF-Layout steht „Versandkosten" vielleicht als Tabellenbeschriftung, aber das strukturierte Feld ist trotzdem leer.
Zweiter Fall: Der Grund wird als leeres Element geschrieben (<ram:Reason/>), etwa weil ein Template den Knoten immer anlegt. Dann meldet der Validator neben BR-38 oft auch die Regel gegen leere Elemente (PEPPOL-EN16931-R008).
Dritter Fall: Es wird ein Reason-Code verwendet, der nicht aus der Codeliste UNTDID 7161 stammt, etwa ein interner Artikelcode. Manche Validatoren werten das als fehlenden Code, dann schlägt BR-38 an, obwohl „irgendwas" im Feld steht.
So behebst du den Fehler
Trag einen kurzen, verständlichen Freitext in BT-104 ein. Für deutsche B2B-Rechnungen reicht das immer, der Code BT-105 ist nur nötig, wenn dein Empfänger Zuschlagsarten maschinell auswertet. Gute Texte benennen die Leistung konkret: „Versandkosten", „Anfahrtspauschale", „Verpackung Mehrweggebinde".
Belegschmied verlangt beim Anlegen eines Zuschlags eine Bezeichnung und schreibt sie als BT-104 in die XML.
XML-Beispiel: vorher und nachher
<!-- verletzt BR-38: weder Reason (BT-104) noch ReasonCode (BT-105) -->
<ram:SpecifiedTradeAllowanceCharge>
<ram:ChargeIndicator><udt:Indicator>true</udt:Indicator></ram:ChargeIndicator>
<ram:ActualAmount>15.00</ram:ActualAmount>
<!-- … -->
</ram:SpecifiedTradeAllowanceCharge>
<ram:SpecifiedTradeAllowanceCharge>
<ram:ChargeIndicator><udt:Indicator>true</udt:Indicator></ram:ChargeIndicator>
<ram:ActualAmount>15.00</ram:ActualAmount>
<ram:Reason>Anfahrtspauschale</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.