Zum Inhalt springen

Ironfang Finance - Regelreferenz

BR-CO-21: Jedem Nachlass auf Dokumentenebene einen Code für den Grund oder einen Text zum Grund geben

Ein Rabatt oder anderer Nachlass auf das ganze Dokument muss angeben, warum er gewährt wird, in cbc:AllowanceChargeReasonCode, cbc:AllowanceChargeReason oder beiden.

EN 16931Fehler: Das Dokument ist ungültigNachlässe und Zuschläge

Auf dieser Seite

Die kurze Antwort

BR-CO-21 schlägt fehl, wenn ein cac:AllowanceCharge direkt unter dem Wurzelelement des Dokuments mit cbc:ChargeIndicator false weder cbc:AllowanceChargeReasonCode noch cbc:AllowanceChargeReason hat. Ergänzen Sie den Grund, aus dem der Nachlass gewährt wurde, aus dem Rabattdatensatz in Ihrem Quellsystem: einen Code aus der Nachlassliste UNTDID 5189, Freitext oder beides.

BR-33 hat dieselbe Prüfung und wird für denselben Nachlass gemeldet, daher erzeugt ein fehlender Grund zwei Befunde. Das Ergänzen eines der beiden Elemente behebt beide.

Was die Regel prüft

Die Regel besucht jedes cac:AllowanceCharge, das ein Kind des Wurzelelements Invoice oder CreditNote ist und dessen Indikator als falsch gelesen wird. Sie besteht, wenn dieser Nachlass ein Element mit einem Code für den Grund, ein Element mit Text zum Grund oder beides hat.

Jedes der beiden Elemente allein genügt. Im Versuch bestand die korrigierte Rechnung alle Prüfschritte, einmal mit entferntem Code des Nachlasses und einmal mit entferntem Text.

Geprüft wird nur, ob das Element existiert. Ein leeres cbc:AllowanceChargeReason oder eines, das nur Leerzeichen enthält, erfüllte diese Regel im Versuch, und der Peppol-Prüfschritt meldete es dann als PEPPOL-EN16931-R008.

Nachlässe an einer Position und Zuschläge auf Dokumentenebene zählen hier nicht; für sie gelten BR-CO-23 und BR-CO-22. Der Preisnachlass innerhalb von cac:Price braucht überhaupt keinen Grund.

Nichts vergleicht den Code mit dem Text. BR-CO-05, die Regel, die prüfen soll, dass beide denselben Nachlass beschreiben, besteht in dieser Version immer.

BegriffBedeutungUBL-Element
BG-20Nachlässe auf Dokumentenebenecac:AllowanceCharge[cbc:ChargeIndicator = false]
BT-97Grund für den Nachlass auf Dokumentenebenecac:AllowanceCharge/cbc:AllowanceChargeReason
BT-98Code für den Grund des Nachlasses auf Dokumentenebenecac:AllowanceCharge/cbc:AllowanceChargeReasonCode

Wie es in einer Integration dazu kommt

Mögliche Ursachen, abgeleitet aus der Form der Regel und nicht aus gemessener Nutzung:

  • Der Rabatt ist nur als Betrag gespeichert, ohne Art oder Beschreibung, daher hat das Mapping für keines der beiden Elemente etwas zu schreiben.
  • Der Grund wird aus einem optionalen Feld wie einem Aktionsnamen gemappt, das bei diesem Dokument leer war, und der Serialisierer hat beide Elemente übersprungen.
  • Das Mapping schreibt nur dann einen Code, wenn die Rabattart eine bekannte Entsprechung in UNTDID hat, und schreibt nie Text, sodass eine nicht zugeordnete Art keines von beiden erhält.
  • Eine Kulanzminderung oder ein Skonto wird von einem späteren Verarbeitungsschritt als Nachlass hinzugefügt, der keinen Grund setzt.

