Skip to content

BR-28: Item gross price (BT-148) is negative

Official message

[BR-28] The Item gross price (BT-148) shall NOT be negative.

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

[BR-28] The Item gross price (BT-148) shall NOT be negative.

EN 16931 (UBL) · Error · Message language: English · Version: xrechnung-3.0.2-validator-configuration-2026-08-31

[BR-28] The Item gross price (BT-148) shall NOT be negative.

Factur-X / ZUGFeRD EN 16931 · Error · Message language: English · Version: Factur-X 1.08 / ZUGFeRD 2.4
Severity
Error The invoice is invalid and may be rejected by the recipient.
Applies to
EN 16931 (CII), EN 16931 (UBL), Factur-X / ZUGFeRD EN 16931
Affected fields
BT-148

What does this mean?

The item gross price (BT-148), i.e. the price before deducting the price discount (BT-147), shall not be negative. It is less than 0 for at least one line. The gross price is optional; if it is missing, the rule does not apply.

Typical causes

A credit, return or discount was entered as a line with a negative price.
The sign of a discount was transferred to the gross price.

How to fix the error

State the gross price as a positive value or omit it. If the line is to reduce the invoice amount, state a negative quantity (BT-129).
CII: ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount, UBL: cac:InvoiceLine/cac:Price/cac:AllowanceCharge/cbc:BaseAmount.
Generate and validate the invoice again.

In E-Rechnungsfreund

In the invoice form ("Experte" view), section "Rechnungspositionen (BG-25)" (invoice lines), enter a value of 0 or more in the field "Bruttopreis (BT-148)" (gross price) or leave it empty; negative prices are not saved.

Example

Wrong

<ram:SpecifiedLineTradeAgreement>
  <ram:GrossPriceProductTradePrice>
    <ram:ChargeAmount>-60.00</ram:ChargeAmount>
  </ram:GrossPriceProductTradePrice>
  ...
</ram:SpecifiedLineTradeAgreement>

Correct

<ram:SpecifiedLineTradeAgreement>
  <ram:GrossPriceProductTradePrice>
    <ram:ChargeAmount>60.00</ram:ChargeAmount>
  </ram:GrossPriceProductTradePrice>
  ...
</ram:SpecifiedLineTradeAgreement>
For developers: test expression per syntax

EN 16931 (CII) (CII)

Context: //ram:IncludedSupplyChainTradeLineItem

(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount >= 0) or not(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount)

EN 16931 (UBL) (UBL)

Context: cac:InvoiceLine | cac:CreditNoteLine

(cac:Price/cac:AllowanceCharge/cbc:BaseAmount) >= 0 or not(exists(cac:Price/cac:AllowanceCharge/cbc:BaseAmount))

Factur-X / ZUGFeRD EN 16931 (CII)

Technical ID in the source: FX-SCH-A-000207

Context: //ram:IncludedSupplyChainTradeLineItem

(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount >= 0) or not(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount)

Related validation rules

  • BR-01: Specification identifier (BT-24) is missing
  • BR-02: Invoice number (BT-1) is missing
  • BR-03: Invoice issue date (BT-2) is missing
  • BR-04: Invoice type code (BT-3) is missing
  • BR-05: Invoice currency code (BT-5) is missing
  • BR-06: Seller name (BT-27) is missing

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