Zum Inhalt springen

Ironfang Finance - Regelreferenz

BR-CO-22: Für jeden Zuschlag auf Dokumentenebene den Grund angeben

Ein Zuschlag auf das ganze Dokument, etwa für Fracht oder Verpackung, muss einen Code für den Grund aus UNTDID 7161, einen Text zum Grund oder beides tragen.

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

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.

BegriffBedeutungUBL-Element
BG-21Zuschläge auf Dokumentenebenecac:AllowanceCharge[cbc:ChargeIndicator = true]
BT-104Grund für den Zuschlag auf Dokumentenebenecac:AllowanceCharge/cbc:AllowanceChargeReason
BT-105Code für den Grund des Zuschlags 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:

  • 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

  1. 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.
  2. Ermitteln Sie aus dem Auftrag, dem Versanddatensatz oder der Preisregel, die ihn hinzugefügt hat, welche Leistung oder welche Kosten der Zuschlag deckt.
  3. Suchen Sie die Leistung in der Zuschlagsliste UNTDID 7161, die Peppol veröffentlicht; FC ist zum Beispiel Freight service, DL ist Delivery und PC ist Packing. Schreiben Sie den passenden Code in cbc:AllowanceChargeReasonCode, und wenn nichts passt, übermitteln Sie nur Text in cbc:AllowanceChargeReason.
  4. Setzen Sie den Code direkt nach cbc:ChargeIndicator und den Text nach den Code, beide vor cbc:MultiplierFactorNumeric und cbc:Amount, sonst weist der XSD-Prüfschritt das Dokument zurück.
  5. Erfassen Sie den Grund dort, wo der Zuschlag im Quellsystem entsteht, damit spätere Dokumente die Lücke nicht wiederholen.

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: 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

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 Invoice und CreditNote. Eine auf dieselbe Weise aufgebaute Gutschrift meldete im Versuch BR-38 und BR-CO-22 für denselben Zuschlag.
  • Der Prüfschritt EN 16931 liest cbc:ChargeIndicator als booleschen Wert. Ein Zuschlag, der mit 1 statt true geschrieben ist, zählt hier weiterhin als Zuschlag: Im Versuch ohne Grund meldete er diese Regel und BR-38, neben PEPPOL-EN16931-R043 für die Schreibweise.
  • Ob ein Code zur Zuschlagsliste gehört, ist eine eigene Frage, die BR-CL-20 beantwortet.

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.