Auf dieser Seite
Die kurze Antwort
PEPPOL-EN16931-R043 schlägt fehl, wenn cbc:ChargeIndicator in einem cac:AllowanceCharge auf Dokument- oder Positionsebene etwas anderes enthält als die Wörter true oder false. Schreiben Sie true für einen Zuschlag und false für einen Nachlass. Im aufgezeichneten Beispiel war der Zuschlag auf Dokumentenebene als 1 geschrieben.
Das UBL-Schema typisiert das Element als booleschen Wert, der auch 1 und 0 zulässt; der XSD-Prüfschritt besteht daher, und der Prüfschritt EN 16931 liest 1 als Zuschlag. Nur der Peppol-Prüfschritt beanstandet den Wert.
Was die Regel prüft
Die Regel läuft für jedes cac:AllowanceCharge direkt unter dem Wurzelelement des Dokuments und direkt unter jeder cac:InvoiceLine oder cac:CreditNoteLine. Sie entfernt Leerraum am Rand des Texts von cbc:ChargeIndicator und akzeptiert genau true oder false, in Kleinbuchstaben.
Leerraum am Rand wird toleriert: true mit Leerzeichen bestand im Versuch alle Prüfschritte.
Schreibweisen, die das Schema ablehnt, erreichen diese Regel nie. TRUE scheiterte im Versuch am XSD-Prüfschritt, und die Prüfschritte EN 16931 und Peppol wurden übersprungen.
Der Rabatt innerhalb von cac:Price liegt außerhalb ihres Geltungsbereichs. Ein 1 oder 0 dort meldet PEPPOL-EN16931-R044, die nur false akzeptiert.
Die Regeln von EN 16931 vergleichen das Kennzeichen als booleschen Wert und sehen 1 daher weiterhin als Zuschlag und 0 als Nachlass. Im Versuch mit entferntem Grund meldete der als 1 geschriebene Zuschlag neben dieser Regel auch BR-CO-22 und BR-38.
| Begriff | Bedeutung | UBL-Element |
|---|---|---|
| - | Kennzeichen für Nachlass oder Zuschlag, Dokumentenebene | cac:AllowanceCharge/cbc:ChargeIndicator |
| - | Kennzeichen für Nachlass oder Zuschlag, Positionsebene | cac:InvoiceLine/cac:AllowanceCharge/cbc:ChargeIndicator (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:
- Der Serialisierer schreibt boolesche Werte als 1 und 0, was das XML-Schema erlaubt und manche Bibliotheken standardmäßig tun.
- Der Wert wird ohne Umwandlung aus einer Bit-Spalte der Datenbank oder einem ganzzahligen Flag übernommen.
- Ein aus der XSD erzeugter Generator gibt die lexikalische Form eines booleschen Werts aus, die er bevorzugt.
- Das Flag wird per Zeichenkettenformatierung erzeugt, die
TrueoderTRUEergibt; das scheitert noch früher, am Schema.
So korrigieren Sie das Dokument
- Mappen Sie das Flag beim Schreiben des XML ausdrücklich: Ein Zuschlag wird zum Literal
true, ein Nachlass zum Literalfalse. - Wenden Sie dasselbe Mapping auf Einträge auf Positionsebene an, und schreiben Sie
falsebeim Rabatt innerhalb voncac:Price. - Prüfen Sie neben der Schreibweise auch die Bedeutung. Als der Nachlass auf Dokumentenebene der umfangreichen Beispielrechnung versehentlich mit
truegekennzeichnet wurde, zählte er als Zuschlag:BR-CO-11,BR-CO-12undBR-S-08schlugen fehl, und sein Nachlasscode95wurde als Zuschlagscode abgelehnt. - Prüfen Sie nach der Änderung erneut. Bei einer Position sorgt die korrigierte Schreibweise außerdem dafür, dass die Peppol-Positionsberechnung den Eintrag mitzählt.
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 Zuschlag auf Dokumentenebene hat 1 als Kennzeichen
<cac:AllowanceCharge>
<cbc:ChargeIndicator>1</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>CG</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Example document charge</cbc:AllowanceChargeReason>
<!-- percentage, amount, base amount and tax category omitted from this fragment -->
</cac:AllowanceCharge>Ausschnitt der korrigierten Rechnung: Das Kennzeichen ist das Wort true
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>CG</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Example document charge</cbc:AllowanceChargeReason>
<!-- percentage, amount, base amount and tax category omitted from this fragment -->
</cac:AllowanceCharge>Nur das Kennzeichen des Zuschlags auf Dokumentenebene unterscheidet sich: 1 in der fehlerhaften Rechnung, true in der korrigierten. Das fehlerhafte Dokument meldet nur PEPPOL-EN16931-R043. Der XSD-Prüfschritt akzeptiert 1 als booleschen Wert, und der Prüfschritt EN 16931 behandelt ihn als Zuschlag; dort gehen die Summe der Zuschläge von 3.50 und der steuerpflichtige Betrag zum Normalsatz daher weiterhin auf.
Was der Validator gemeldet hat
- Die fehlerhafte Rechnung meldet PEPPOL-EN16931-R043. 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. Eine Gutschrift, deren Zuschlag auf Dokumentenebene als1geschrieben war, meldete im Versuch nur diese Regel. - Wird nur im Peppol-Prüfschritt gemeldet, als schwerwiegender Befund (fatal).
- Bei einer Position kann die falsche Schreibweise einen zweiten Peppol-Befund nach sich ziehen. Als der Positionsnachlass der umfangreichen Beispielrechnung als
0geschrieben wurde, schlug auchPEPPOL-EN16931-R120fehl, weil die Prüfung des Nettobetrags der Position nur Nachlässe mit der Schreibweisefalseabzieht und nur Zuschläge mit der Schreibweisetrueaddiert.
Verwandte Regeln
- PEPPOL-EN16931-R044 behandelt das Kennzeichen des Rabatts auf den Preis, das false sein muss
- PEPPOL-EN16931-R120 lässt einen Nachlass oder Zuschlag einer Position aus der Berechnung heraus, wenn er nicht als true oder false geschrieben ist
- BR-CO-22 ist eine der Regeln von EN 16931, die ein Kennzeichen 1 weiterhin als Zuschlag behandeln
- 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-24.1: Quelle geprüft am 2026-09-24, Erklärung zuletzt aktualisiert am 2026-09-24.
Die offizielle Definition von PEPPOL-EN16931-R043 (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.

