BR-CO-15 and the Other Reasons Invoice Totals Do Not Match
An invoice validator that rejects a file because BR-CO-15 fails is telling you something precise: the invoice total amount with VAT on the document does not equal the total without VAT plus the total VAT amount. It is the single most common reason an electronic invoice comes back saying its totals do not match, and it forms the last step in the chain of sum checks on an invoice. The mismatch does not have to start at that final line. It can begin earlier, when the sum of the individual invoice lines fails to equal the net amount stated in the header, which is exactly what the related rule BR-CO-10 checks. Both rules belong to a wider family of calculation and consistency rules inside the EN 16931 standard. This note walks through what BR-CO-15 and BR-CO-10 actually require, why a file that looks correct at a glance can still fail them, and which other totals-shaped rules tend to break on the same invoice.
Two Kinds of Rules Inside EN 16931
EN 16931 does not treat invoice totals as a separate feature bolted onto the rest of the format. Its schematron splits the whole rule set into two different jobs. The plain BR rules are numbered BR-01 to BR-65, though only 58 of them actually exist, and they check that a required piece of data is present at all, in the right place and in the right format. BR-02 is a plain example of this first group: an invoice must have an invoice number, and a file that leaves it out is rejected outright, with no arithmetic involved.
The BR-CO rules are a separate, smaller family, numbered BR-CO-01 to BR-CO-26 though only 24 of them actually exist, and they check something different: that two or more amounts calculated from other figures on the same invoice actually agree with each other. BR-CO-15 and BR-CO-10 both live in this second group, which is why a missing invoice number and a wrong total feel like different kinds of mistakes even though the same schematron run reports both of them.
What BR-CO-15 Actually Compares
The normative text of the rule reads: Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110). In plain terms, whatever the invoice states as its grand total including tax has to equal the net total plus the tax total exactly, with nothing left over and nothing missing.
BT-112, BT-109 and BT-110 are three separate fields on the invoice, and the rule requires the first to equal the sum of the other two exactly, not approximately. That means all three have to be kept consistent with each other every time one of them changes.
BR-CO-10: When the Mismatch Starts at the Line Level
BR-CO-15 checks the very last step of the sum, where net plus tax has to equal gross. An invoice can already be broken before it gets that far, and BR-CO-10 is what catches the earlier failure. Its text reads: Sum of Invoice line net amount (BT-106) = Σ Invoice line net amount (BT-131). In other words, adding up the net amount of every individual line on the invoice has to produce the same net total that the header of the invoice states separately.
The two rules check related but distinct amounts on the invoice. BR-CO-10 checks whether the invoice lines add up to the line-sum field in the header, while BR-CO-15 checks a separate pair of totals further along the same calculation. Checking the line-level sum first is therefore a more direct way to find the source of a totals error than adjusting the final total on its own.
VAT Categories and Allowances Add Their Own Arithmetic
Totals problems are not only about BR-CO-15 and BR-CO-10. The VAT category code on each invoice line, taken from UNTDID 5305, decides which extra rule group applies to that line: S for the standard rate, Z for zero rated, E for exempt, AE for reverse charge, K for an intra community supply, G for export outside the European Union, O for not subject to VAT, and further codes for the Canary Islands and for Ceuta and Melilla. Categories S, Z, E, AE and G each carry ten rules of their own, O carries fourteen, and K carries twelve, so the wrong category code does not just mislabel a line, it switches on an entirely different block of arithmetic checks.
Discounts and surcharges bring a rule of their own on top of that. Under Peppol BIS Billing 3.0, rule PEPPOL-EN16931-R040 states that an allowance or charge amount must equal the base amount multiplied by the percentage and divided by 100, whenever both a base amount and a percentage are given on the invoice. A discount typed in as a rounded amount instead of the exact product of its own base and percentage will fail this rule even when every other total on the invoice is correct.
Frequently asked questions
What exactly does BR-CO-15 compare?
It compares three amounts on the same invoice: the total with VAT, the total without VAT, and the total VAT amount, and requires that the first equals the sum of the other two exactly.
Can an invoice fail BR-CO-15 even if BR-CO-10 passes?
Yes. BR-CO-10 checks the line amounts against the header net total, while BR-CO-15 separately checks the net total, VAT total and gross total, so the two checks can pass or fail independently of each other. Separate rule groups also apply to VAT category codes and to allowance or charge amounts, each with their own arithmetic on the same invoice.
Is BR-CO-15 the only totals rule in EN 16931?
No. It is one of 24 calculation and consistency rules in the BR-CO group alone, on top of separate rule groups tied to each VAT category code.
Conclusion
BR-CO-15 is one line inside a much larger rule set that also includes BR-CO-10, the VAT category rule groups, and the allowance and charge rule, so a rejection is worth checking against all of them rather than assuming BR-CO-15 alone is at fault. Working out which of these related rules actually triggered the rejection is a faster way to fix the file than adjusting the final total by trial and error. For more on preparing invoices that meet the EN 16931 standard, see ARLing's e-invoicing page.
Sources. The facts in this note are numbered after our internal fact list and were checked on the publication date. ARLing is not a bank; a clean check result is no guarantee that the bank accepts the payment. If a source has changed since, write to andrej@arling.sk and we will correct this page.
- F90: schematron CEN EN 16931, https://github.com/ConnectingEurope/eInvoicing-EN16931 (licencia EUPL 1.2, overené 11. 9. 2026)
- F92: schematron CEN EN 16931, https://github.com/ConnectingEurope/eInvoicing-EN16931; zoznam kódov Peppol, https://docs.peppol.eu/poacc/billing/3.0/codelist/vatex/ (overené 11. 9. 2026)
- F94, F95, F96: schematron CEN EN 16931, súbor CEN-EN16931-UBL.sch, https://github.com/ConnectingEurope/eInvoicing-EN16931 (licencia EUPL 1.2, overené 11. 9. 2026)
- F98: schematron Peppol BIS Billing 3.0, súbor PEPPOL-EN16931-UBL.sch, https://github.com/OpenPEPPOL/peppol-bis-invoice-3 (overené 11. 9. 2026)