Auf dieser Seite
Die kurze Antwort
PEPPOL-EN16931-R044 schlägt fehl, wenn das cac:AllowanceCharge innerhalb des cac:Price einer Position ein cbc:ChargeIndicator hat, das nicht false ist. Dieses Element dient nur dazu, den Rabatt auf den Artikelpreis und den Bruttopreis zu tragen. Ist der Eintrag ein Rabatt, setzen Sie das Kennzeichen auf false, wie es die korrigierte Rechnung tut.
Ein echter Aufschlag auf den Stückpreis kann dort nicht übermittelt werden. Entfernen Sie das Element auf Preisebene und rechnen Sie den Aufschlag entweder in den Nettopreis ein oder übermitteln Sie ihn als Zuschlag auf der Position mit eigenem Grund.
Was die Regel prüft
Geprüft wird jedes cac:Price/cac:AllowanceCharge, in Rechnungs- und Gutschriftpositionen. Nach dem Entfernen von Leerraum am Rand muss sein cbc:ChargeIndicator genau false lauten.
true schlägt fehl, ebenso 0. Im Versuch akzeptierte das Schema 0 im Element auf Preisebene, diese Regel lehnte es aber ab, weil sie Text statt boolescher Werte vergleicht; 1 wurde auf dieselbe Weise abgelehnt.
Die Beträge werden hier nicht untersucht. Die fehlerhafte Rechnung erfüllt PEPPOL-EN16931-R046 weiterhin, denn diese Regel zieht den Betrag unabhängig vom Kennzeichen vom Bruttopreis ab.
Einträge direkt auf der Position oder unter dem Wurzelelement des Dokuments, wo Zuschläge erlaubt sind, liegen außerhalb dieser Regel; ihre Schreibweise prüft PEPPOL-EN16931-R043.
| Begriff | Bedeutung | UBL-Element |
|---|---|---|
| - | Kennzeichen des Rabatts auf den Preis | cac:InvoiceLine/cac:Price/cac:AllowanceCharge/cbc:ChargeIndicator |
| BT-147 | Rabatt auf den Artikelpreis | cac:InvoiceLine/cac:Price/cac:AllowanceCharge/cbc:Amount |
| BT-148 | Bruttopreis des Artikels | cac:InvoiceLine/cac:Price/cac:AllowanceCharge/cbc:BaseAmount |
Wie es in einer Integration dazu kommt
Mögliche Ursachen, abgeleitet aus der Form der Regel und nicht aus gemessener Nutzung:
- Das Kennzeichen wird aus dem Vorzeichen einer Preisanpassung abgeleitet, und eine positive Anpassung wird als Zuschlag gelesen.
- Eine gemeinsame Routine, die jedes
cac:AllowanceChargeschreibt, erhält für das Element auf Preisebene das falsche Flag. - Die Preisliste im Quellsystem enthält einen Grundpreis und einen Aufschlag, und das Mapping bildet den Aufschlag als Zuschlag auf den Preis ab.
- Boolesche Werte werden im gesamten Dokument als
1und0geschrieben.
So korrigieren Sie das Dokument
- Öffnen Sie die im Befund genannte Position und sehen Sie sich
cac:Price/cac:AllowanceChargean. - Führt
cbc:Amountvom Bruttopreis incbc:BaseAmounthinunter zum Nettopreis incbc:PriceAmount, ist es ein Rabatt. Schreiben Siefalseund ändern Sie sonst nichts. - Ist es ein Aufschlag auf den Preis, löschen Sie das
cac:AllowanceChargeauf Preisebene. Übermitteln Sie dann entweder den Nettopreis mit dem incbc:PriceAmountenthaltenen Aufschlag, oder behalten Sie den Grundpreis bei und fügen Sie direkt in der Position eincac:AllowanceChargemitcbc:ChargeIndicatorgleichtrue, einem Grund und dem Aufschlagsbetrag für die gesamte Position hinzu. - Berechnen Sie beim Positionszuschlag
cbc:LineExtensionAmountneu als Menge mal Preis plus Zuschlag, wasPEPPOL-EN16931-R120prüft. Im Versuch mit der aufgezeichneten Position war ein Preis von 10, eine Menge von 2 und ein Positionszuschlag von 5.00 bei einem Nettobetrag der Position von 25.00 fehlerfrei.
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 Rabatt auf den Preis von 2.5 ist als Zuschlag gekennzeichnet
<cac:Price>
<cbc:PriceAmount currencyID="GBP">12.5</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:Amount currencyID="GBP">2.5</cbc:Amount>
<cbc:BaseAmount currencyID="GBP">15</cbc:BaseAmount>
</cac:AllowanceCharge>
</cac:Price>Ausschnitt der korrigierten Rechnung: dieselben Zahlen, das Kennzeichen auf false gesetzt
<cac:Price>
<cbc:PriceAmount currencyID="GBP">12.5</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:Amount currencyID="GBP">2.5</cbc:Amount>
<cbc:BaseAmount currencyID="GBP">15</cbc:BaseAmount>
</cac:AllowanceCharge>
</cac:Price>Nur das Kennzeichen im cac:AllowanceCharge auf Preisebene unterscheidet sich: true in der fehlerhaften Rechnung, false in der korrigierten. Das fehlerhafte Dokument meldet nur PEPPOL-EN16931-R044, weil die Zahlen bereits die eines Rabatts waren: 15 minus 2.5 ergibt den Nettopreis von 12.5. Im Versuch als echter Aufschlag, mit einem Bruttopreis von 10 und denselben 2.5 als Zuschlag gekennzeichnet, wurde zusätzlich PEPPOL-EN16931-R046 gemeldet, da diese Regel 10 minus 2.5 erwartet.
Was der Validator gemeldet hat
- Die fehlerhafte Rechnung meldet PEPPOL-EN16931-R044. 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
cac:InvoiceLineundcac:CreditNoteLine; eine Gutschrift, deren Rabatt auf den Preis mittruegekennzeichnet war, meldete im Versuch nur diese Regel. - Dies ist eine Einschränkung von Peppol. Der Prüfschritt EN 16931 bestand im aufgezeichneten Beispiel.
- Keine Summe hängt vom Element auf Preisebene ab. Der Nettobetrag der Position wird aus
cbc:PriceAmountberechnet; das Entfernen des Elements lässt daher alle Beträge unverändert.
Verwandte Regeln
- PEPPOL-EN16931-R046 prüft, ob der Nettopreis der Bruttopreis abzüglich des Rabatts auf den Preis ist
- BR-28 lehnt einen negativen Bruttopreis im selben Element ab
- PEPPOL-EN16931-R120 prüft den Nettobetrag der Position, sobald ein Aufschlag zu einem Positionszuschlag wird
- PEPPOL-EN16931-R043 prüft die Schreibweise des Kennzeichens bei Einträgen auf Dokument- und Positionsebene
- 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-24.
Die offizielle Definition von PEPPOL-EN16931-R044 (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.

