Zum Inhalt springen

PEPPOL-EN16931-R046: Nettopreis ist nicht Bruttopreis minus Preisrabatt

Offizielle Meldung

[PEPPOL-EN16931-R046] Item net price MUST equal (Gross price - Allowance amount) when gross price is provided.

XRechnung (CII) · Fehler · Sprache der Meldung: Englisch · Stand: xrechnung-3.0.2-validator-configuration-2026-08-31

[PEPPOL-EN16931-R046] Item net price MUST equal (Gross price - Allowance amount) when gross price is provided.

XRechnung (UBL) · Fehler · Sprache der Meldung: Englisch · Stand: xrechnung-3.0.2-validator-configuration-2026-08-31
Schweregrad
Fehler Die Rechnung gilt als ungültig und kann vom Empfänger abgelehnt werden.
Gilt für
XRechnung (CII), XRechnung (UBL)

Was bedeutet das?

Ist ein Bruttopreis (Item gross price, BT-148) angegeben, muss der Nettopreis (Item net price, BT-146) genau dem Bruttopreis minus dem Rabatt auf den Artikelpreis (Item price discount, BT-147) entsprechen. Der Nettopreis weicht davon ab.
Die Regel stammt aus Peppol BIS Billing 3.0 und wird bei der XRechnung-Prüfung angewendet; eine Rundungstoleranz gibt es nicht. CII: Fehlt ram:AppliedTradeAllowanceCharge/ram:ActualAmount im Bruttopreis, wird mit 0 gerechnet, der Nettopreis muss dann gleich dem Bruttopreis sein. UBL: Geprüft wird, wenn cac:Price/cac:AllowanceCharge einen cbc:BaseAmount enthält.

Typische Ursachen

Der Preisrabatt wurde im Nettopreis berücksichtigt, aber nicht als Betrag beim Bruttopreis angegeben.
Brutto- oder Nettopreis wurde unterschiedlich gerundet.

So beheben Sie den Fehler

Den Preisrabatt als Betrag je Preiseinheit angeben und den Nettopreis als Bruttopreis minus Rabatt berechnen.
Wird der Bruttopreis nicht benötigt, ihn weglassen und nur den Nettopreis angeben (BT-148 ist optional).
CII: ram:GrossPriceProductTradePrice/ram:ChargeAmount, ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:ActualAmount und ram:NetPriceProductTradePrice/ram:ChargeAmount; UBL: cac:Price/cbc:PriceAmount, cac:Price/cac:AllowanceCharge/cbc:BaseAmount und cbc:Amount.
Die Rechnung erneut erzeugen und prüfen.

In E-Rechnungsfreund

Im Rechnungsformular in der Ansicht „Experte“ im Abschnitt „Rechnungspositionen (BG-25)“ bei der Position im Feld „Preisrabatt (BT-147)“ den Rabatt je Preiseinheit eintragen (0, wenn es keinen gibt) und als „Nettopreis (BT-146)“ genau „Bruttopreis (BT-148)“ minus Preisrabatt angeben, ohne zu runden. Die Anwendung schreibt den Preisrabatt beim Bruttopreis in die XML; bei XRechnung lässt sich eine abweichende Position nicht speichern.
Wird kein Bruttopreis benötigt, das Feld „Bruttopreis (BT-148)“ leer lassen; die Regel greift dann nicht.

Beispiel

Fehlerhaft

<ram:GrossPriceProductTradePrice>
  <ram:ChargeAmount>100.00</ram:ChargeAmount>
</ram:GrossPriceProductTradePrice>
<ram:NetPriceProductTradePrice>
  <ram:ChargeAmount>90.00</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>

Richtig

<ram:GrossPriceProductTradePrice>
  <ram:ChargeAmount>100.00</ram:ChargeAmount>
  <ram:AppliedTradeAllowanceCharge>
    <ram:ChargeIndicator>
      <udt:Indicator>false</udt:Indicator>
    </ram:ChargeIndicator>
    <ram:ActualAmount>10.00</ram:ActualAmount>
  </ram:AppliedTradeAllowanceCharge>
</ram:GrossPriceProductTradePrice>
<ram:NetPriceProductTradePrice>
  <ram:ChargeAmount>90.00</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
Für Entwickler: Prüfausdruck je Syntax

XRechnung (CII) (CII)

Kontext: rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice

not(ram:ChargeAmount) or xs:decimal(../ram:NetPriceProductTradePrice/ram:ChargeAmount) = xs:decimal(ram:ChargeAmount) - u:decimalOrZero(ram:AppliedTradeAllowanceCharge/ram:ActualAmount[1])

XRechnung (UBL) (UBL)

Kontext: cac:Price/cac:AllowanceCharge

not(cbc:BaseAmount) or xs:decimal(../cbc:PriceAmount) = xs:decimal(cbc:BaseAmount) - xs:decimal(cbc:Amount)

Verwandte Prüfregeln

Zuletzt aktualisiert:
Erläuterung der Prüfregel, keine Rechts- oder Steuerberatung.