Offizieller Regeltext
[PEPPOL-EN16931-R120] Invoice line net amount MUST equal (Invoiced quantity * (Item net price/item price base quantity) + Sum of invoice line charge amount - sum of invoice line allowance amount
Der normative Text ist Englisch und wird unverändert zitiert.
Warum dieser Fehler auftritt
Peppol prüft die Arithmetik jeder Position: Der Positionsnettobetrag (BT-131) muss abgerechneter Menge (BT-129) mal Nettopreis (BT-146) geteilt durch die Preisbasismenge (BT-149, Standard 1) plus Positionszuschläge minus Positionsnachlässe entsprechen, mit einer Toleranz von 0.02. Die Regel liest cbc:LineExtensionAmount, cbc:InvoicedQuantity, cac:Price/cbc:PriceAmount, cac:Price/cbc:BaseQuantity und die cac:AllowanceCharge-Beträge der Position (UBL) bzw. ram:LineTotalAmount, ram:BilledQuantity, ram:NetPriceProductTradePrice/ram:ChargeAmount, ram:BasisQuantity und ram:SpecifiedTradeAllowanceCharge (CII). Typische Ursachen: Bruttopreis statt Nettopreis exportiert, Preis je 100 Einheiten ohne Basismenge, bereits im Preis abgezogene Positionsrabatte nochmals abgezogen oder Rundungsdifferenz über zwei Cent.
So beheben Sie den Fehler
Formel: BT-131 = round(BT-129 x (BT-146 / BT-149) + Σ Positionszuschläge - Σ Positionsnachlässe, 2). Den Nettoeinzelpreis in cbc:PriceAmount exportieren; gilt der Preis je 10 oder 100 Einheiten, cac:Price/cbc:BaseQuantity entsprechend setzen, mit demselben unitCode wie die Menge. Einen Positionsrabatt entweder im Preis (Preisnachlass) oder als cac:AllowanceCharge auf Positionsebene modellieren, nicht beides. cbc:LineExtensionAmount aus den exportierten Werten berechnen, damit die Abweichung innerhalb von 0.02 bleibt.
Beispiel (gültig)
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">250</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">31.25</cbc:LineExtensionAmount>
...
<cac:Price><cbc:PriceAmount currencyID="EUR">12.50</cbc:PriceAmount><cbc:BaseQuantity unitCode="C62">100</cbc:BaseQuantity></cac:Price>
</cac:InvoiceLine>
Was der Validator prüft
Geprüftes Element (Kontext):
UBL
cac:InvoiceLine | cac:CreditNoteLineTest (XPath):
u:slack($lineExtensionAmount, ($quantity * ($priceAmount div $baseQuantity)) + $chargesTotal - $allowancesTotal, 0.02)CII
ram:IncludedSupplyChainTradeLineItemTest (XPath):
u:slack($lineExtensionAmount, ($quantity * ($priceAmount div $baseQuantity)) + $chargesTotal - $allowancesTotal, 0.02)
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-R120?
PEPPOL-EN16931-R120 ist eine Peppol-BIS-Billing-3.0-Regel: Invoice line net amount MUST equal (Invoiced quantity * (Item net price/item price base quantity) + Sum of invoice line charge amount - sum of invoice line allowance amount
Wird meine Rechnung wegen PEPPOL-EN16931-R120 abgelehnt?
Ja. PEPPOL-EN16931-R120 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-R120?
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.