Skip to content

BR-CO-23: Invoice line allowance without reason (BT-139 or BT-140)

Official message

[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.

EN 16931 (CII) · Error · Message language: English · Version: xrechnung-3.0.2-validator-configuration-2026-08-31

[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.

EN 16931 (UBL) · Error · Message language: English · Version: xrechnung-3.0.2-validator-configuration-2026-08-31

[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.

Factur-X / ZUGFeRD EN 16931 · Error · Message language: English · Version: Factur-X 1.08 / ZUGFeRD 2.4
Severity
Error The invoice is invalid and may be rejected by the recipient.
Applies to
EN 16931 (CII), EN 16931 (UBL), Factur-X / ZUGFeRD EN 16931
Affected fields
BG-27, BT-139, BT-140

What does this mean?

Each invoice line allowance (BG-27) shall contain a reason as text (BT-139), as code (BT-140) or both. At least one invoice line allowance lacks both.

Typical causes

Only amount and tax information were entered for the invoice line allowance.
The reason is only given in a note on the invoice or the line, not at the allowance or charge itself.

How to fix the error

State the reason as text (BT-139, e.g. "Discount") and/or an appropriate code from code list UNTDID 5189 (BT-140).
If both are given, they must indicate the same type (BR-CO-07).
CII: ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:Reason or ram:ReasonCode, UBL: cac:InvoiceLine/cac:AllowanceCharge/cbc:AllowanceChargeReason or cbc:AllowanceChargeReasonCode.
Generate and validate the invoice again.

In E-Rechnungsfreund

In the invoice form, expert view ("Experte"), section "Rechnungspositionen (BG-25)" (invoice lines), tab "Zu-/Abschläge (BG-27/28)" of the line, fill in the field "Begründung (BT-139/144)" (reason) and/or select a code next to it for the entry "Abschlag (BG-27)" (allowance), then validate the invoice again.

Example

Wrong

<ram:SpecifiedLineTradeSettlement>
  <ram:SpecifiedTradeAllowanceCharge>
    <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>
    <ram:ActualAmount>5.00</ram:ActualAmount>
    ...
  </ram:SpecifiedTradeAllowanceCharge>
  ...
</ram:SpecifiedLineTradeSettlement>

Correct

<ram:SpecifiedLineTradeSettlement>
  <ram:SpecifiedTradeAllowanceCharge>
    <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator>
    <ram:ActualAmount>5.00</ram:ActualAmount>
    <ram:Reason>Discount</ram:Reason>
    ...
  </ram:SpecifiedTradeAllowanceCharge>
  ...
</ram:SpecifiedLineTradeSettlement>
For developers: test expression per syntax

EN 16931 (CII) (CII)

Context: //ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator = 'false']

(../ram:Reason) or (../ram:ReasonCode)

EN 16931 (UBL) (UBL)

Context: //cac:InvoiceLine/cac:AllowanceCharge[cbc:ChargeIndicator = false()] | //cac:CreditNoteLine/cac:AllowanceCharge[cbc:ChargeIndicator = false()]

exists(cbc:AllowanceChargeReason) or exists(cbc:AllowanceChargeReasonCode)

Factur-X / ZUGFeRD EN 16931 (CII)

Technical ID in the source: FX-SCH-A-000217

Context: //ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator = 'false']

(../ram:Reason) or (../ram:ReasonCode)

Related validation rules

  • BR-CO-03: Value added tax point date (BT-7) and tax point date code (BT-8) are mutually exclusive
  • BR-CO-04: Invoiced item VAT category code (BT-151) is missing
  • BR-CO-05: Document level allowance reason code (BT-98) and allowance reason (BT-97) must indicate the same type
  • BR-CO-06: Document level charge reason code (BT-105) and charge reason (BT-104) must indicate the same type
  • BR-CO-07: Invoice line allowance reason code (BT-140) and allowance reason (BT-139) must indicate the same type
  • BR-CO-08: Invoice line charge reason code (BT-145) and charge reason (BT-144) must indicate the same type

Last updated:
Explanation of the validation rule, not legal or tax advice.