HomeError code lexicon › BR-CO-21
BR-CO-21 Field BG-20 Calculation and consistency rules (BR-CO)

Fix BR-CO-21: Allowance reason (BT-97/BT-98) missing

[BR-CO-21]-Each Document level allowance (BG-20) shall contain a Document level allowance reason (BT-97) or a Document level allowa

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

What does BR-CO-21 mean?

Every document level allowance must carry a reason as text or as a code. That keeps the deduction traceable.

Common causes of BR-CO-21

How to fix BR-CO-21

  1. Find the faulty spot in the XML. Open the XML of the invoice and go to field BG-20 along this XPath://ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator='false']
  2. Apply the fix. Every document level allowance (BG-20) must contain a reason as text (BT-97, 'ram:Reason') or as a code (BT-98, 'ram:ReasonCode'). Add at least one of the two elements in the affected 'ram:SpecifiedTradeAllowanceCharge' with 'ram:ChargeIndicator' = false.
  3. Validate again. Save the file and validate it again to check that BR-CO-21 is no longer reported.
Concrete fix

Every document level allowance (BG-20) must contain a reason as text (BT-97, 'ram:Reason') or as a code (BT-98, 'ram:ReasonCode'). Add at least one of the two elements in the affected 'ram:SpecifiedTradeAllowanceCharge' with 'ram:ChargeIndicator' = false.

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

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

Frequent questions about BR-CO-21

Is the reason text enough or do I need the code?
Either one satisfies BR-CO-21: the free-text reason (BT-97, 'ram:Reason') or the coded reason (BT-98, 'ram:ReasonCode' from UNTDID 5189). Both together are allowed.
How do I spot an allowance in CII?
By 'ram:SpecifiedTradeAllowanceCharge' with 'ram:ChargeIndicator' = false on document level. With true it is a charge (BG-21, governed by BR-CO-22).

Related error codes

Check BR-CO-21 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