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.
| Begriff | Bedeutung | UBL-Element |
|---|---|---|
| BG-20 | Nachlässe auf Dokumentenebene | cac:AllowanceCharge[cbc:ChargeIndicator = false] |
| BT-97 | Grund für den Nachlass auf Dokumentenebene | cac:AllowanceCharge/cbc:AllowanceChargeReason |
| BT-98 | Code für den Grund des Nachlasses auf Dokumentenebene | cac: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
- Finden Sie den Nachlass anhand der Fundstelle des Befunds.
cac:AllowanceCharge[1]ist das erstecac:AllowanceChargeunter dem Wurzelelement, und der Index zählt Zuschläge ebenso wie Nachlässe. - Nehmen Sie den Grund aus dem Quelldatensatz, der den Nachlass erzeugt hat: die Rabattart, die Aktion, die Vertragsbedingung oder die Bonusvereinbarung.
- Passt dieser Grund zu einem Eintrag der Teilmenge von UNTDID 5189, die Peppol veröffentlicht, schreiben Sie den Code in
cbc:AllowanceChargeReasonCode;95ist Discount und100ist Special rebate. Passt kein Eintrag, übermitteln Sie nur Text incbc:AllowanceChargeReason. - Halten Sie die UBL-Reihenfolge ein:
cbc:ChargeIndicator, dann der Code, dann der Text, danncbc: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. - Geben Sie kein leeres Element als Platzhalter aus. Es tauscht diesen Befund nur gegen
PEPPOL-EN16931-R008.
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
- Die fehlerhafte Rechnung meldet
BR-33und BR-CO-21. Das korrigierte Dokument besteht jeden Prüfschritt ohne Befunde.Fehlerhaftes XML herunterladenKorrigiertes XML herunterladen
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
InvoiceundCreditNote. Im Versuch mit der Gutschriftversion des aufgezeichneten Beispiels wurde dasselbe Paar von Befunden gemeldet,BR-33undBR-CO-21. - Die Regeln aus EN 16931 lesen
cbc:ChargeIndicatorals booleschen Wert, daher fällt auch ein mit0geschriebener Nachlass in den Geltungsbereich: Im Versuch ohne Grund meldete er diese Regel undBR-33, dazuPEPPOL-EN16931-R043für die Schreibweise. - Ein Code, der vorhanden ist, aber nicht in der Nachlassliste steht, besteht diese Regel und wird von
BR-CL-19zurückgewiesen.
Verwandte Regeln
- BR-CO-22 verlangt dasselbe von Zuschlägen auf Dokumentenebene
- BR-CO-23 verlangt einen Grund bei Nachlässen, die an einer Position hängen
- BR-CL-19 prüft den Code für den Grund, sobald er vorhanden ist, gegen die Nachlassliste UNTDID 5189
- BR-32 verlangt eine Umsatzsteuerkategorie für denselben Nachlass auf Dokumentenebene
- Alle Regeln der Referenz ansehen
- Hintergrund (auf Englisch): Understanding EN 16931 validation errors
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.

