On this page
The short answer
BR-DEC-06 fails when a charge on the document, a root-level cac:AllowanceCharge with cbc:ChargeIndicator of true, carries a cbc:BaseAmount with more than two characters after the decimal point. Write the base with at most two decimals: 35.00 in place of 35.000.
The charge amount beside it can be perfectly formatted and the document still fails: in the recorded invoice only the base of the 10 percent charge is padded. UBL-DT-01 reports that cbc:BaseAmount as well.
What the rule checks
For every document-level charge the rule reads cbc:BaseAmount as text and allows up to two characters after the decimal point. A flat fee has no base amount, so nothing is counted and the charge passes.
This rule never compares the base with anything. When tried, a base of 35.004 reported only this rule and UBL-DT-01, because 10 percent of it is 3.5004 and PEPPOL-EN16931-R040 accepts the charge of 3.50 within its margin of 0.02.
Which rule counts a cbc:BaseAmount at document level depends on the indicator in the same cac:AllowanceCharge: true brings it here, false sends it to BR-DEC-02. Base amounts of allowances and charges on a line have rules of their own.
| Term | Meaning | UBL element |
|---|---|---|
| BT-100 | Document level charge base amount | cac:AllowanceCharge[cbc:ChargeIndicator = true]/cbc:BaseAmount |
How an integration ends up here
Possible causes, from the shape of the rule rather than from measured usage:
- The base is a subtotal of lines at unit-price precision, used for the surcharge calculation and written as held.
- The charge amount is rounded for the totals, but the base is taken from the calculation before any rounding.
- The mapping writes every monetary field with a fixed three decimal places.
How to fix it
- Round the base amount to two decimals before applying the charge percentage to it.
- Write it to
cbc:BaseAmountin the charge with at most two decimals and without whitespace. - Check that
cbc:Amountis still within 0.02 of base times percentage over 100 after rounding, asPEPPOL-EN16931-R040requires. - For a flat charge, omit the base and the percentage together; Peppol accepts neither without the other.
Validate your corrected invoice
Before and after
These are fragments, not complete documents. The complete synthetic documents they come from are linked below.
Fragment of the failing invoice: the 10 percent charge has its base written as 35.000
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>CG</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Example document charge</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="GBP">3.50</cbc:Amount>
<cbc:BaseAmount currencyID="GBP">35.000</cbc:BaseAmount>
<!-- tax category omitted from this fragment -->
</cac:AllowanceCharge>Fragment of the corrected invoice: the same base written as 35.00
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReasonCode>CG</cbc:AllowanceChargeReasonCode>
<cbc:AllowanceChargeReason>Example document charge</cbc:AllowanceChargeReason>
<cbc:MultiplierFactorNumeric>10</cbc:MultiplierFactorNumeric>
<cbc:Amount currencyID="GBP">3.50</cbc:Amount>
<cbc:BaseAmount currencyID="GBP">35.00</cbc:BaseAmount>
<!-- tax category omitted from this fragment -->
</cac:AllowanceCharge>Only the base amount of the document charge changes: 35.000 in the failing invoice, 35.00 in the corrected one, which is the same value. The charge of 3.50 is 10 percent of either, so nothing else is disturbed. The failing document reports BR-DEC-06 at the charge, the second cac:AllowanceCharge, and UBL-DT-01 at its cbc:BaseAmount. UBL-DT-01 limits all amount elements to two decimals, sparing only item prices and the amounts of an allowance on the price, and a charge base amount is neither, so this rule never fails without it.
What the validator reported
- The failing invoice reports BR-DEC-06 and UBL-DT-01. The corrected document passes every layer with no findings.Download the failing XMLDownload the corrected XML
Recorded on phive 12.1.0 / phive-rules-peppol 4.5.6 / Saxon-HE 12.10, the engine behind the free validator, using synthetic data. A recorded result is regression evidence for these documents; it is not a certification.
Where it applies
- Applies to UBL
InvoiceandCreditNote. When tried, a credit note whose document charge has a base of35.000reported the same two findings. - The count ignores the currency, because
currencyIDis not read. - A base amount on a charge must come with a percentage and the reverse, so in a document that passes Peppol this rule meets only percentage charges;
PEPPOL-EN16931-R041andPEPPOL-EN16931-R042enforce the pairing.
Related rules
- UBL-DT-01 reports the charge base amount alongside this rule
- PEPPOL-EN16931-R040 checks that the charge amount is the base times the percentage
- BR-DEC-05 limits the amount of the same document charge
- BR-DEC-02 is the same limit for the base amount of a document allowance
- Browse every rule in the reference
- Background: Understanding EN 16931 validation errors
Scope and source
Written for Peppol BIS Billing 3.0.21 (May 2026), EN 16931 1.3.16, as applied to UBL 2.1 Invoice and CreditNote documents. Other profiles, syntaxes and releases can define this identifier differently. Guidance version 2026-09-28.1: source checked 2026-09-28, explanation last updated 2026-09-28.
The official definition of BR-DEC-06 carries the normative wording and test. This page is our explanation of it, not a copy.
Guidance does not change the engine verdict. Fixing this finding does not mean the document passes every layer, and validation does not certify legal or tax compliance or transmit a document over Peppol.

