Auf dieser Seite
Die kurze Antwort
BR-DEC-27 schlägt fehl, wenn ein Zuschlag auf einer Position, also ein cac:AllowanceCharge innerhalb von cac:InvoiceLine oder cac:CreditNoteLine, dessen cbc:ChargeIndicator true ist, ein cbc:Amount mit mehr als zwei Nachkommastellen hat. Runden Sie den Zuschlag auf zwei Nachkommastellen und schreiben Sie ihn zum Beispiel als 2.50.
Ein Zuschlag auf die Position wird zum Nettobetrag der Position addiert und muss daher ein zahlbarer Betrag sein. Anders als ein Rabatt hat er keine Form auf Preisebene, die zusätzliche Nachkommastellen behalten dürfte: PEPPOL-EN16931-R044 lässt Zuschläge innerhalb von cac:Price überhaupt nicht zu.
Was die Regel prüft
Die Regel wählt die Nachlässe und Zuschläge einer Position aus, deren Kennzeichen true ist, und zählt, was in ihrem cbc:Amount nach dem Dezimalpunkt folgt. Mehr als zwei Zeichen scheitern, daher scheitert das aufgezeichnete 2.500, obwohl sein Wert 2.5 ist.
Weniger Nachkommastellen werden immer akzeptiert. Im Versuch bestand derselbe Zuschlag, als 2.5 geschrieben, alle Prüfschritte.
Ob der Zuschlag ein Prozentsatz ist, spielt keine Rolle. Im Versuch meldete ein fester Zuschlag von 2.500 ohne Grundbetrag und ohne Prozentsatz diese Regel und UBL-DT-01, genau wie der prozentuale Zuschlag.
Ein ungerundeter Zuschlag kann auch die Arithmetik stören. Im Versuch brachte 2.525 zusätzlich PEPPOL-EN16931-R040 und PEPPOL-EN16931-R120, weil er um mehr als 0.02 von 10 Prozent von 25.00 und von dem Nettobetrag der Position abweicht, den er ergeben sollte; 2.504 blieb innerhalb beider Toleranzen und meldete nur die Befunde zu den Nachkommastellen.
| Begriff | Bedeutung | UBL-Element |
|---|---|---|
| BT-141 | Betrag des Zuschlags auf Ebene der Rechnungsposition | cac:InvoiceLine/cac:AllowanceCharge/cbc:Amount (cac:CreditNoteLine/cac:AllowanceCharge/cbc:Amount in a credit note), where cbc:ChargeIndicator is true |
Wie es in einer Integration dazu kommt
Mögliche Ursachen, abgeleitet aus der Form der Regel und nicht aus gemessener Nutzung:
- Der Zuschlag wird als Prozentsatz des Positionswerts berechnet und mit der Genauigkeit der Berechnung geschrieben.
- Zuschläge und Stückpreise teilen sich ein Zahlenformat, das auf drei Nachkommastellen eingestellt ist, weil manche Preise sie brauchen.
- Ein Zuschlag, der in einer Spalte mit drei oder vier Nachkommastellen gespeichert ist, wird mit voller Genauigkeit serialisiert.
So korrigieren Sie das Dokument
- Runden Sie den Zuschlag der Position dort auf zwei Nachkommastellen, wo er berechnet wird, nach der Rundungsregel Ihres Fakturierungssystems.
- Schreiben Sie den gerundeten Wert in
cbc:Amountimcac:AllowanceChargeder Position, dessencbc:ChargeIndicatortrueist, ohne Auffüllen und ohne Leerraum. - Verwenden Sie beim Bilden des Nettobetrags der Position den gerundeten, nicht den ungerundeten Zuschlag, und halten Sie ihn innerhalb von 0.02 von Grundbetrag mal Prozentsatz geteilt durch 100, wenn Sie beides übermitteln.
- Formatieren Sie den Grundbetrag des Zuschlags, falls vorhanden, nach derselben Regel mit zwei Nachkommastellen; er wird gesondert geprüft.
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 von 10 Prozent auf 25.00, als 2.500 geschrieben
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">27.50</cbc:LineExtensionAmount>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Out-of-hours surcharge</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="GBP">2.500</cbc:Amount>
<cbc:BaseAmount currencyID="GBP">25.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<!-- item and price omitted from this fragment -->
</cac:InvoiceLine>Ausschnitt der korrigierten Rechnung: der Zuschlag als 2.50 geschrieben, zwei Einheiten zu 12.5 ergeben den Rest der 27.50
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">27.50</cbc:LineExtensionAmount>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Out-of-hours surcharge</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="GBP">2.50</cbc:Amount>
<cbc:BaseAmount currencyID="GBP">25.00</cbc:BaseAmount>
</cac:AllowanceCharge>
<!-- item omitted from this fragment -->
<cac:Price>
<cbc:PriceAmount currencyID="GBP">12.5</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
</cac:Price>
</cac:InvoiceLine>Nur das cbc:Amount des Zuschlags ändert sich: 2.500 in der fehlerhaften Rechnung, 2.50 in der korrigierten. Beide entsprechen 10 Prozent des Grundbetrags von 25.00, und zwei Einheiten zu 12.5 plus der Zuschlag ergeben in beiden den Nettobetrag der Position von 27.50, sodass die Peppol-Arithmetik so oder so besteht. Das fehlerhafte Dokument meldet BR-DEC-27 am cac:AllowanceCharge der Position und UBL-DT-01 an dessen cbc:Amount: Jeder Betrag außer dem Artikelpreis und Rabatten auf Preisebene ist auf zwei Nachkommastellen begrenzt, ein Zuschlag auf die Position eingeschlossen. Das Umschreiben des einen Werts behebt beide.
Was der Validator gemeldet hat
- Die fehlerhafte Rechnung meldet BR-DEC-27 und UBL-DT-01. 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 meldete eine Gutschriftsposition mit demselben, als2.500geschriebenen Zuschlag dasselbe Paar. - Zuschläge auf Dokumentenebene liegen außerhalb dieser Regel;
BR-DEC-05begrenzt sie auf dieselbe Weise. - Gemeldet wird sie vom Prüfschritt EN 16931. Der Peppol-Prüfschritt prüft Werte statt ihrer geschriebenen Form und kommt daher nur hinzu, wenn der Zuschlag auch rechnerisch falsch ist, wie der Fall
2.525oben zeigt.
Verwandte Regeln
- BR-DEC-28 begrenzt den Grundbetrag desselben Zuschlags auf Positionsebene
- UBL-DT-01 wird neben dieser Regel am Zuschlagsbetrag gemeldet
- PEPPOL-EN16931-R120 prüft, dass der Nettobetrag der Position die Zuschläge der Position enthält
- BR-DEC-05 ist dieselbe Grenze für Zuschläge auf Dokumentenebene
- 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-28.1: Quelle geprüft am 2026-09-28, Erklärung zuletzt aktualisiert am 2026-09-28.
Die offizielle Definition von BR-DEC-27 (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.

