BR-CO-23: Positionsnachlass ohne Begründung
Ein Rabatt auf eine einzelne Rechnungsposition (BG-27) braucht einen Grund als Text (BT-139) oder Code (BT-140). Häufig geht die Angabe beim Export des Positionsrabatts verloren.
Each Invoice line allowance (BG-27) shall contain an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140), or both.
Was BR-CO-21 für Rabatte auf die Gesamtrechnung verlangt, verlangt diese Regel für Rabatte auf einzelne Positionen: keinen Abzug ohne Begründung.
Was die Regel prüft
Jeder Nachlass innerhalb einer Rechnungsposition (Gruppe BG-27; BG = Business Group, eine Feldgruppe der Norm EN 16931) muss einen Grund als Freitext (BT-139) oder als Code (BT-140, Codeliste UNTDID 5189) tragen, oder beides. Text und Code zusammen müssen laut BR-CO-07 zueinander passen. Die Regel ist inhaltsgleich mit BR-42.
Wichtig für die Einordnung: Gemeint ist der Nachlass auf Positionsebene in ram:SpecifiedLineTradeSettlement, der den Positionsnettobetrag mindert. Preisnachlässe innerhalb der Preisangabe (Brutto- zu Nettopreis) sind eine andere Struktur und von dieser Regel nicht betroffen.
Warum sie in der Praxis fehlschlägt
Der häufigste Auslöser ist das Rabattfeld in der Positionserfassung: Viele Programme bieten pro Zeile ein Prozentfeld („Rabatt %") ohne zugehöriges Begründungsfeld. Beim Export entsteht daraus eine BG-27-Gruppe mit Betrag, aber ohne ram:Reason.
Zweiter Fall sind Datenübernahmen aus Angebot oder Auftrag: Der Rabatt wird als Zahl übernommen, das Begründungsfeld existiert im Quellsystem gar nicht erst. Da der Fehler pro Position auftritt, meldet ihn der Validator bei durchgängigen Zeilenrabatten entsprechend oft.
So behebst du den Fehler
Ergänze in jeder betroffenen Position einen kurzen Begründungstext, „Rabatt" oder „Sonderpreis" genügt formal. Alternativ oder zusätzlich der Code aus UNTDID 5189, etwa 95 für einen allgemeinen Rabatt.
Wenn deine Software kein Begründungsfeld für Zeilenrabatte hat, gibt es einen sauberen Ausweg: den Rabatt direkt in den Einheitspreis einrechnen. Dann existiert keine BG-27-Gruppe und die Regel greift nicht; der Kunde sieht allerdings den Rabatt nicht mehr als eigene Angabe. Belegschmied verlangt bei Positionsnachlässen immer einen Grund, bevor die Rechnung erzeugt wird.
XML-Beispiel: vorher und nachher
Positionsnachlass nur mit Betrag:
<!-- verletzt BR-CO-23: weder Reason noch ReasonCode im Positionsnachlass -->
<ram:SpecifiedLineTradeSettlement>
<ram:SpecifiedTradeAllowanceCharge>
<ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>
<ram:ActualAmount>25.00</ram:ActualAmount>
</ram:SpecifiedTradeAllowanceCharge>
<!-- … -->
</ram:SpecifiedLineTradeSettlement>
Korrigiert mit Begründungstext (BT-139):
<ram:SpecifiedLineTradeSettlement>
<ram:SpecifiedTradeAllowanceCharge>
<ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>
<ram:ActualAmount>25.00</ram:ActualAmount>
<ram:Reason>Mengenrabatt</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.