PEPPOL-EN16931-R043
The indicator saying whether this is a charge or an allowance must be exactly true or false — lower case, with no alternatives.
- Severity
- Error
- Applies to
- UBL
- Rule set
- v2026-01-31
Official rule text
Allowance/charge ChargeIndicator value MUST equal 'true' or 'false'
Why does PEPPOL-EN16931-R043 happen?
Serialisers write booleans differently: 1 and 0 out of many databases, True out of Python, TRUE out of some templates. Each is unambiguous to a human and wrong for the schema.
How do you fix PEPPOL-EN16931-R043?
Write the value as the literal string true or false in cbc:ChargeIndicator in UBL. Do not rely on your boolean type's default serialisation; emit the two literals explicitly.
In the XML
A UBL fragment — the rule applies to that syntax only.
<cac:AllowanceCharge>
<cbc:ChargeIndicator>0</cbc:ChargeIndicator>
<cbc:Amount currencyID="EUR">50.00</cbc:Amount>
</cac:AllowanceCharge><cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:Amount currencyID="EUR">50.00</cbc:Amount>
</cac:AllowanceCharge>NormAPI provides technical validation, not tax or legal advice.