Official rule text
[PEPPOL-EN16931-R041] Allowance/charge base amount MUST be provided when allowance/charge percentage is provided.
Why this error occurs
A percentage on an allowance or charge is only meaningful together with the base it applies to, so Peppol requires the base amount whenever a percentage is present. The rule flags cac:AllowanceCharge with cbc:MultiplierFactorNumeric but no cbc:BaseAmount at document and line level (UBL), or ram:SpecifiedTradeAllowanceCharge with ram:CalculationPercent but no ram:BasisAmount (CII). It typically comes from software that exports the discount percentage from the pricing condition but only the resulting amount, not the base.
How to fix it
Either add cbc:BaseAmount (UBL) / ram:BasisAmount (CII) with the amount the percentage was applied to, making sure Amount = BaseAmount x percentage / 100 (PEPPOL-EN16931-R040), or remove cbc:MultiplierFactorNumeric / ram:CalculationPercent and keep only the amount. The percentage can still be mentioned in cbc:AllowanceChargeReason text if you want it visible. Apply the same fix to line-level allowances inside cac:InvoiceLine.
Example (valid)
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Discount</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>5</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="EUR">12.50</cbc:Amount>
<cbc:BaseAmount currencyID="EUR">250.00</cbc:BaseAmount>
<cac:TaxCategory><cbc:ID>S</cbc:ID><cbc:Percent>19</cbc:Percent><cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme></cac:TaxCategory>
</cac:AllowanceCharge>
What the validator checks
Checked element (context):
UBL
ubl-invoice:Invoice/cac:AllowanceCharge[cbc:MultiplierFactorNumeric and not(cbc:BaseAmount)] | ubl-invoice:Invoice/cac:InvoiceLine/cac:AllowanceCharge[cbc:MultiplierFactorNumeric and not(cbc:BaseAmount)] | ubl-creditnote:CreditNote/cac:AllowanceCharge[cbc:MultiplierFactorNumeric and not(cbc:BaseAmount)] | ubl-creditnote:CreditNote/cac:CreditNoteLine/cac:AllowanceCharge[cbc:MultiplierFactorNumeric and not(cbc:BaseAmount)]Test (XPath):
false()CII
ram:SpecifiedTradeAllowanceCharge[ram:CalculationPercent and not(ram:BasisAmount)]Test (XPath):
false()
Check your invoice
Drop your XML or PDF on the validator and every failed rule is linked to its page here. Free, no account, the file is not stored.
Same check via API:
curl -F file=@invoice.xml https://einvoicechecker.com/v1/validateRelated rules
PEPPOL-EN16931-R001Business process identifier (BT-23) is missingPEPPOL-EN16931-R002No more than one note is allowed on document level, unless both the buyer and seller…PEPPOL-EN16931-R003Neither buyer reference nor purchase order reference givenPEPPOL-EN16931-R004Specification identifier is not the Peppol BIS Billing 3.0 identifierPEPPOL-EN16931-R005VAT accounting currency equals the invoice currencyPEPPOL-EN16931-R006Only one invoiced object is allowed on document levelPEPPOL-EN16931-R007Business process identifier has the wrong formatPEPPOL-EN16931-R008Document contains empty elements
Frequently asked questions
What does PEPPOL-EN16931-R041 mean?
PEPPOL-EN16931-R041 is a peppol bis billing 3.0 rule: Allowance/charge base amount MUST be provided when allowance/charge percentage is provided.
Will my invoice be rejected because of PEPPOL-EN16931-R041?
Yes. PEPPOL-EN16931-R041 is flagged "fatal"; validators (KoSIT, Peppol access points, the German ZRE/OZG-RE portals) reject the invoice until it is fixed.
Which formats does PEPPOL-EN16931-R041 apply to?
Invoices and credit notes sent over the Peppol network (UBL) and, because XRechnung embeds the Peppol rule set, every XRechnung as well. Syntax: UBL and CII.
Source: Peppol BIS Billing 3.0.20 (November 2025). Catalogue generated from the official schematron on 2026-10-14.