# BR-CL-19 Coded allowance reason must come from UNCL5189

When an allowance reason is coded (BT-98 at document level, BT-140 at line level), the code must belong to the UNCL5189 subset used by EN 16931.

## Problem Description

> **ERROR**: EN 16931 code-list rule (BR-CL)

## Context and Significance

Allowances use their own numeric code list (UNCL5189), separate from the list for charges (UNCL7161, BR-CL-20); EN 16931 allows 19 of these codes. The rule fails when a charge code such as FC is copied to an allowance, when a text such as "DISC" sits in the code field, or when the charge indicator is wrong, so that a charge is checked against the allowance list. Example: a volume discount uses code 95 with the reason "Volume discount".

## Solution

Set the allowance reason code to an allowed UNCL5189 value, e.g. 95 (discount), 100 (special rebate) or 105 (yearly turnover); give any other reason as free text (BT-97 or BT-139). In UBL, the code is cbc:AllowanceChargeReasonCode in a cac:AllowanceCharge with cbc:ChargeIndicator false; in CII, ram:ReasonCode in a ram:SpecifiedTradeAllowanceCharge.

- [Validate XML](/en/xrechnung-validator?source=resource&rule=BR-CL-19)
- [Convert invoice](/en/pdf-to-xrechnung?source=resource&rule=BR-CL-19)

## Valid Examples

- BT-98 = 95 — discount
- BT-140 = 100 — special rebate at line level

## Invalid Examples

- BT-98 = FC — charge code (UNCL7161) on an allowance
- BT-98 = DISC — free text instead of a code

## Code Examples

### Valid XML
```
<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>95</cbc:AllowanceChargeReasonCode>
</cac:AllowanceCharge>
```

### Invalid XML
```
<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>FC</cbc:AllowanceChargeReasonCode>
</cac:AllowanceCharge>
```

## Affected Fields

- [BT-98 Document level allowance reason code](/resources/xrechnung/bt-98-document-level-allowance-reason-code)
- [BT-140 Invoice line allowance reason code](/resources/xrechnung/bt-140-invoice-line-allowance-reason-code)

## Related Rules

- [BR-CL-20](/resources/kosit-validator-errors/br-cl-20-uncl7161-charge-reason)

## Validation Tools

- [Official KoSIT Validator](https://github.com/itplr-kosit/validator): Run the official KoSIT validator with the XRechnung configuration to check EN 16931 and XRechnung rules.
- [Convert PDF to XRechnung](/pdf-to-xrechnung): Find validation errors during conversion and review each correction.

## Related Resources

- [Official Specification](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/)
- [Test Suite](https://github.com/itplr-kosit/xrechnung-testsuite)
- [All validation errors](/resources/kosit-validator-errors): Overview of the EN 16931, XRechnung and Peppol validation rules explained here.
