Skip to content

PEPPOL-EN16931-R044: Charge on price level is not allowed

Official message

[PEPPOL-EN16931-R044] Charge on price level is NOT allowed. Only value 'false' allowed.

XRechnung (CII) · Error · Message language: English · Version: xrechnung-3.0.2-validator-configuration-2026-08-31

[PEPPOL-EN16931-R044] Charge on price level is NOT allowed. Only value 'false' allowed.

XRechnung (UBL) · Error · Message language: English · Version: xrechnung-3.0.2-validator-configuration-2026-08-31
Severity
Error The invoice is invalid and may be rejected by the recipient.
Applies to
XRechnung (CII), XRechnung (UBL)

What does this mean?

Charge on price level is NOT allowed: in the item price of a line only a discount (item price discount, BT-147) is allowed, not a charge. The ChargeIndicator must be false there; the invoice contains a charge (true) on price level.
The rule originates from Peppol BIS Billing 3.0 and is applied in the XRechnung validation. CII: ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge with ram:ActualAmount, UBL: cac:Price/cac:AllowanceCharge.

Typical causes

A surcharge was given as charge in the item price instead of as line level charge.
The indicator was swapped (true instead of false) for a price discount.

How to fix the error

State a price discount with ChargeIndicator false.
Either include a surcharge in the gross price (BT-148) or state it as line level charge (BG-28).
Generate and validate the invoice again.

In E-Rechnungsfreund

The application always writes the "Preisrabatt (BT-147)" (price discount) as an allowance. In the invoice form, "Experte" view, section "Rechnungspositionen (BG-25)" (invoice lines), include a surcharge in the "Bruttopreis (BT-148)" (gross price) or enter it in the tab "Zu-/Abschläge (BG-27/28)" (allowances/charges) of the line as "Zuschlag (BG-28)" (charge).

Example

Wrong

<ram:GrossPriceProductTradePrice>
  <ram:ChargeAmount>100.00</ram:ChargeAmount>
  <ram:AppliedTradeAllowanceCharge>
    <ram:ChargeIndicator>
      <udt:Indicator>true</udt:Indicator>
    </ram:ChargeIndicator>
    <ram:ActualAmount>5.00</ram:ActualAmount>
  </ram:AppliedTradeAllowanceCharge>
</ram:GrossPriceProductTradePrice>

Correct

<ram:GrossPriceProductTradePrice>
  <ram:ChargeAmount>105.00</ram:ChargeAmount>
</ram:GrossPriceProductTradePrice>
For developers: test expression per syntax

XRechnung (CII) (CII)

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

not(ram:AppliedTradeAllowanceCharge/ram:ActualAmount) or ram:AppliedTradeAllowanceCharge/ram:ChargeIndicator/udt:Indicator = 'false'

XRechnung (UBL) (UBL)

Context: cac:Price/cac:AllowanceCharge

normalize-space(cbc:ChargeIndicator) = 'false'

Related validation rules

Last updated:
Explanation of the validation rule, not legal or tax advice.