Most totals failures start before the XML export

Broken totals usually come from a late charge, a duplicated rounding line, or a manual edit that left the ERP totals and exported totals out of sync.

That is why validators often report a totals rule code instead of the business action that caused it.

Check settlement logic before tax logic

If the payable amount is higher than the tax-inclusive total, inspect prepayments, cash rounding, and settlement adjustments first.

If the tax-inclusive amount does not equal tax-exclusive plus tax, recompute the invoice from the source instead of patching the XML.

Treat rounding as a workflow rule, not a formatting detail

Cash rounding can be valid inside the ERP and still break a stricter e-invoice rule set if the exported totals no longer reconcile.

The cleanest fix is to adjust the invoice logic in the ERP and create a fresh export.

Related issue pages

Exact blocked moments this guide helps you resolve

BR-CO-10 explained without validator jargon

If you hit BR-CO-10, the invoice totals do not reconcile. This page translates the rule into practical bookkeeping and ERP checks.

Open issue page
Cash rounding is breaking Peppol totals

Rounding logic that looks harmless in the ERP can still produce totals that fail e-invoice validation. This page isolates the most common pattern.

Open issue page
Payable amount is higher than the tax-inclusive total

This is a precise invoice arithmetic failure, not vague validator fog. The page shows what causes it and which ERP fields to inspect first.

Open issue page
Peppol error when sending an invoice without a VAT amount in Odoo

Belgian zero-VAT or exempt invoices can still fail Peppol export when the tax category and exemption metadata do not line up with what the connector expects.

Open issue page
Peppol conflict: VAT and 'Roerende Voorheffing' on one invoice line in Odoo

Odoo may let you combine Belgian VAT and roerende voorheffing logic on one line, but the Peppol UBL export can still fail when that tax structure does not map cleanly to one invoice item.

Open issue page
Next step

Use the analyzer on the live symptom

Guides are useful when the pattern is familiar. When the latest failure still feels fuzzy, run the analyzer with the exact provider message or XML so you can separate routing, profile, and provider-state problems.