Auf dieser Seite
Die kurze Antwort
BR-CO-22 schlägt fehl, wenn ein cac:AllowanceCharge auf Wurzelebene, das mit cbc:ChargeIndicator true als Zuschlag gekennzeichnet ist, nicht angibt, wofür der Zuschlag erhoben wird. Ergänzen Sie cbc:AllowanceChargeReasonCode mit dem Code aus UNTDID 7161 für die berechnete Leistung, cbc:AllowanceChargeReason mit einer Beschreibung oder beides.
Jeder Zuschlag ohne Grund wird doppelt gemeldet: einmal als BR-CO-22 und einmal als BR-38, das dieselbe Prüfung anwendet. Beide haben eine gemeinsame Korrektur.
Was die Regel prüft
Geprüft werden nur cac:AllowanceCharge-Elemente, die direkte Kinder des Wurzelelements Invoice oder CreditNote und als Zuschläge gekennzeichnet sind. Jedes muss mindestens eines der beiden Elemente für den Grund enthalten.
Ein Code ohne Text besteht, ebenso Text ohne Code: Im Versuch wurden beide Varianten der korrigierten Rechnung akzeptiert.
Diese Regel achtet nur auf das Vorhandensein. Ein leeres cbc:AllowanceChargeReasonCode kam im Versuch an ihr vorbei, wurde dann aber von BR-CL-20, PEPPOL-EN16931-CL003 und PEPPOL-EN16931-R008 gemeldet.
Zuschläge an einer Position haben ein eigenes Regelpaar, BR-CO-24 und BR-44. Das Entfernen des Textes zum Grund aus dem Positionszuschlag der umfangreichen Rechnung meldete diese beiden, nicht BR-CO-22.
Der Wortlaut des Textes wird nie gegen den Code beurteilt. BR-CO-06, die Regel für genau diesen Zweck, hat in dieser Version eine Prüfung, die immer besteht.
| Begriff | Bedeutung | UBL-Element |
|---|---|---|
| BG-21 | Zuschläge auf Dokumentenebene | cac:AllowanceCharge[cbc:ChargeIndicator = true] |
| BT-104 | Grund für den Zuschlag auf Dokumentenebene | cac:AllowanceCharge/cbc:AllowanceChargeReason |
| BT-105 | Code für den Grund des Zuschlags 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:
- Fracht oder Bearbeitung wird von einem Versandmodul als feste Gebühr hinzugefügt, das einen Betrag und eine Umsatzsteuerkategorie speichert, aber keine Leistungsart.
- Die Beschreibung des Zuschlags steht in der Druckvorlage und ist nicht Teil der Daten, die an das XML-Mapping übergeben werden.
- Ein Aufschlag wird automatisch angewandt, etwa bei Kleinaufträgen, durch eine Preisregel, die keinen Namen weitergeben kann.
- Leere Felder für den Grund werden vom Serialisierer verworfen, und bei diesem Zuschlag war der Grund leer.
So korrigieren Sie das Dokument
- Finden Sie den Zuschlag anhand des Befunds. Im aufgezeichneten Beispiel ist es
cac:AllowanceCharge[2], weil der Index Nachlässe und Zuschläge unter dem Wurzelelement gemeinsam zählt. - Ermitteln Sie aus dem Auftrag, dem Versanddatensatz oder der Preisregel, die ihn hinzugefügt hat, welche Leistung oder welche Kosten der Zuschlag deckt.
- Suchen Sie die Leistung in der Zuschlagsliste UNTDID 7161, die Peppol veröffentlicht;
FCist zum Beispiel Freight service,DList Delivery undPCist Packing. Schreiben Sie den passenden Code incbc:AllowanceChargeReasonCode, und wenn nichts passt, übermitteln Sie nur Text incbc:AllowanceChargeReason. - Setzen Sie den Code direkt nach
cbc:ChargeIndicatorund den Text nach den Code, beide vorcbc:MultiplierFactorNumericundcbc:Amount, sonst weist der XSD-Prüfschritt das Dokument zurück. - Erfassen Sie den Grund dort, wo der Zuschlag im Quellsystem entsteht, damit spätere Dokumente die Lücke nicht wiederholen.
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: ein Zuschlag auf Dokumentenebene von 10 Prozent ohne Code und ohne Text zum Grund
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:MultiplierFactorNumeric>10</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="GBP">3.50</cbc:Amount>
<cbc:BaseAmount currencyID="GBP">35.00</cbc:BaseAmount>
<!-- tax category omitted from this fragment -->
</cac:AllowanceCharge>Ausschnitt der korrigierten Rechnung: derselbe Zuschlag mit dem Code CG für den Grund und einem Text zum Grund
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>CG</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Example document charge</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="GBP">3.50</cbc:Amount>
<cbc:BaseAmount currencyID="GBP">35.00</cbc:BaseAmount>
<!-- tax category omitted from this fragment -->
</cac:AllowanceCharge>Im Zuschlag auf Dokumentenebene der fehlerhaften Rechnung fehlen zwei Elemente: cbc:AllowanceChargeReasonCode mit CG und cbc:AllowanceChargeReason mit Example document charge. Das fehlerhafte Dokument meldet BR-38 neben BR-CO-22, weil beide Regeln dasselbe am selben Zuschlag prüfen; das Wiederherstellen des Grundes behebt daher beide. CG bedeutet in UNTDID 7161 Cleaning, und der aufgezeichnete Text ist allgemein gehalten; ein echter Zuschlag sollte den Code und den Wortlaut für seine eigene Leistung tragen.
Was der Validator gemeldet hat
- Die fehlerhafte Rechnung meldet
BR-38und BR-CO-22. 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 auf dieselbe Weise aufgebaute Gutschrift meldete im VersuchBR-38undBR-CO-22für denselben Zuschlag. - Der Prüfschritt EN 16931 liest
cbc:ChargeIndicatorals booleschen Wert. Ein Zuschlag, der mit1statttruegeschrieben ist, zählt hier weiterhin als Zuschlag: Im Versuch ohne Grund meldete er diese Regel undBR-38, nebenPEPPOL-EN16931-R043für die Schreibweise. - Ob ein Code zur Zuschlagsliste gehört, ist eine eigene Frage, die
BR-CL-20beantwortet.
Verwandte Regeln
- BR-CO-21 ist die entsprechende Anforderung für Nachlässe auf Dokumentenebene
- BR-CL-20 prüft einen Code für den Grund eines Zuschlags gegen die Liste UNTDID 7161
- BR-CO-12 prüft, dass die Zuschlagsbeträge die Summe der Zuschläge ergeben
- PEPPOL-EN16931-R043 verlangt, dass der Zuschlagsindikator als true oder false geschrieben wird
- 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-22 (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.

