# BR-DEC-06: Write the document charge base amount with no more than two decimals

The `cbc:BaseAmount` of a document-level charge has more than two digits after the decimal point. Write the amount the charge percentage applies to with two.

- Layer: EN 16931
- Severity: fatal (the document is invalid)
- Topics: Allowances and charges
- Official definition: https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-DEC-06/
- Explanation last updated: 2026-09-28

## 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

1. Round the base amount to two decimals before applying the charge percentage to it.
2. Write it to `cbc:BaseAmount` in the charge with at most two decimals and without whitespace.
3. Check that `cbc:Amount` is still within 0.02 of base times percentage over 100 after rounding, as `PEPPOL-EN16931-R040` requires.
4. For a flat charge, omit the base and the percentage together; Peppol accepts neither without the other.

## 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

```xml
<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

```xml
<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](https://ironfang.com/docs/finance/rules/UBL-DT-01.md). The corrected document passes every layer with no findings.
  - [Download the failing XML](https://ironfang.com/finance/rule-examples/BR-DEC-06-invalid.xml)
  - [Download the corrected XML](https://ironfang.com/finance/rule-examples/invoice-rich.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 `Invoice` and `CreditNote`. When tried, a credit note whose document charge has a base of `35.000` reported the same two findings.
- The count ignores the currency, because `currencyID` is 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-R041` and `PEPPOL-EN16931-R042` enforce the pairing.

## Related rules

- [UBL-DT-01 reports the charge base amount alongside this rule](https://ironfang.com/docs/finance/rules/UBL-DT-01.md)
- [PEPPOL-EN16931-R040 checks that the charge amount is the base times the percentage](https://ironfang.com/docs/finance/rules/PEPPOL-EN16931-R040.md)
- [BR-DEC-05 limits the amount of the same document charge](https://ironfang.com/docs/finance/rules/BR-DEC-05.md)
- [BR-DEC-02 is the same limit for the base amount of a document allowance](https://ironfang.com/docs/finance/rules/BR-DEC-02.md)

## 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](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/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.

## Links

- [This rule as a web page](https://ironfang.com/docs/finance/rules/BR-DEC-06)
- [Free Peppol invoice validator](https://ironfang.com/tools/peppol-validator)
- [Rule index](https://ironfang.com/docs/finance/rules.md)
- [Ironfang Finance API docs](https://ironfang.com/docs/finance)
- The same rule is available to MCP clients as the tool `finance.rule.get` on https://mcp.ironfang.com/mcp
