Auf dieser Seite
Die kurze Antwort
PEPPOL-EN16931-R040 schlägt fehl, wenn ein cac:AllowanceCharge sowohl cbc:BaseAmount als auch cbc:MultiplierFactorNumeric enthält und cbc:Amount um mehr als 0.02 von Grundbetrag x Prozentsatz / 100 abweicht. Stellen Sie in den Quelldaten fest, welcher der drei Werte falsch ist, und korrigieren Sie genau diesen.
cbc:MultiplierFactorNumeric ist ein Prozentsatz: 10 bedeutet zehn Prozent. Es ist kein Faktor wie 0.1.
Was die Regel prüft
Die Regel läuft für jedes cac:AllowanceCharge direkt unter dem Wurzelelement des Dokuments und direkt unter einer Position. Nachlässe und Zuschläge werden gleich behandelt; cbc:ChargeIndicator spielt keine Rolle. Der Nachlass innerhalb von cac:Price ist nicht erfasst.
Fehlt cbc:BaseAmount oder cbc:MultiplierFactorNumeric, hat diese Regel nichts zu prüfen und besteht. Ein Nachlass oder Zuschlag ohne beide Elemente, nur mit einem festen cbc:Amount, ist in Ordnung.
Sind beide vorhanden, ist der erwartete Betrag Grundbetrag x Prozentsatz / 100. Das Produkt wird nicht gerundet. Die Regel besteht, wenn cbc:Amount höchstens 0.02 davon abweicht, und die Grenze ist eingeschlossen: Genau 0.02 Abweichung besteht, alles darüber schlägt fehl.
Mit dem Validator bestätigt bei einem Betrag von 3.50 und 10 Prozent: Ein Grundbetrag von 35.20 (erwartet 3.52, 0.02 Abweichung) besteht; ein Grundbetrag von 35.21 (erwartet 3.521) schlägt fehl; ein Grundbetrag von 35.30 (erwartet 3.53) schlägt fehl. Dasselbe gilt unterhalb des Betrags und für einen Nachlass auf Positionsebene.
Ein Prozentsatz von 0 mit einem Grundbetrag erwartet einen Betrag von 0; ein Betrag ungleich null schlägt daher fehl.
| Begriff | Bedeutung | UBL-Element |
|---|---|---|
| BG-20 | Nachlässe auf Dokumentenebene | cac:AllowanceCharge[cbc:ChargeIndicator = false] |
| BG-21 | Zuschläge auf Dokumentenebene | cac:AllowanceCharge[cbc:ChargeIndicator = true] |
| BG-27 | Nachlässe auf Ebene der Rechnungsposition | cac:InvoiceLine/cac:AllowanceCharge[cbc:ChargeIndicator = false] |
| BG-28 | Zuschläge auf Ebene der Rechnungsposition | cac:InvoiceLine/cac:AllowanceCharge[cbc:ChargeIndicator = true] |
Wie es in einer Integration dazu kommt
Mögliche Ursachen, abgeleitet aus der Form der Regel und nicht aus gemessener Nutzung:
- Der Prozentsatz wird als Bruch übermittelt, 0.1 für zehn Prozent, sodass der erwartete Betrag ein Hundertstel des beabsichtigten ist.
- Der Grundbetrag stammt aus einer anderen Zahl als der, auf die der Rabatt berechnet wurde, zum Beispiel aus dem Bruttowert der Position statt aus dem Wert nach einem vorherigen Rabatt.
- Der Betrag wurde verhandelt oder von Hand geändert, nachdem der Prozentsatz angewendet war, und Prozentsatz und Grundbetrag blieben unverändert.
- Mehrere prozentuale Rabatte werden im Quellsystem nacheinander angewendet, aber als ein einziger Nachlass mit nur dem ersten Prozentsatz übermittelt.
- Der Betrag wird pro Einheit gerundet und dann hochmultipliziert, was um mehr als 0.02 von einer einzigen Berechnung auf den gesamten Grundbetrag abweicht.
So korrigieren Sie das Dokument
- Nehmen Sie das fehlerhafte
cac:AllowanceChargeaus der Fundstelle des Befunds und berechnen Siecbc:BaseAmountxcbc:MultiplierFactorNumeric/ 100 mit Dezimalarithmetik. - Entscheiden Sie anhand der vereinbarten Konditionen, welcher Wert falsch ist. Ist der Prozentsatz oder der Grundbetrag falsch, korrigieren Sie ihn und lassen Sie den Betrag unverändert.
- Ist der Betrag falsch, korrigieren Sie ihn und berechnen Sie dann alles neu, was davon abhängt: bei einem Eintrag auf Positionsebene den Nettobetrag der Position, bei einem Eintrag auf Dokumentenebene die Summe der Nachlässe oder Zuschläge, die Umsatzsteueraufschlüsselung und die Gesamtbeträge des Dokuments.
- Ist der Betrag eine feste Summe, die nie aus einem Prozentsatz abgeleitet wurde, übermitteln Sie
cbc:Amountallein und entfernen Sie sowohlcbc:BaseAmountals auchcbc:MultiplierFactorNumeric. Entfernen Sie nur eines davon, schlägt stattdessenPEPPOL-EN16931-R041oderPEPPOL-EN16931-R042fehl.
Das aufgezeichnete Beispiel ist ein Zuschlag auf Dokumentenebene von 3.50 auf einen Grundbetrag von 35.00.
Fehlerhaft: 35.00 x 20 / 100 = 7.00, übermittelter Betrag 3.50, Differenz 3.50 Korrigiert: 35.00 x 10 / 100 = 3.50, übermittelter Betrag 3.50, Differenz 0.00 Zulässige Differenz: bis einschließlich 0.02
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: 20 Prozent von 35.00 sind 7.00, der Zuschlagsbetrag lautet aber 3.50
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>CG</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Example document charge</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>20</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: 10 Prozent von 35.00 sind die berechneten 3.50
<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>Nur cbc:MultiplierFactorNumeric unterscheidet sich: 20 im fehlerhaften Dokument, 10 im korrigierten. Das fehlerhafte Dokument meldet nur PEPPOL-EN16931-R040, weil der Betrag von 3.50 weiterhin zur Summe der Zuschläge und zu den übrigen Summen passt. Hätte man stattdessen den Betrag geändert, würde die Summe der Zuschläge nicht mehr stimmen: Mit dem Betrag auf 3.53 und sonst keiner Änderung meldet der Validator neben dieser Regel auch BR-CO-12.
Was der Validator gemeldet hat
- Die fehlerhafte Rechnung meldet PEPPOL-EN16931-R040. 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 UBL
InvoiceundCreditNote, auf Dokumentenebene und incac:InvoiceLineodercac:CreditNoteLine. Für Gutschriften auf beiden Ebenen bestätigt. - Der Nachlass innerhalb von
cac:Pricefällt nicht unter diese Regel. Ein dort ergänzter Prozentsatz löst die WarnungenUBL-CR-635undUBL-CR-671aus, aber keinen Befund dieser Regel. - Der festgeschriebene Test liest ein fehlendes
cbc:Amountals 0, doch die vollständige Prüfkette kommt nie so weit: Eincac:AllowanceChargeohnecbc:Amountwird vom XSD-Prüfschritt abgewiesen, und die späteren Prüfschritte werden übersprungen. - Die Regel prüft nicht, ob der Grundbetrag die richtige Basis ist, sondern nur, ob die drei Zahlen zueinander passen.
Verwandte Regeln
- PEPPOL-EN16931-R041 schlägt fehl, wenn ein Prozentsatz ohne Grundbetrag übermittelt wird
- PEPPOL-EN16931-R042 schlägt fehl, wenn ein Grundbetrag ohne Prozentsatz übermittelt wird
- BR-CO-12 prüft die Summe der Zuschläge, sobald sich der Betrag eines Zuschlags auf Dokumentenebene ändert
- BR-CO-11 prüft die Summe der Nachlässe, sobald sich der Betrag eines Nachlasses auf Dokumentenebene ändert
- 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-20.
Die offizielle Definition von PEPPOL-EN16931-R040 (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.

