PEPPOL-EN16931-R121Base quantity MUST be a positive number above zero.

Official rule text

The price base quantity (BT-149) must be greater than zero — it states how many units the price refers to, 100 for a price per hundred. Zero fails it and so does a negative value; leaving the element out altogether is allowed and means a price per single unit.

Severity
Error
Applies to
CII, UBL
Rule set
v2026-08-31
Checked on

Written and checked against the official KoSIT rule set by Dmytro Yalanskyi, NormAPI.

Why does PEPPOL-EN16931-R121 happen?

The field is filled with the default of your own data type, and for an unmaintained number that is often 0. A price per zero units is a division by zero and makes any recalculation impossible.

What the validator checks

The expression the official KoSIT rule set evaluates — not paraphrased, but read from the Schematron file it ships. UBL and CII address different document trees, so the same rule reads differently in each.

UBL
not(cac:Price/cbc:BaseQuantity) or xs:decimal(cac:Price/cbc:BaseQuantity) > 0
CII
not(ram:BasisQuantity) or xs:decimal(ram:BasisQuantity) > 0

Source: rule set v2026-08-31

How do you fix PEPPOL-EN16931-R121?

Omit cac:Price/cbc:BaseQuantity where the price is per single unit — that is the default and needs no statement. Otherwise set the real reference quantity, in CII ram:BasisQuantity.

In the XML

A UBL fragment. The CII path is named above — same change, different element names.

Fails
<cac:Price>
  <cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
  <cbc:BaseQuantity unitCode="C62">0</cbc:BaseQuantity>
</cac:Price>
Fixed
<cac:Price>
  <cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
  <cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
</cac:Price>

Related rules

NormAPI provides technical validation, not tax or legal advice.