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
- The invoice line allowance contains neither ram:Reason (BT-139) nor ram:ReasonCode (BT-140).
- The ram:Reason field is present but empty.
- The discount reason appears only on the visual document and was never carried into the XML.
How to fix BR-42
- 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 - 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.
- Validate again. Save the file and validate it again to check that BR-42 is no longer reported.
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.
//ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonBefore / after: the XML example
This is the spot in question before and after the fix (Cross Industry Invoice, ZUGFeRD/Factur-X).
<ram:SpecifiedTradeAllowanceCharge>
<ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>
<ram:ActualAmount>2.50</ram:ActualAmount>
</ram:SpecifiedTradeAllowanceCharge>
<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?
Why does the validator report BR-42 although the discount is shown on the invoice?
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.