# BR-CO-23

> Each Invoice line allowance (BG-27) shall contain an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140), or both.

Checked against Peppol BIS Billing 3.0 2026.5

Canonical: https://einvoicecheck.eu/rules/br-co-23

## Official rule text

Each Invoice line allowance (BG-27) shall contain an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140), or both.

## Why did my invoice fail BR-CO-23?

Each invoice line allowance (BG-27) must contain an allowance reason as free text (BT-139) or a coded reason (BT-140), or both. This documents why a discount was applied to a specific line so it can be understood and audited.

## Common causes

- Line-level cac:AllowanceCharge (ChargeIndicator=false) with an amount but neither AllowanceChargeReason nor AllowanceChargeReasonCode.
- Reason set at document level but line-level allowance left unreasoned.
- Reason code empty string treated as missing.
- Per-line discount generated from price rules without a reason.

## How do I fix it?

```
On the line allowance add a reason, e.g. <cac:AllowanceCharge><cbc:ChargeIndicator>false</cbc:ChargeIndicator><cbc:AllowanceChargeReason>Volume discount</cbc:AllowanceChargeReason>...</cac:AllowanceCharge>.
```
