Auf dieser Seite
Die kurze Antwort
PEPPOL-EN16931-CL002 schlägt fehl, wenn cbc:AllowanceChargeReasonCode in einem Nachlass, dessen cbc:ChargeIndicator genau false lautet, keiner der 19 Codes der Peppol-Liste zu UNTDID 5189 ist. Im aufgezeichneten Beispiel wurde der Nachlass einer Position als 095 gesendet; der Code lautet 95, ohne Auffüllung.
Die Peppol-Liste und die Liste, die BR-CL-19 im Prüfschritt EN 16931 prüft, sind identisch, sodass ein falscher Code in der Regel von beiden gemeldet wird. Sie unterscheiden sich darin, welche Nachlässe sie betrachten: Diese Regel sieht nur einen Indikator, der als exakter Text false geschrieben ist.
Was die Regel prüft
Der Nachlass wird am Text von cbc:ChargeIndicator erkannt, der exakt mit false verglichen wird. Im Versuch nahm false mit umgebenden Leerzeichen, das das Schema akzeptiert, den Nachlass aus dieser Regel heraus: Ein falscher Code dort wurde nur von BR-CL-19 gemeldet.
Ein Indikator 0 ist ebenfalls ein gültiger boolescher Wert des Schemas, aber nicht der Text false. Im Versuch mit dem Code 095 meldete er BR-CL-19 und PEPPOL-EN16931-R043, das nur true oder false akzeptiert, nicht aber diese Regel.
Der Code wird vor dem Vergleich um Leerzeichen bereinigt, und der Rest muss genau einem gelisteten Code entsprechen; eine führende Null ergibt einen anderen Wert, wie 095 zeigt.
Die Fundstelle des Befunds sagt, welcher Nachlass den Code trägt: im aufgezeichneten Beispiel der erste cac:AllowanceCharge der ersten Rechnungsposition.
| Begriff | Bedeutung | UBL-Element |
|---|---|---|
| BT-98 | Code für den Grund des Nachlasses auf Dokumentenebene | cac:AllowanceCharge/cbc:AllowanceChargeReasonCode |
| BT-140 | Code für den Grund des Nachlasses auf Ebene der Rechnungsposition | cac:InvoiceLine/cac:AllowanceCharge/cbc:AllowanceChargeReasonCode (cac:CreditNoteLine in a credit note) |
Wie es in einer Integration dazu kommt
Mögliche Ursachen, abgeleitet aus der Form der Regel und nicht aus gemessener Nutzung:
- Codes werden auf eine feste Breite von drei Ziffern formatiert, damit
100bis105mit den übrigen fluchten, wodurch aus95ein095wird. - Codes werden als Zahlen gespeichert und mit einem Anzeigeformat ausgegeben, das sie auffüllt.
- Ein Code für Zuschläge oder eine interne Rabattart wird bei einem Nachlass geschrieben.
- Eine für Nachlässe und Zuschläge gemeinsame Zuordnung gibt einem Rabatt einen Code aus UNTDID 7161.
So korrigieren Sie das Dokument
- Ermitteln Sie anhand der Fundstelle den Nachlass und den Rabatt, aus dem er stammt.
- Nehmen Sie den Code aus der Peppol-Liste zu UNTDID 5189 und schreiben Sie ihn als Text ohne führende Nullen:
95Discount,100Special rebate,41Bonus for works ahead of schedule. - Schreiben Sie
cbc:ChargeIndicatorbei jedem Nachlass als einfachen Textfalse, damit beide Prüfschritte dieselben Prüfungen anwenden. - Passt kein Code, senden Sie nur
cbc:AllowanceChargeReason.
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 Code für den Grund des Positionsnachlasses ist auf 095 aufgefüllt
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<!-- note, quantity, amounts and order line reference omitted from this fragment -->
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>095</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Example discount</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>5</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="GBP">2.00</cbc:Amount>
<cbc:BaseAmount currencyID="GBP">40.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<!-- line charge, item and price omitted from this fragment -->
</cac:InvoiceLine>Ausschnitt der korrigierten Rechnung: der Code für den Grund ist 95, Discount
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<!-- note, quantity, amounts and order line reference omitted from this fragment -->
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Example discount</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>5</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="GBP">2.00</cbc:Amount>
<cbc:BaseAmount currencyID="GBP">40.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<!-- line charge, item and price omitted from this fragment -->
</cac:InvoiceLine>Nur der Code für den Grund des Positionsnachlasses unterscheidet sich: 095 in der fehlerhaften Rechnung, 95 in der korrigierten. Das fehlerhafte Dokument meldet außerdem BR-CL-19, die Prüfung desselben Codes gegen dieselbe Liste im Prüfschritt EN 16931, am selben Element.
Was der Validator gemeldet hat
- Die fehlerhafte Rechnung meldet BR-CL-19 und PEPPOL-EN16931-CL002. 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 für
InvoiceundCreditNote; im Versuch meldete095beim Nachlass einer Gutschriftposition diese Regel undBR-CL-19. - Eine Regel aus Peppol BIS Billing 3.0. Ist der Indikator als
falsegeschrieben, meldet sie nie ohneBR-CL-19, da die Listen übereinstimmen, währendBR-CL-19allein melden kann, wenn der Indikator anders geschrieben ist. - Zuschläge werden von
PEPPOL-EN16931-CL003, der passenden Regel für einen Indikatortrue, gegen UNTDID 7161 geprüft.
Verwandte Regeln
- BR-CL-19 prüft Codes für den Grund eines Nachlasses gegen dieselbe Liste im Prüfschritt EN 16931
- PEPPOL-EN16931-CL003 ist die Peppol-Prüfung der Codes für den Grund eines Zuschlags
- PEPPOL-EN16931-R043 verlangt, dass der Indikator true oder false lautet
- Alle Regeln der Referenz ansehen
- Hintergrund (auf Englisch): How Peppol invoice validation actually works
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-28.1: Quelle geprüft am 2026-09-28, Erklärung zuletzt aktualisiert am 2026-09-28.
Die offizielle Definition von PEPPOL-EN16931-CL002 (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.

