PEPPOL-EN16931-R046: Net price is not gross price minus price discount
Official message
[PEPPOL-EN16931-R046] Item net price MUST equal (Gross price - Allowance amount) when gross price is provided.
[PEPPOL-EN16931-R046] Item net price MUST equal (Gross price - Allowance amount) when gross price is provided.
- Severity
- Error The invoice is invalid and may be rejected by the recipient.
- Applies to
- XRechnung (CII), XRechnung (UBL)
What does this mean?
Item net price MUST equal (Gross price - Allowance amount) when gross price is provided: the item net price (BT-146) must be exactly the item gross price (BT-148) minus the item price discount (BT-147). The net price deviates.
The rule originates from Peppol BIS Billing 3.0 and is applied in the XRechnung validation; there is no rounding tolerance. CII: if ram:AppliedTradeAllowanceCharge/ram:ActualAmount is missing in the gross price, 0 is used, so the net price must then equal the gross price. UBL: checked if cac:Price/cac:AllowanceCharge contains a cbc:BaseAmount.
Typical causes
The price discount was taken into account in the net price but not stated as amount with the gross price.
Gross or net price was rounded differently.
How to fix the error
State the price discount as amount per price unit and calculate the net price as gross price minus discount.
If the gross price is not needed, omit it and state only the net price (BT-148 is optional).
CII: ram:GrossPriceProductTradePrice/ram:ChargeAmount, ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:ActualAmount and ram:NetPriceProductTradePrice/ram:ChargeAmount; UBL: cac:Price/cbc:PriceAmount, cac:Price/cac:AllowanceCharge/cbc:BaseAmount and cbc:Amount.
Generate and validate the invoice again.
In E-Rechnungsfreund
In the invoice form, "Experte" view, section "Rechnungspositionen (BG-25)" (invoice lines), enter the discount per price unit in the field "Preisrabatt (BT-147)" (price discount) of the line (0 if there is none) and state exactly "Bruttopreis (BT-148)" (gross price) minus price discount as "Nettopreis (BT-146)" (net price), without rounding. The application writes the price discount with the gross price into the XML; for XRechnung, a deviating line cannot be saved.
If no gross price is needed, leave the field "Bruttopreis (BT-148)" empty; the rule then does not apply.
Example
Wrong
<ram:GrossPriceProductTradePrice>
<ram:ChargeAmount>100.00</ram:ChargeAmount>
</ram:GrossPriceProductTradePrice>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>90.00</ram:ChargeAmount>
</ram:NetPriceProductTradePrice>
Correct
<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>
For developers: test expression per syntax
XRechnung (CII) (CII)
Context: 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)
Context: cac:Price/cac:AllowanceCharge
not(cbc:BaseAmount) or xs:decimal(../cbc:PriceAmount) = xs:decimal(cbc:BaseAmount) - xs:decimal(cbc:Amount)
Related validation rules
- PEPPOL-EN16931-R001: Business process type (BT-23) is missing
- PEPPOL-EN16931-R005: VAT accounting currency (BT-6) equals the invoice currency (BT-5)
- PEPPOL-EN16931-R008: The invoice contains empty elements
- PEPPOL-EN16931-R010: Buyer electronic address (BT-49) is missing
- PEPPOL-EN16931-R020: Seller electronic address (BT-34) is missing
- PEPPOL-EN16931-R040: Allowance or charge amount does not match base amount and percentage
Last updated:
Explanation of the validation rule, not legal or tax advice.