BR-38EN 16931

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.

Regeltext im Prüfregelwerk

Each Document level charge (BG-21) shall have a Document level charge reason (BT-104) or a Document level charge reason code (BT-105).

BG-21BT-104BT-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. FC fü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.

Regeln, die oft zusammen auftreten

← Alle Fehlermeldungen im Überblick