Skip to content

PEPPOL-EN16931-R130: Unit of the base quantity (BT-150) differs from the unit of the quantity (BT-130)

Official message

[PEPPOL-EN16931-R130] Unit code of price base quantity MUST be same as invoiced quantity.

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

[PEPPOL-EN16931-R130] Unit code of price base quantity MUST be same as invoiced quantity.

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?

Unit code of price base quantity MUST be same as invoiced quantity: the item price base quantity unit of measure code (BT-150) must equal the invoiced quantity unit of measure code (BT-130). The units differ.
The rule originates from Peppol BIS Billing 3.0 and is applied in the XRechnung validation. CII: unitCode of ram:BasisQuantity in net and gross price against ram:BilledQuantity/@unitCode. UBL: cac:Price/cbc:BaseQuantity/@unitCode against cbc:InvoicedQuantity or cbc:CreditedQuantity.

Typical causes

The price was given per kilogram, the quantity in pieces (or vice versa).
Different codes for the same kind of unit were used for quantity and base quantity, e.g. C62 and H87.

How to fix the error

Use the same unit for the base quantity as for the quantity and convert price or quantity if necessary.
Generate and validate the invoice again.

In E-Rechnungsfreund

In the invoice form, "Experte" view, section "Rechnungspositionen (BG-25)" (invoice lines), leave the fields "ME Nettopreis (BT-150)" (net price unit) and "ME Bruttopreis (BT-150-1)" (gross price unit) of the line empty or select the same unit as in "ME (BT-130)" (unit). If left empty, the application writes the unit from "ME (BT-130)".

Example

Wrong

<ram:NetPriceProductTradePrice>
  <ram:ChargeAmount>4.80</ram:ChargeAmount>
  <ram:BasisQuantity unitCode="KGM">1</ram:BasisQuantity>
</ram:NetPriceProductTradePrice>
...
<ram:BilledQuantity unitCode="H87">10</ram:BilledQuantity>

Correct

<ram:NetPriceProductTradePrice>
  <ram:ChargeAmount>4.80</ram:ChargeAmount>
  <ram:BasisQuantity unitCode="KGM">1</ram:BasisQuantity>
</ram:NetPriceProductTradePrice>
...
<ram:BilledQuantity unitCode="KGM">10</ram:BilledQuantity>
For developers: test expression per syntax

XRechnung (CII) (CII)

Context: ram:NetPriceProductTradePrice/ram:BasisQuantity[@unitCode] | ram:GrossPriceProductTradePrice/ram:BasisQuantity[@unitCode]

@unitCode = ../../../ram:SpecifiedLineTradeDelivery/ram:BilledQuantity/@unitCode

XRechnung (UBL) (UBL)

Context: cac:Price/cbc:BaseQuantity[@unitCode]

not($hasQuantity) or @unitCode = $quantity/@unitCode

Related validation rules

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