Konto
Deutsch

PEPPOL-EN16931-R120: Positionsnettobetrag entspricht nicht Menge mal Preis

Peppol-BIS-Billing-3.0-Regel · Fehler · UBL / CII

StandardPeppol BIS Billing 3.0 (OpenPeppol)SchweregradFehler: die Rechnung wird abgelehntSyntaxUBL, CIIGilt fürRechnungen und Gutschriften im Peppol-Netzwerk (UBL) und, weil XRechnung die Peppol-Regeln übernimmt, jede XRechnung.

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:CreditNoteLine

Test (XPath):

u:slack($lineExtensionAmount, ($quantity * ($priceAmount div $baseQuantity)) + $chargesTotal - $allowancesTotal, 0.02)

CII

ram:IncludedSupplyChainTradeLineItem

Test (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.

Rechnung prüfen →

Dieselbe Prüfung per API:

curl -F file=@invoice.xml https://einvoicechecker.com/v1/validate

Verwandte Regeln

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.