Skip to content

PEPPOL-EN16931-R043: ChargeIndicator of an allowance or charge is not true or false (UBL)

Official message

[PEPPOL-EN16931-R043] Allowance/charge ChargeIndicator value MUST equal 'true' or 'false'

XRechnung (UBL) · Error · Message language: English · Version: xrechnung-3.0.2-validator-configuration-2026-08-31
Severity
Error The invoice is invalid and may be rejected by the recipient.
Applies to
XRechnung (UBL)

What does this mean?

Allowance/charge ChargeIndicator value MUST equal 'true' or 'false': the indicator whether an entry is a charge or an allowance (cbc:ChargeIndicator) must have exactly the value true or false. The value is different.
The rule originates from Peppol BIS Billing 3.0 and is applied in the XRechnung validation for UBL, to document level allowances and charges (BG-20, BG-21) and line level allowances and charges (BG-27, BG-28). For CII see PEPPOL-EN16931-R043-1 and -R043-2.

Typical causes

The value was given as 1 or 0; XML Schema allows this, this rule does not.
Upper case (TRUE, False) or an empty element.

How to fix the error

State cbc:ChargeIndicator as true for a charge or false for an allowance, in lower case.
Generate and validate the invoice again.

Example

Wrong

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>0</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReason>Discount</cbc:AllowanceChargeReason>
  <cbc:Amount currencyID="EUR">10.00</cbc:Amount>
  ...
</cac:AllowanceCharge>

Correct

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReason>Discount</cbc:AllowanceChargeReason>
  <cbc:Amount currencyID="EUR">10.00</cbc:Amount>
  ...
</cac:AllowanceCharge>
For developers: test expression per syntax

XRechnung (UBL) (UBL)

Context: ubl-invoice:Invoice/cac:AllowanceCharge | ubl-invoice:Invoice/cac:InvoiceLine/cac:AllowanceCharge | ubl-creditnote:CreditNote/cac:AllowanceCharge | ubl-creditnote:CreditNote/cac:CreditNoteLine/cac:AllowanceCharge

normalize-space(cbc:ChargeIndicator/text()) = 'true' or normalize-space(cbc:ChargeIndicator/text()) = 'false'

Related validation rules

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