BR-TMP-3: Base quantity of gross and net price (BT-149) differs
Official message
[BR-TMP-3] Wenn BT-149 (Item price base quantity) sowohl in GrossPriceProductTradePrice als auch in NetPriceProductTradePrice vorhanden ist, müssen die Werte identisch sein. Wenn BT-150 (unit of measure code) auf dem NetPrice-Pfad vorhanden ist, muss es auch auf dem GrossPrice-Pfad vorhanden und identisch sein.
- Severity
- Error The invoice is invalid and may be rejected by the recipient.
- Applies to
- XRechnung (CII)
- Affected fields
- BT-149, BT-150
What does this mean?
If the item price base quantity (BT-149) is given for both the gross price and the net price of a line, both values must be identical. If a unit of measure (BT-150) is given for both prices, it must be identical as well. This is not the case in the line.
The rule applies to the CII syntax: ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity and ram:NetPriceProductTradePrice/ram:BasisQuantity. According to the rule text, a unit given for the net price should also be given for the gross price.
Typical causes
The gross price refers to a different quantity than the net price, e.g. gross price per 100 pieces, net price per piece.
The units of the two base quantities differ, e.g. KGM and GRM.
How to fix the error
Refer gross and net price to the same base quantity and unit and convert the gross price if necessary.
Give the same ram:BasisQuantity with the same unitCode in both prices or omit the base quantity of the gross price.
Generate and validate the invoice again.
In E-Rechnungsfreund
In the invoice form, "Experte" view, section "Rechnungspositionen (BG-25)" (invoice lines), leave the fields "Basis-Menge Brutto (BT-149-1)" (gross base quantity) and "ME Bruttopreis (BT-150-1)" (gross price unit) of the line empty or enter the same values as in "Basis-Menge Netto (BT-149)" (net base quantity) and "ME Nettopreis (BT-150)" (net price unit). If left empty, the application writes the base quantity and unit of the net price for the gross price.
Example
Wrong
<ram:SpecifiedLineTradeAgreement>
<ram:GrossPriceProductTradePrice>
<ram:ChargeAmount>120.00</ram:ChargeAmount>
<ram:BasisQuantity unitCode="H87">100</ram:BasisQuantity>
</ram:GrossPriceProductTradePrice>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>1.20</ram:ChargeAmount>
<ram:BasisQuantity unitCode="H87">1</ram:BasisQuantity>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
Correct
<ram:SpecifiedLineTradeAgreement>
<ram:GrossPriceProductTradePrice>
<ram:ChargeAmount>1.20</ram:ChargeAmount>
<ram:BasisQuantity unitCode="H87">1</ram:BasisQuantity>
</ram:GrossPriceProductTradePrice>
<ram:NetPriceProductTradePrice>
<ram:ChargeAmount>1.20</ram:ChargeAmount>
<ram:BasisQuantity unitCode="H87">1</ram:BasisQuantity>
</ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
For developers: test expression per syntax
XRechnung (CII) (CII)
Context: /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem
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))
Related validation rules
Last updated:
Explanation of the validation rule, not legal or tax advice.