HomeError code lexicon › BR-28
BR-28 Field BT-148 EN 16931 core rules (BR)

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

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

BR-28 in your own invoice? Upload the file and find every error in seconds.

What does BR-28 mean?

The list price per unit must not be less than zero. Discounts are shown separately as an invoice line allowance.

Common causes of BR-28

How to fix BR-28

  1. Find the faulty spot in the XML. Open the XML of the invoice and go to field BT-148 along this XPath://ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount
  2. Apply the fix. The item gross price (BT-148) must not be negative. Set a value of 0 or greater in ram:GrossPriceProductTradePrice/ram:ChargeAmount. Discounts belong in ram:AppliedTradeAllowanceCharge as an invoice line allowance, not in a negative gross price.
  3. Validate again. Save the file and validate it again to check that BR-28 is no longer reported.
Concrete fix

The item gross price (BT-148) must not be negative. Set a value of 0 or greater in ram:GrossPriceProductTradePrice/ram:ChargeAmount. Discounts belong in ram:AppliedTradeAllowanceCharge as an invoice line allowance, not in a negative gross price.

XPath//ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount

Before / after: the XML example

This is the spot in question before and after the fix (Cross Industry Invoice, ZUGFeRD/Factur-X).

Wrong
<ram:GrossPriceProductTradePrice>
  <ram:ChargeAmount>-11.90</ram:ChargeAmount>
</ram:GrossPriceProductTradePrice>
Correct
<ram:GrossPriceProductTradePrice>
  <ram:ChargeAmount>11.90</ram:ChargeAmount>
  <ram:AppliedTradeAllowanceCharge>
    <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>
    <ram:ActualAmount>1.90</ram:ActualAmount>
  </ram:AppliedTradeAllowanceCharge>
</ram:GrossPriceProductTradePrice>

Frequent questions about BR-28

Where do I enter a line discount correctly?
As ram:AppliedTradeAllowanceCharge inside the item gross price. The discount amount (BT-147) reduces the gross price to the net price (BT-146), and no price turns negative.
Do I have to give a gross price at all?
No, the item gross price (BT-148) is optional. But if you give it, it must not be negative.

Related error codes

Check BR-28 automatically

Instead of digging through the XML by hand you can validate your ZUGFeRD or XRechnung file online – upload the PDF or the XML and you get every error with rule ID, affected field, fix and XPath, as a readable report or as JSON through the API.

Find every error automatically instead of searching by hand

Upload your ZUGFeRD, Factur-X or XRechnung file – you get every violation back with rule ID, field, fix and XPath.

Validate online for free
Check invoice