HomeError code lexicon › BR-CL-19
BR-CL-19 Field BT-98 Code list rules (BR-CL)

Fix BR-CL-19: Allowance reason code invalid (UNCL 5189)

[BR-CL-19]-Coded allowance reasons MUST belong to the UNCL 5189 code list

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

What does BR-CL-19 mean?

If an allowance carries a reason code, that code must come from UNCL 5189 - the code list for allowance reasons.

Common causes of BR-CL-19

How to fix BR-CL-19

  1. Find the faulty spot in the XML. Open the XML of the invoice and go to field BT-98 along this XPath://ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator='false']/ram:ReasonCode
  2. Apply the fix. Code the allowance reason (BT-98 on document level, BT-140 on invoice line level) with a code from UNCL 5189, e.g. '95' (discount), '100' (special rebate), '60' (manufacturer's rebate), '104' (standard rebate), '105' (annual bonus). Free text belongs in ram:Reason, not in ram:ReasonCode.
  3. Validate again. Save the file and validate it again to check that BR-CL-19 is no longer reported.
Concrete fix

Code the allowance reason (BT-98 on document level, BT-140 on invoice line level) with a code from UNCL 5189, e.g. '95' (discount), '100' (special rebate), '60' (manufacturer's rebate), '104' (standard rebate), '105' (annual bonus). Free text belongs in ram:Reason, not in ram:ReasonCode.

XPath//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator='false']/ram:ReasonCode

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>10.00</ram:ActualAmount>
  <ram:ReasonCode>RABATT</ram:ReasonCode>
  <ram:Reason>Treuerabatt</ram:Reason>
</ram:SpecifiedTradeAllowanceCharge>
Correct
<ram:SpecifiedTradeAllowanceCharge>
  <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>
  <ram:ActualAmount>10.00</ram:ActualAmount>
  <ram:ReasonCode>95</ram:ReasonCode>
  <ram:Reason>Treuerabatt</ram:Reason>
</ram:SpecifiedTradeAllowanceCharge>

Frequent questions about BR-CL-19

Do I have to give a reason as text next to the code?
The code (BT-98) satisfies the rule. You may add plain text in ram:Reason (BT-97), but that is optional.
Does the rule also apply to allowances on invoice line level?
Yes. On line level it is BT-140 under ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge. There too the code must come from UNCL 5189.

Related error codes

Check BR-CL-19 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