HomeError code lexicon › BR-42
BR-42 Field BT-139 EN 16931 core rules (BR)

Fix BR-42: Invoice line allowance reason (BT-139/BT-140) missing

[BR-42]-Each Invoice line allowance (BG-27) shall have an Invoice line allowance reason (BT-139) or an Invoice line allowance re

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

What does BR-42 mean?

Every allowance at line level must state a reason, either as free text or as a reason code. That keeps the deduction traceable.

Common causes of BR-42

How to fix BR-42

  1. Find the faulty spot in the XML. Open the XML of the invoice and go to field BT-139 along this XPath://ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:Reason
  2. Apply the fix. Every allowance at line level (BG-27) needs a reason: either the free text ram:Reason (BT-139) or the reason code ram:ReasonCode (BT-140) from UNTDID 5189. Add at least one of the two elements to the line's ram:SpecifiedTradeAllowanceCharge with ChargeIndicator=false.
  3. Validate again. Save the file and validate it again to check that BR-42 is no longer reported.
Concrete fix

Every allowance at line level (BG-27) needs a reason: either the free text ram:Reason (BT-139) or the reason code ram:ReasonCode (BT-140) from UNTDID 5189. Add at least one of the two elements to the line's ram:SpecifiedTradeAllowanceCharge with ChargeIndicator=false.

XPath//ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:Reason

Before / after: the XML example

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

Wrong
<ram:SpecifiedTradeAllowanceCharge>
  <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>
  <ram:ActualAmount>2.50</ram:ActualAmount>
</ram:SpecifiedTradeAllowanceCharge>
Correct
<ram:SpecifiedTradeAllowanceCharge>
  <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>
  <ram:ActualAmount>2.50</ram:ActualAmount>
  <ram:Reason>Mengenrabatt</ram:Reason>
</ram:SpecifiedTradeAllowanceCharge>

Frequent questions about BR-42

Free text or code for the discount reason?
One is enough. ram:Reason (BT-139) as plain text or ram:ReasonCode (BT-140) from the UNTDID 5189 list, for example '95' for discount. Both together are allowed.
Why does the validator report BR-42 although the discount is shown on the invoice?
The validator reads only the embedded XML. If the reason is missing there in ram:SpecifiedTradeAllowanceCharge, the rule fires, whatever the PDF layout shows.

Related error codes

Check BR-42 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