Invoice balance mismatch in LEDES billing: what it means and how to fix it
You ran your invoice through validation and got this back:
INVOICE_BALANCE_MISMATCH: Invoice total (9999.99) does not match sum of line items (700.00). Difference: 9299.99
The check behind it is simple. Add up LINE_ITEM_TOTAL across every line item in the invoice. Compare that sum to INVOICE_TOTAL. If they're off by more than a penny, the file fails. That's the whole rule: one cent of tolerance, no more.
The example above is dramatic on purpose. In practice the mismatches people actually hit are small: a few cents, sometimes a few dollars, buried somewhere in a fifteen-line invoice. Small enough that nobody catches it by eye, and it still bounces at the billing system.
Where the gap usually comes from
A few patterns show up over and over:
An adjustment got applied to the total but not to the line. Someone knocks $50 off the invoice total for a courtesy discount, updates INVOICE_TOTAL, and forgets LINE_ITEM_ADJUSTMENT_AMOUNT needs to move too. The invoice now claims a total that its own line items don't add up to.
Rounding drift across a lot of line items. Each LINE_ITEM_TOTAL gets rounded to the cent individually. Sum fifteen of those and the rounding can land a cent or two off from a total that was calculated a different way (say, unit cost times units, rounded once at the end instead of per line).
A line item was added or removed after the total was set. The export tool recalculates LINE_ITEM_TOTAL for every row but somebody edited INVOICE_TOTAL by hand, or the reverse.
Currency conversion happened at two different points. If any amounts went through an FX conversion, converting the total and converting each line separately can produce two numbers that were both "correct" at slightly different exchange rates.
Finding the actual line
You don't need to guess. Take INVOICE_TOTAL and subtract the sum of every LINE_ITEM_TOTAL. That difference is your target. Then check the usual suspects in order: any line marked as an adjustment (EXP/FEE/INV_ADJ_TYPE), the most recently edited line, and any line with a currency conversion involved. Nine times out of ten it's one of those three.
If the difference is a small, odd number like $0.03 or $0.07, it's almost always rounding, not a real accounting error. If it's a round number like $50.00 or $100.00, look for a discount or write-off that only got applied in one place.
Try it against a real example
BriefCheck's free tier checks structure: spec compliance, field formats, the stuff that decides whether a billing system will even open the file. This kind of arithmetic error lives one level deeper, in Tier 2 (consistency), which is part of a Day Pass ($19, 24 hours) or a Ledger subscription.
If you're building an export pipeline and want to see this exact failure on a known file rather than hunting for one, Ledger and API accounts can pull a working INVOICE_BALANCE_MISMATCH fixture straight from the account page's sample lookup. It's the same check your real files run against, just on a file guaranteed to trip it, so you can confirm your own error handling actually catches it before a client's system does.