BR-TMP-3Wenn BT-149 (Item price base quantity) sowohl in GrossPriceProductTradePrice als auch in NetPriceProductTradePrice vorhanden ist, müssen die Werte identisch sein.

Official rule text

Wenn BT-150 (unit of measure code) auf dem NetPrice-Pfad vorhanden ist, muss es auch auf dem GrossPrice-Pfad vorhanden und identisch sein.

Where the item price base quantity (BT-149) appears on both the gross and the net price of a line, the two values must be identical — and where the net price carries a unit of measure (BT-150), the gross price must carry the same one.

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

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

Why does BR-TMP-3 happen?

The gross price is often added later, to express a line-level discount. Its base quantity then gets filled from a different source or left out altogether, and the two price blocks immediately disagree. The rule exists in CII only, because only there do the gross and net prices each carry their own base quantity — UBL has no such pair to contradict itself. On the unit of measure the expression also parts company with the rule text: the text says a unit on the net price must appear on the gross price too, while the check only requires two units that are both present to match. Leave it off the gross price and the invoice passes.

What the validator checks

The expression the official KoSIT rule set evaluates — not paraphrased, but read from the Schematron file it ships.

CII
not(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity and ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:BasisQuantity) or (ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity = ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:BasisQuantity and (not(ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:BasisQuantity/@unitCode and ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity/@unitCode) or ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity/@unitCode = ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:BasisQuantity/@unitCode))

Source: rule set v2026-08-31

How do you fix BR-TMP-3?

Populate ram:BasisQuantity in GrossPriceProductTradePrice and NetPriceProductTradePrice from the same field, unitCode attribute included. If you do not need a differing base quantity, omit it from both blocks rather than from one.

In the XML

A CII fragment — the rule applies to that syntax only.

Fails
<ram:GrossPriceProductTradePrice>
  <ram:ChargeAmount>100.00</ram:ChargeAmount>
  <ram:BasisQuantity unitCode="C62">1</ram:BasisQuantity>
</ram:GrossPriceProductTradePrice>
<ram:NetPriceProductTradePrice>
  <ram:ChargeAmount>90.00</ram:ChargeAmount>
  <ram:BasisQuantity unitCode="C62">10</ram:BasisQuantity>
</ram:NetPriceProductTradePrice>
Fixed
<ram:GrossPriceProductTradePrice>
  <ram:ChargeAmount>100.00</ram:ChargeAmount>
  <ram:BasisQuantity unitCode="C62">10</ram:BasisQuantity>
</ram:GrossPriceProductTradePrice>
<ram:NetPriceProductTradePrice>
  <ram:ChargeAmount>90.00</ram:ChargeAmount>
  <ram:BasisQuantity unitCode="C62">10</ram:BasisQuantity>
</ram:NetPriceProductTradePrice>

Related rules

NormAPI provides technical validation, not tax or legal advice.