PEPPOL-EN16931-R046Item net price MUST equal (Gross price - Allowance amount) when gross price is provided.

Offizieller Regeltext

Wird ein Bruttopreis angegeben, muss der Nettopreis genau daraus folgen: Bruttopreis minus Preisnachlass, ohne Toleranz. Die drei Zahlen beschreiben eine einzige Rechnung und müssen aufgehen.

Schweregrad
Fehler
Gilt für
CII, UBL
Regelwerk
v2026-08-31
Geprüft am

Geschrieben und gegen das offizielle KoSIT-Regelwerk geprüft von Dmytro Yalanskyi, NormAPI.

Warum tritt PEPPOL-EN16931-R046 auf?

Der Nettopreis kommt aus der Preisfindung und ist bereits gerundet; Bruttopreis und Nachlass werden zur Nachvollziehbarkeit ergänzt und stammen aus der Konditionspflege. Zwischen beiden liegt oft ein Cent — und der reicht: verglichen wird mit einem schlichten Gleichheitszeichen auf Dezimalzahlen, ohne jede Toleranz. Die Rechenregeln der Norm sind da großzügiger, BR-CO-17 etwa lässt eine ganze Währungseinheit zu. In CII kommen zwei Eigenheiten dazu: ein fehlender Nachlass wird über u:decimalOrZero als 0 gerechnet, und von mehreren angewandten Nachlässen zählt nur der erste.

Was der Validator prüft

Der Ausdruck, den das offizielle KoSIT-Regelwerk auswertet — nicht paraphrasiert, sondern aus der ausgelieferten Schematron-Datei gelesen. UBL und CII adressieren verschiedene Dokumentbäume, deshalb steht dieselbe Regel je Syntax anders da.

UBL
not(cbc:BaseAmount) or xs:decimal(../cbc:PriceAmount) = xs:decimal(cbc:BaseAmount) - xs:decimal(cbc:Amount)
CII
not(ram:ChargeAmount) or xs:decimal(../ram:NetPriceProductTradePrice/ram:ChargeAmount) = xs:decimal(ram:ChargeAmount) - u:decimalOrZero(ram:AppliedTradeAllowanceCharge/ram:ActualAmount[1])

Quelle: Regelwerk v2026-08-31

Wie behebt man PEPPOL-EN16931-R046?

Leiten Sie cbc:PriceAmount aus cbc:BaseAmount minus cbc:Amount des Preis-Abschlags ab (UBL) beziehungsweise ram:ChargeAmount minus ram:ActualAmount in CII. Wenn Sie den Bruttopreis nicht belegen können, lassen Sie ihn und den Nachlass weg — der Nettopreis allein genügt.

Im XML

Ausschnitt in UBL. Der CII-Pfad steht oben im Text — dieselbe Änderung, andere Elementnamen.

Fehlerhaft
<cac:Price>
  <cbc:PriceAmount currencyID="EUR">105.00</cbc:PriceAmount>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
    <cbc:Amount currencyID="EUR">10.00</cbc:Amount>
    <cbc:BaseAmount currencyID="EUR">110.00</cbc:BaseAmount>
  </cac:AllowanceCharge>
</cac:Price>
Korrigiert
<cac:Price>
  <cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
    <cbc:Amount currencyID="EUR">10.00</cbc:Amount>
    <cbc:BaseAmount currencyID="EUR">110.00</cbc:BaseAmount>
  </cac:AllowanceCharge>
</cac:Price>

Verwandte Regeln

NormAPI liefert technische Validierung, keine Steuer- oder Rechtsberatung.