# BR-13: Add the total without VAT to the monetary totals

`cac:LegalMonetaryTotal` has no `cbc:TaxExclusiveAmount`. Add the total without VAT: the line total minus document allowances plus document charges.

- 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-13/
- Explanation last updated: 2026-09-24

## The short answer

`BR-13` fails when `cac:LegalMonetaryTotal` has no `cbc:TaxExclusiveAmount` child. Add it directly after `cbc:LineExtensionAmount`, holding the line total minus `cbc:AllowanceTotalAmount` plus `cbc:ChargeTotalAmount`, rounded to two decimals.

This is the net figure the VAT is charged on, and two later checks start from it. Expect `BR-CO-13` and `BR-CO-15` beside this rule until the element is present.

## What the rule checks

The rule runs on `cac:LegalMonetaryTotal` and passes as soon as a `cbc:TaxExclusiveAmount` child exists. It does not look at the figure; `BR-CO-13` checks the value.

A schema-valid document cannot hold an empty amount. When tried, a self-closing `cbc:TaxExclusiveAmount` carrying only its `currencyID` failed the XSD layer, so this rule was never reached.

The total is needed even when it repeats another figure, for example when there are no document-level allowances or charges and it equals the line total.

| Term | Meaning | UBL element |
|---|---|---|
| BT-109 | Invoice total amount without VAT | `cac:LegalMonetaryTotal/cbc:TaxExclusiveAmount` |
| BT-106 | Sum of Invoice line net amount | `cac:LegalMonetaryTotal/cbc:LineExtensionAmount` |
| BT-107 | Sum of allowances on document level | `cac:LegalMonetaryTotal/cbc:AllowanceTotalAmount` |
| BT-108 | Sum of charges on document level | `cac:LegalMonetaryTotal/cbc:ChargeTotalAmount` |

## How an integration ends up here

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

- The source system stores only the gross total and the VAT, and the net total is never computed for the export.
- The mapping leaves out totals it considers redundant, such as a net total equal to the line total.
- The net and gross totals come from one field in the source, and only the gross element is written.
- A calculation upstream returned null for the net total and the serialiser dropped the element.

## How to fix it

1. Settle the inputs first: the line total, the document allowance total and the document charge total. `BR-CO-10`, `BR-CO-11` and `BR-CO-12` check those.
2. Compute line total minus allowance total plus charge total with decimal arithmetic and round to two decimals. Leave out an allowance or charge total that is not sent.
3. Write the result as `cbc:TaxExclusiveAmount`, with the document currency in `currencyID`, between `cbc:LineExtensionAmount` and `cbc:TaxInclusiveAmount`.
4. Confirm that the total with VAT equals this figure plus the VAT total, which `BR-CO-15` checks next.

## 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 monetary totals go straight from the line total to the total with VAT

```xml
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
  <!-- VAT breakdown omitted from this fragment -->
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
  <cbc:TaxInclusiveAmount currencyID="GBP">30.00</cbc:TaxInclusiveAmount>
  <cbc:AllowanceTotalAmount currencyID="GBP">0.00</cbc:AllowanceTotalAmount>
  <cbc:ChargeTotalAmount currencyID="GBP">0.00</cbc:ChargeTotalAmount>
  <!-- prepaid, rounding and payable amounts omitted from this fragment -->
</cac:LegalMonetaryTotal>
```

Fragment of the corrected invoice: the total without VAT of 25.00 sits between the two

```xml
<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="GBP">25.00</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="GBP">30.00</cbc:TaxInclusiveAmount>
  <cbc:AllowanceTotalAmount currencyID="GBP">0.00</cbc:AllowanceTotalAmount>
  <cbc:ChargeTotalAmount currencyID="GBP">0.00</cbc:ChargeTotalAmount>
  <!-- prepaid, rounding and payable amounts omitted from this fragment -->
</cac:LegalMonetaryTotal>
```

The corrected invoice has a `cbc:TaxExclusiveAmount` of 25.00 between the line total and the total with VAT; it is absent from the failing one, which is otherwise identical. Two EN 16931 rules fail beside `BR-13`. `BR-CO-13`, at the monetary totals, expects the total without VAT to equal 25.00 - 0.00 + 0.00 and finds nothing to compare. `BR-CO-15`, at the document root, needs the total without VAT to confirm that it plus the VAT total of 5.00 gives the total with VAT of 30.00. Adding the element clears all three.

### What the validator reported

- The failing invoice reports **BR-13**, [BR-CO-13](https://ironfang.uk/docs/finance/rules/BR-CO-13.md) and [BR-CO-15](https://ironfang.uk/docs/finance/rules/BR-CO-15.md). The corrected document passes every layer with no findings.
  - [Download the failing XML](https://ironfang.uk/finance/rule-examples/BR-13-invalid.xml)
  - [Download the corrected XML](https://ironfang.uk/finance/rule-examples/invoice-minimal.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` in the same way. When tried, a credit note without the total reported the same three rules, and so did the richer example with document allowances and charges.
- The UBL schema does not require this element, which is why the failing document passes the XSD layer and the gap is only caught by the EN 16931 rules.
- While the total is missing, `BR-CO-15` cannot tell you whether the total with VAT is right. Recheck it once the element is back.

## Related rules

- [BR-CO-13 checks that the total without VAT follows from the line, allowance and charge totals](https://ironfang.uk/docs/finance/rules/BR-CO-13.md)
- [BR-CO-15 adds the VAT total to this figure to check the total with VAT](https://ironfang.uk/docs/finance/rules/BR-CO-15.md)
- [BR-12 requires the line total that this figure is built from](https://ironfang.uk/docs/finance/rules/BR-12.md)
- [BR-DEC-12 limits the total without VAT to two decimals](https://ironfang.uk/docs/finance/rules/BR-DEC-12.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-24.1: source checked 2026-09-24, explanation last updated 2026-09-24.

[The official definition of BR-13](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-13/) 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.uk/docs/finance/rules/BR-13)
- [Free Peppol invoice validator](https://ironfang.uk/tools/peppol-validator)
- [Rule index](https://ironfang.uk/docs/finance/rules.md)
- [Ironfang Finance API docs](https://ironfang.uk/docs/finance)
- The same rule is available to MCP clients as the tool `finance.rule.get` on https://mcp.ironfang.uk/mcp
