Skip to content

Ironfang Finance - Rule reference

BR-CO-13: Fix a total without VAT that does not follow from the other totals

The total without VAT must equal the line total minus the document allowance total plus the document charge total, to two decimals.

EN 16931Fatal: the document is invalidTotals

On this page

The short answer

BR-CO-13 fails when cbc:TaxExclusiveAmount is not cbc:LineExtensionAmount minus cbc:AllowanceTotalAmount plus cbc:ChargeTotalAmount, all four taken from cac:LegalMonetaryTotal. Recalculate the total without VAT from the other three and write it to two decimals.

This finding often arrives as a consequence. If BR-CO-10, BR-CO-11 or BR-CO-12 is reported alongside it, fix that total first: the total without VAT may already be right for the corrected figure.

What the rule checks

The rule reads only the four totals inside cac:LegalMonetaryTotal. It does not look at the lines or at the individual cac:AllowanceCharge elements; those are tied to their totals by other rules.

An allowance total or charge total that is left out contributes nothing. With neither present, the total without VAT must simply equal the line total.

The calculated figure is rounded to two decimals and compared exactly. A total without VAT of 68.51 where the other totals give 68.50 fails.

TermMeaningUBL element
BT-109Invoice total amount without VATcac:LegalMonetaryTotal/cbc:TaxExclusiveAmount
BT-106Sum of Invoice line net amountcac:LegalMonetaryTotal/cbc:LineExtensionAmount
BT-107Sum of allowances on document levelcac:LegalMonetaryTotal/cbc:AllowanceTotalAmount
BT-108Sum of charges on document levelcac:LegalMonetaryTotal/cbc:ChargeTotalAmount

How an integration ends up here

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

  • The total without VAT is copied from the source system while one of the other totals is recalculated during mapping, so the four figures come from two different calculations.
  • Document-level allowances are added instead of subtracted, or charges subtracted instead of added.
  • The allowance or charge total is dropped from the XML although it was used to compute the total without VAT.
  • Line-level allowances are subtracted a second time, although they are already inside the line total.
  • The total without VAT is derived backwards from a VAT-inclusive figure and lands a penny away from the forward calculation.

How to fix it

  1. Settle the inputs first: the line total (BR-CO-10), the allowance total (BR-CO-11) and the charge total (BR-CO-12).
  2. Compute line total minus allowance total plus charge total with decimal arithmetic and round to two decimals.
  3. Write the result to cac:LegalMonetaryTotal/cbc:TaxExclusiveAmount.
  4. Carry the new figure forward: the total with VAT is this amount plus the VAT total, which BR-CO-15 checks.

The recorded example has a line total of 66.00, one document allowance and one document charge.

Expected total without VAT: 66.00 - 1.00 + 3.50 = 68.50
Total without VAT sent (BT-109): 69.50, so BR-CO-13 fails
Total with VAT sent: 80.20, which is 68.50 + 11.70
Against the 69.50 that was sent, BR-CO-15 expects 69.50 + 11.70 = 81.20, so it fails too

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: 66.00 - 1.00 + 3.50 is 68.50, but the total without VAT says 69.50

<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="GBP">66.00</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="GBP">69.50</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="GBP">80.20</cbc:TaxInclusiveAmount>
  <cbc:AllowanceTotalAmount currencyID="GBP">1.00</cbc:AllowanceTotalAmount>
  <cbc:ChargeTotalAmount currencyID="GBP">3.50</cbc:ChargeTotalAmount>
  <!-- prepaid, rounding and payable amounts omitted from this fragment -->
</cac:LegalMonetaryTotal>

Fragment of the corrected invoice: the total without VAT follows from the other three

<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>
  <cbc:AllowanceTotalAmount currencyID="GBP">1.00</cbc:AllowanceTotalAmount>
  <cbc:ChargeTotalAmount currencyID="GBP">3.50</cbc:ChargeTotalAmount>
  <!-- prepaid, rounding and payable amounts omitted from this fragment -->
</cac:LegalMonetaryTotal>

Only cbc:TaxExclusiveAmount differs: 69.50 in the failing document, 68.50 in the corrected one. The failing document also reports BR-CO-15, because the total with VAT of 80.20 was built on 68.50 and does not equal the 69.50 that was sent plus the VAT total of 11.70. Correcting the total without VAT clears both.

What the validator reported

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 alike; the totals have the same names in both and a credit note with the same mistake reports the same two findings.
  • Because only the totals are read, this rule can pass while a total is itself wrong. BR-CO-10, BR-CO-11 and BR-CO-12 are the checks that tie each total to the lines, allowances and charges.
  • The rule compares the numbers only. It does not read currencyID and converts nothing.

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-20.

The official definition of BR-CO-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.