# BR-DEC-14: Write the total with VAT with no more than two decimals

`cbc:TaxInclusiveAmount` has more than two digits after the decimal point. Write the invoice total amount with VAT to two decimals at most.

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

## The short answer

`BR-DEC-14` fails when `cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount` has more than two characters after the decimal point. Write the total with VAT as `80.20`, not `80.200`.

The recorded failure is padding only: 68.50 plus VAT of 11.70 is 80.20, and the third digit is a zero. `UBL-DT-01` reports the same element.

## What the rule checks

The rule looks at `cbc:TaxInclusiveAmount` in `cac:LegalMonetaryTotal` and counts every character after the decimal point, whitespace included; when tried, `80.20` followed by a space failed this rule and `UBL-DT-01`.

The value is checked by `BR-CO-15`, not here. When tried, an unrounded `80.204` reported `BR-CO-15` at the document root as well, because that rule compares the total exactly with 68.50 + 11.70 rounded to two decimals, which is 80.20. `BR-CO-16` did not object, since with a rounding amount present it rounds both sides of its comparison.

The totals either side of this one have rules of their own: the total without VAT is `BR-DEC-12`, and the amount due is `BR-DEC-18`.

| Term | Meaning | UBL element |
|---|---|---|
| BT-112 | Invoice total amount with VAT | `cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount` |

## How an integration ends up here

Possible causes, from the shape of the rule rather than from measured usage:

- The total with VAT is computed as net plus VAT at full precision and written without a final rounding.
- VAT is added per line at three or four decimals and the gross total is built from those figures.
- A decimal column with a scale of three is written out at full scale.

## How to fix it

1. Add the written total without VAT and the written VAT total, both already at two decimals, and round the result.
2. Write it to `cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount` with no more than two decimals and nothing around the digits.
3. Recalculate the amount due from the rounded total with VAT.

## Before and after

These are fragments, not complete documents. The complete synthetic documents they come from are linked below.

Fragment of the failing invoice: 68.50 plus 11.70 VAT written as 80.200

```xml
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="GBP">11.70</cbc:TaxAmount>
  <!-- VAT breakdowns omitted from this fragment -->
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="GBP">66.00</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="GBP">68.50</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="GBP">80.200</cbc:TaxInclusiveAmount>
  <!-- remaining totals omitted from this fragment -->
</cac:LegalMonetaryTotal>
```

Fragment of the corrected invoice: the total with VAT written as 80.20

```xml
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="GBP">11.70</cbc:TaxAmount>
  <!-- VAT breakdowns omitted from this fragment -->
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="GBP">66.00</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="GBP">68.50</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="GBP">80.20</cbc:TaxInclusiveAmount>
  <!-- remaining totals omitted from this fragment -->
</cac:LegalMonetaryTotal>
```

The failing invoice gives the total with VAT as `80.200` and the corrected invoice as `80.20`; the total without VAT, the VAT total and every later figure are identical. Because the value is the same, `BR-CO-15` accepts both. The failing document reports `BR-DEC-14` at `cac:LegalMonetaryTotal` and `UBL-DT-01` at `cbc:TaxInclusiveAmount`. `UBL-DT-01` applies two decimals to all amount elements except item net prices and allowance amounts inside `cac:Price`, so the total with VAT, like every other monetary total, cannot fail one without the other.

### What the validator reported

- The failing invoice reports **BR-DEC-14** 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-14-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 with a total with VAT of `80.200` reported the same pair.
- The count does not depend on the currency the total is in.
- A total with VAT of zero or below is counted in the same way, since a minus sign stands before the decimal point.

## Related rules

- [UBL-DT-01 reports the total with VAT beside this rule](https://ironfang.com/docs/finance/rules/UBL-DT-01.md)
- [BR-CO-15 checks that the total with VAT is the total without VAT plus the VAT total](https://ironfang.com/docs/finance/rules/BR-CO-15.md)
- [BR-DEC-12 applies the same limit to the total without VAT](https://ironfang.com/docs/finance/rules/BR-DEC-12.md)
- [BR-DEC-19 applies the same limit to the taxable amount of each VAT breakdown](https://ironfang.com/docs/finance/rules/BR-DEC-19.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-14](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-DEC-14/) 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-14)
- [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
