Zum Inhalt springen

Ironfang Finance - Regelreferenz

BR-CO-24: Jedem Zuschlag an einer Position einen Code oder Text für den Grund geben

Ein Zuschlag an einer Position einer Rechnung oder Gutschrift braucht cbc:AllowanceChargeReasonCode, cbc:AllowanceChargeReason oder beides. BR-44 meldet dieselbe Lücke.

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

Auf dieser Seite

Die kurze Antwort

BR-CO-24 schlägt fehl, wenn ein cac:AllowanceCharge einer Position mit cbc:ChargeIndicator true weder cbc:AllowanceChargeReasonCode noch cbc:AllowanceChargeReason enthält. Sagen Sie, warum die Position mehr kostet: mit einem Code aus UNTDID 7161, einem Text oder beidem.

Ein fehlerhaftes Dokument meldet auch BR-44. Diese Regel aus EN 16931 führt genau dieselbe Prüfung am selben Zuschlag durch, daher erscheinen beide immer zusammen, und ein Grund behebt beide.

Was die Regel prüft

Jedes cac:AllowanceCharge direkt in einer Position, das als Zuschlag gelesen wird, wird für sich geprüft. Eine Position mit einem Rabatt und einem Aufschlag wird Element für Element beurteilt, und der Rabatt bleibt BR-CO-23 überlassen.

Eines der beiden Elemente genügt, und nur sein Vorhandensein zählt. Im Versuch bestand der Zuschlag mit nichts als cbc:AllowanceChargeReasonCode ABL alle Prüfschritte, während ein leeres <cbc:AllowanceChargeReason/> BR-CO-24 und BR-44 bestand und von PEPPOL-EN16931-R008 abgewiesen wurde.

Codes für Zuschläge stammen aus einer anderen Liste als Codes für Rabatte. Im Versuch meldete der Code 95, der einen Rabatt bezeichnet, am Zuschlag der Position BR-CL-20 und PEPPOL-EN16931-CL003.

Zuschläge direkt unter dem Wurzelelement liegen außerhalb dieser Regel. Im Versuch meldete ein Zuschlag auf Dokumentenebene, dem der Grund entfernt wurde, stattdessen BR-CO-22 und BR-38.

BegriffBedeutungUBL-Element
BG-28Zuschläge auf Ebene der Rechnungspositioncac:InvoiceLine/cac:AllowanceCharge[cbc:ChargeIndicator = true] (cac:CreditNoteLine/cac:AllowanceCharge in a credit note)
BT-144Grund für den Zuschlag auf Ebene der Rechnungspositioncac:InvoiceLine/cac:AllowanceCharge/cbc:AllowanceChargeReason
BT-145Code für den Grund des Zuschlags auf Ebene der Rechnungspositioncac:InvoiceLine/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:

  • Ein Aufschlag wie eine Mindermengen- oder Eilgebühr wird je Position von einer Preisregel hinzugefügt, die nur den Betrag speichert.
  • Das Mapping der Positionszuschläge wurde vom Mapping der Positionsrabatte kopiert, und die Felder für den Grund wurden nicht übernommen.
  • Der Text für den Grund ist in der Quelle optional, und wenn er leer ist, wird kein Code an seiner Stelle geschrieben.
  • Eine Bereinigung kürzt den Text für den Grund auf nichts, und das Element wird dann weggelassen.

So korrigieren Sie das Dokument

  1. Finden Sie den Zuschlag über den Befund, zum Beispiel cac:InvoiceLine[1]/cac:AllowanceCharge[2]. Der zweite Index zählt jedes cac:AllowanceCharge der Position, den Rabatt davor eingeschlossen.
  2. Übernehmen Sie die Art des Zuschlags aus dem Preisdatensatz, der ihn erzeugt hat.
  3. Entspricht die Art einem Eintrag in UNTDID 7161, schreiben Sie diesen Code in cbc:AllowanceChargeReasonCode. Fügen Sie cbc:AllowanceChargeReason mit einer Beschreibung hinzu, oder senden Sie den Text allein, wenn kein Code passt.
  4. Setzen Sie die Elemente für den Grund direkt nach cbc:ChargeIndicator, vor cbc:MultiplierFactorNumeric und cbc:Amount. Der Betrag des Zuschlags und der Nettobetrag der Position bleiben, wie sie sind.

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: Der Zuschlag von 0.01 an Position 1 hat einen Betrag und nichts, was sagt, wofür

<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <!-- note, quantity, line net amount, accounting cost, order line reference and line allowance omitted from this fragment -->
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
    <cbc:Amount currencyID="GBP">0.01</cbc:Amount>
  </cac:AllowanceCharge>
  <!-- item and price omitted from this fragment -->
</cac:InvoiceLine>

Ausschnitt der korrigierten Rechnung: Der Positionszuschlag trägt den Text Example charge als Grund

<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <!-- note, quantity, line net amount, accounting cost, order line reference and line allowance omitted from this fragment -->
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
    <cbc:AllowanceChargeReason>Example charge</cbc:AllowanceChargeReason>
    <cbc:Amount currencyID="GBP">0.01</cbc:Amount>
  </cac:AllowanceCharge>
  <!-- item and price omitted from this fragment -->
</cac:InvoiceLine>

An Position 1 gibt die korrigierte Rechnung dem Zuschlag von 0.01 den Text Example charge als Grund; die fehlerhafte Rechnung hat keinen Grund daran und ist sonst gleich. Das fehlerhafte Dokument meldet BR-44 zusammen mit BR-CO-24, beide an cac:InvoiceLine[1]/cac:AllowanceCharge[2], weil die beiden Regeln eine gemeinsame Prüfung haben. Der Positionsnachlass vor dem Zuschlag behält seinen Code 95 und wird nicht gemeldet.

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 cac:InvoiceLine in einer Invoice und für cac:CreditNoteLine in einer CreditNote. Im Versuch meldete die Gutschriftfassung des Beispiels BR-44 und BR-CO-24 an cac:CreditNoteLine[1]/cac:AllowanceCharge[2].
  • Beide Regeln gehören zum Prüfschritt EN 16931, und der Prüfschritt Peppol hat zu einem fehlenden Grund nichts zu sagen. Ist ein Code vorhanden, prüft Peppol ihn als PEPPOL-EN16931-CL003 gegen die Liste der Zuschläge.
  • BR-44 hat in dieser Referenz keine eigene Seite; alles hier gilt unverändert auch dafür.
  • Ein Zuschlag an einer Position hat keine eigene Umsatzsteuerkategorie. Er ist Teil des Nettobetrags der Position und wird mit ihr besteuert.

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 BR-CO-24 (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.