So korrigieren Sie das Dokument

  1. Finden Sie den Nachlass anhand der Fundstelle des Befunds. cac:AllowanceCharge[1] ist das erste cac:AllowanceCharge unter dem Wurzelelement, und der Index zählt Zuschläge ebenso wie Nachlässe.
  2. Nehmen Sie den Grund aus dem Quelldatensatz, der den Nachlass erzeugt hat: die Rabattart, die Aktion, die Vertragsbedingung oder die Bonusvereinbarung.
  3. Passt dieser Grund zu einem Eintrag der Teilmenge von UNTDID 5189, die Peppol veröffentlicht, schreiben Sie den Code in cbc:AllowanceChargeReasonCode; 95 ist Discount und 100 ist Special rebate. Passt kein Eintrag, übermitteln Sie nur Text in cbc:AllowanceChargeReason.
  4. Halten Sie die UBL-Reihenfolge ein: cbc:ChargeIndicator, dann der Code, dann der Text, dann cbc:Amount. Im Versuch schlug Text vor dem Code oder nach dem Betrag im XSD-Prüfschritt fehl, und die späteren Prüfschritte wurden übersprungen.
  5. Geben Sie kein leeres Element als Platzhalter aus. Es tauscht diesen Befund nur gegen PEPPOL-EN16931-R008.

Korrigierte Rechnung prüfen

Vorher und nachher

Dies sind Ausschnitte, keine vollständigen Dokumente. Die vollständigen synthetischen Dokumente, aus denen sie stammen, sind unten verlinkt.

Ausschnitt der fehlerhaften Rechnung: Der Nachlass auf Dokumentenebene über 1.00 nennt keinen Grund

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:Amount currencyID="GBP">1.00</cbc:Amount>
  <!-- tax category omitted from this fragment -->
</cac:AllowanceCharge>

Ausschnitt der korrigierten Rechnung: Der Nachlass trägt den Code 95 für den Grund und einen Text zum Grund

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Example document discount</cbc:AllowanceChargeReason>
  <cbc:Amount currencyID="GBP">1.00</cbc:Amount>
  <!-- tax category omitted from this fragment -->
</cac:AllowanceCharge>

Die korrigierte Rechnung hat den Code 95 und den Text Example document discount an ihrem Nachlass auf Dokumentenebene; die fehlerhafte hat keines von beiden, und sonst unterscheidet sich nichts. Neben BR-CO-21 meldet das fehlerhafte Dokument BR-33, eine Regel aus EN 16931 mit genau derselben Prüfung für denselben Nachlass, und dieselbe Änderung behebt sie. Betrag, Umsatzsteuerkategorie und Summen bleiben unberührt, daher schlägt keine Rechenregel an.

Was der Validator gemeldet hat

Aufgezeichnet mit phive 12.1.0 / phive-rules-peppol 4.5.6 / Saxon-HE 12.10, der Engine hinter dem kostenlosen Validator, mit synthetischen Daten. Ein aufgezeichnetes Ergebnis ist ein Regressionsnachweis für diese Dokumente, keine Zertifizierung.

Wo die Regel gilt

  • Gilt gleichermaßen für Invoice und CreditNote. Im Versuch mit der Gutschriftversion des aufgezeichneten Beispiels wurde dasselbe Paar von Befunden gemeldet, BR-33 und BR-CO-21.
  • Die Regeln aus EN 16931 lesen cbc:ChargeIndicator als booleschen Wert, daher fällt auch ein mit 0 geschriebener Nachlass in den Geltungsbereich: Im Versuch ohne Grund meldete er diese Regel und BR-33, dazu PEPPOL-EN16931-R043 für die Schreibweise.
  • Ein Code, der vorhanden ist, aber nicht in der Nachlassliste steht, besteht diese Regel und wird von BR-CL-19 zurückgewiesen.

Umfang und Quelle

Geschrieben für Peppol BIS Billing 3.0.21 (May 2026), EN 16931 1.3.16, angewendet auf Invoice- und CreditNote-Dokumente in UBL 2.1. Andere Profile, Syntaxen und Releases können diese Kennung anders definieren. Version des Hinweiskatalogs 2026-09-24.1: Quelle geprüft am 2026-09-24, Erklärung zuletzt aktualisiert am 2026-09-24.

Die offizielle Definition von BR-CO-21 (auf Englisch) enthält den normativen Wortlaut und den Test. Diese Seite ist unsere Erklärung dazu, keine Kopie.

Die Erklärung ändert das Urteil der Engine nicht. Dass Sie diesen Befund beheben, heißt nicht, dass das Dokument jeden Prüfschritt besteht. Die Validierung bescheinigt keine rechtliche oder steuerliche Konformität und überträgt kein Dokument über Peppol.