robin.vision Appointment

SmartFormular

Tools › SmartFormular E-Rechnung lite › Validation rules › PEPPOL-EN16931-R040

PEPPOL-EN16931-R040

An allowance or charge is not base amount times percentage

Validation rule of XRechnung 3.0.2 (KoSIT, Schematron 2.6.0) · Level: Error

What the message means

An allowance or charge is not base amount times percentage.

What the issuer needs to change

Make amount, base amount and percentage consistent.

This rule is part of XRechnung, even though its name starts with PEPPOL.

Your invoice reports PEPPOL-EN16931-R040? Check it with SmartFormular E-Rechnung lite, free to try until 31 December 2026: the tool shows every finding with an explanation, the invoice in readable form and a GiroCode to pay – in your browser, no upload.

Check an e-invoice

Origin

Rule set
XRechnung 3.0.2 (KoSIT, Schematron 2.6.0)
Syntax
CII, UBL
Level
Error

Original rule text

Allowance/charge amount must equal base amount * percentage/100 if base amount and percentage exists

Source: KoSIT, XRechnung Schematron 2.6.0, Apache License 2.0

Technical details for IT

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
Test: not(not(cbc:MultiplierFactorNumeric and cbc:BaseAmount) or u:slack(if (cbc:Amount) then cbc:Amount else 0, (xs:decimal(cbc:BaseAmount) * xs:decimal(cbc:MultiplierFactorNumeric)) div 100, $slackValue))

CII

Context: ram:SpecifiedTradeAllowanceCharge
Test: not(not(ram:CalculationPercent and ram:BasisAmount) or u:slack(if (ram:ActualAmount) then ram:ActualAmount else 0, (xs:decimal(ram:BasisAmount) * xs:decimal(ram:CalculationPercent)) div 100, $slackValue))

Related rules

All validation rules

Technical explanation by robin.vision, not tax or legal advice. Rules as of 31 August 2026 (KoSIT validator configuration).