Offizieller Regeltext
[PEPPOL-EN16931-R046] Item net price MUST equal (Gross price - Allowance amount) when gross price is provided.
Der normative Text ist Englisch und wird unverändert zitiert.
Warum dieser Fehler auftritt
Ist ein Bruttopreis (BT-148) angegeben, muss der Nettopreis (BT-146) exakt Bruttopreis minus Preisnachlass (BT-147) sein; es gibt keine Toleranz. In UBL vergleicht die Regel cac:Price/cbc:PriceAmount mit cac:Price/cac:AllowanceCharge/cbc:BaseAmount minus cbc:Amount; in CII ram:NetPriceProductTradePrice/ram:ChargeAmount mit ram:GrossPriceProductTradePrice/ram:ChargeAmount minus ram:AppliedTradeAllowanceCharge/ram:ActualAmount. Sie schlägt fehl, wenn der Nachlass aus einem Prozentsatz abgeleitet und getrennt gerundet wird oder Netto- und Bruttopreis unterschiedlich viele Nachkommastellen haben.
So beheben Sie den Fehler
Formel: PriceAmount = BaseAmount - Amount (UBL) bzw. NetPrice ChargeAmount = GrossPrice ChargeAmount - ActualAmount (CII), als exakte Dezimalzahlen verglichen. Zuerst den Nachlassbetrag berechnen, dann den Nettopreis daraus ableiten, mit gleicher Anzahl Nachkommastellen für alle drei Werte (bis zu vier sind bei Preisen üblich). Lässt sich das Paar Brutto/Nachlass nicht exakt reproduzieren, Preisnachlass und Bruttopreis weglassen und nur den Nettopreis angeben, der immer ausreicht.
Beispiel (gültig)
<cac:Price>
<cbc:PriceAmount currencyID="EUR">85.50</cbc:PriceAmount>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:Amount currencyID="EUR">4.50</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">90.00</cbc:BaseAmount>
</cac:AllowanceCharge>
</cac:Price>
Was der Validator prüft
Geprüftes Element (Kontext):
UBL
cac:Price/cac:AllowanceChargeTest (XPath):
not(cbc:BaseAmount) or xs:decimal(../cbc:PriceAmount) = xs:decimal(cbc:BaseAmount) - xs:decimal(cbc:Amount)CII
rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePriceTest (XPath):
not(ram:ChargeAmount) or xs:decimal(../ram:NetPriceProductTradePrice/ram:ChargeAmount) = xs:decimal(ram:ChargeAmount) - u:decimalOrZero(ram:AppliedTradeAllowanceCharge/ram:ActualAmount[1])
Rechnung prüfen
Legen Sie Ihre XML- oder PDF-Datei im Validator ab; jede verletzte Regel ist mit ihrer Seite hier verlinkt. Kostenlos, ohne Konto, die Datei wird nicht gespeichert.
Dieselbe Prüfung per API:
curl -F file=@invoice.xml https://einvoicechecker.com/v1/validateVerwandte Regeln
PEPPOL-EN16931-R001Geschäftsprozess-Kennung (BT-23) fehltPEPPOL-EN16931-R002No more than one note is allowed on document level, unless both the buyer and seller…PEPPOL-EN16931-R003Weder Käuferreferenz noch Bestellreferenz angegebenPEPPOL-EN16931-R004Spezifikationskennung ist nicht die Peppol-BIS-Billing-3.0-KennungPEPPOL-EN16931-R005Steuerwährung ist gleich der RechnungswährungPEPPOL-EN16931-R006Only one invoiced object is allowed on document levelPEPPOL-EN16931-R007Geschäftsprozess-Kennung hat das falsche FormatPEPPOL-EN16931-R008Dokument enthält leere Elemente
Häufige Fragen
Was bedeutet PEPPOL-EN16931-R046?
PEPPOL-EN16931-R046 ist eine Peppol-BIS-Billing-3.0-Regel: Item net price MUST equal (Gross price - Allowance amount) when gross price is provided.
Wird meine Rechnung wegen PEPPOL-EN16931-R046 abgelehnt?
Ja. PEPPOL-EN16931-R046 ist als „fatal“ eingestuft; Validatoren (KoSIT, Peppol Access Points, ZRE/OZG-RE) weisen die Rechnung zurück, bis der Fehler behoben ist.
Für welche Formate gilt PEPPOL-EN16931-R046?
Rechnungen und Gutschriften im Peppol-Netzwerk (UBL) und, weil XRechnung die Peppol-Regeln übernimmt, jede XRechnung. Syntax: UBL und CII.
Quelle: Peppol BIS Billing 3.0.20 (November 2025). Katalog erzeugt aus dem offiziellen Schematron am 2026-10-14.