errorbusinessEN 16931

BR-CO-12:Sum of charges on document level (BT-108) = Σ Document level charge amount...

Fix: Recalculate the value in `cbc:Amount` to match the expected formula. Verify all contributing amounts are correct (BR-CO-12).

Sum of charges on document level (BT-108) = Σ Document level charge amount (BT-99).. Verify the value in `cbc:Amount` matches the expected calculation.

Severity
Fatal
Rule set
EN 16931
Country
All EU
Fix type
BLOCKED

Engine Classification

Financial or legal field · Modification blocked by policy

Reason: Line amount calculations (quantity x price) must match your order/delivery documents. Discrepancies may indicate pricing or quantity errors.

What is BR-CO-12?

BR-CO-12 is a fatal validation rule defined in the EN 16931 specification. It validates the LineExtensionAmount element under Invoice > LegalMonetaryTotal in the UBL invoice XML.

When this rule fires, the invoice is rejected by Peppol access points and never reaches the buyer.

Target path: XPath: /Invoice/cac:LegalMonetaryTotal/cbc:LineExtensionAmount

This error requires manual correction — financial fields are protected by policy.

Why This Error Matters

Invoice rejected. Calculation errors prevent proper invoice verification.

BR-CO-12 is a hard failure — the invoice must be corrected and re-sent before it can reach the recipient.

Validator Behavior

  • ·Causes invoice rejection
  • ·Error returned: BR-CO-12
  • ·Specification: EN 16931

How to Fix It

1.

Sum all lines

Add all InvoiceLine/LineExtensionAmount values

2.

Compare to total

Must match LegalMonetaryTotal/LineExtensionAmount

3.

Check rounding

Sum individual amounts exactly as shown

Before / After

Failing XML
<cac:AllowanceCharge[ChargeIndicator=true]>
  <cbc:Amount>999.99</cbc:Amount>
  <!-- Does not match expected calculation -->
</cac:AllowanceCharge[ChargeIndicator=true]>
Corrected XML
<cac:AllowanceCharge[ChargeIndicator=true]>
  <cbc:Amount>100.00</cbc:Amount>
  <!-- Matches expected calculation -->
</cac:AllowanceCharge[ChargeIndicator=true]>

Technical Reference

XPathXPath: /Invoice/cac:LegalMonetaryTotal/cbc:LineExtensionAmount
SpecEN 16931
StrategyBLOCKED: This is a calculation mismatch. We cannot determine if individual charges or the sum is wrong. Source system must recalculate charge totals.

Code Example

<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="EUR">190.00</cbc:LineExtensionAmount>
  <!-- Line 1: 90.00 + Line 2: 100.00 = 190.00 -->
</cac:LegalMonetaryTotal>

Common Causes

  • ·Sum of document charges does not match BT-108
  • ·ChargeTotalAmount calculation mismatch
  • ·Individual charge amounts don't sum to total
  • ·Charge added/removed without updating total
  • ·Rounding error in charge sum calculation

Seeing this in production? The API handles BR-CO-12 automatically. See the fix response →

Commonly Seen In

All invoicing software

Frequently Asked Questions

Line extension total must equal the sum of all line net amounts.

Recalculate the value in `cbc:Amount` to match the expected formula. Verify all contributing amounts are correct (BR-CO-12). This error involves a protected field — Invoice Navigator flags it in your pipeline so your team can correct it at the source.

Yes, BR-CO-12 is a critical error that will cause invoice rejection. It must be fixed before submission to ensure your invoice is accepted by the recipient's system.

BR-CO-12 involves a financial or legal field that cannot be auto-modified by policy. Invoice Navigator detects and flags this error immediately, but the correction must be made manually in your ERP or invoicing software.

BR-CO-12 is commonly seen in exports from All invoicing software. These software packages sometimes generate invoices that need adjustment to meet full compliance standards.

Related Errors

Related Content

Last updated: 3 March 2026

Share this guide:

Validate your invoice

Drop your XML here to check for BR-CO-12

Detect BR-CO-12 before submission

This error involves a financial field that can't be auto-modified. We'll flag it with a clear diagnosis so you can fix it at the source.