How to handle a short-paid invoice without losing the difference
iotoms team · October 9, 2026 · 5 min read
A janitorial-supply distributor billing forty grocery and restaurant accounts had a line item on the AR aging report that never seemed to shrink: $11,400 of "open balances, partially paid." Not overdue in the usual sense — most of these invoices had a payment attached, just not the full amount. $340 short here, $85 short there, one account consistently $200 light every single month. The invoices stayed open for the remainder, nobody closed them out, and twice a year the controller wrote off whatever was still sitting there at year-end because chasing a $60 shortfall across forty accounts cost more in time than the $60 was worth.
Nobody had decided this was the policy. It just became the policy, one short payment at a time, because there was no process for the gap between what was billed and what arrived.
Why the gap never gets investigated
A short payment is not one problem — it's at least four wearing the same disguise. A customer deducts an early-pay discount they weren't entitled to. A case arrived damaged and they docked it themselves instead of waiting for a credit memo. A pricing error on the invoice meant they were billed at the wrong contract rate and corrected it on their end. Or they simply decided, with no documentation at all, that this invoice was worth $200 less to them this month.
The first two are often legitimate. The third is the distributor's own mistake. The fourth is a customer testing whether short-paying gets noticed. All four show up identically on a bank deposit: a payment that doesn't match the invoice total.
At the janitorial-supply distributor, every short payment landed as a note in a spreadsheet the AR clerk kept privately — "$200 short, Riverside Deli, no reason given" — because there was nowhere in the system to attach a reason to a partial payment. Without a reason code, there was nothing to sort. Without sorting, there was nothing to act on. The $200-short account kept doing it because nobody had ever asked why.
What a quiet $11,400 actually represents
None of this looked like fraud or even carelessness from the outside — it looked like normal AR noise, the kind every distributor has some amount of. But the composition mattered. When the controller finally pulled three months of short-pay notes together, about a third were genuinely the distributor's fault: a price list that hadn't been updated after a vendor increase, so customers were being billed at the old low rate and then "corrected" down to what they'd agreed to pay, except the invoice never reflected it. Another third were damage and shortage claims that were valid but had never been converted into credit memos, so the invoice sat open for an amount that should have been written off properly instead of left dangling. The last third had no documentation at all — customers who'd learned that a consistent small shortfall on a long-standing account doesn't get chased.
That last group is the one that compounds. One account testing a $200 short-pay and getting away with it for six months isn't a $1,200 loss — it's a precedent, and precedents spread between accounts that talk to each other.
The turning point: a reason code before a dollar gets written off
The fix wasn't chasing every invoice harder. It was requiring a reason the moment a payment didn't match an invoice, before the gap could sit quietly for a billing cycle:
Short payments get classified at the point of cash application, not at write-off time. When a payment posted for less than the invoice total, the remaining balance had to be tagged — pricing error, damage claim, discount taken, unexplained — instead of just sitting open with no label. A tag took fifteen seconds and changed everything downstream.
Pricing errors get fixed at the source, not re-litigated per invoice. The outdated price list was the real problem behind a third of the gap. Once that was caught and corrected, those short-pays stopped recurring without a single collections call.
Valid claims become actual credit memos. A damage claim that's true should reduce the invoice by a documented, approved amount — not just leave it open and smaller forever. Converting the backlog of legitimate claims into formal credit memos closed out invoices that had been quietly wrong for months.
Unexplained shortfalls get a call, every time, however small. The $200-short account got a straightforward question: what's this deduction for? There wasn't one. The account paid the balance within a week once someone actually asked, because the quiet policy had only ever been quiet.
Within two months the "partially paid" bucket dropped from $11,400 to under $2,000 — and what remained was now properly documented claims waiting on a vendor return, not an unexplained hole.
How this fits into the books you already keep
A short-paid invoice is a receivable with a question mark attached, and the question mark is what gets lost when a system just shows a smaller balance with no reason why. iotoms' accounting ledger keeps partial payments tied to the original invoice and lets a short-pay reason sit right on the transaction — so an invoice with a documented damage claim looks nothing like an invoice with an unexplained $200 gap, and the aging report stops hiding the difference between the two.
Practical takeaway
- Tag every short payment with a reason the moment it's applied — pricing error, damage claim, discount, unexplained — instead of letting it sit open with no label.
- Fix the root cause of recurring pricing short-pays (an outdated price list, a missed increase) once, rather than re-arguing the same gap invoice after invoice.
- Convert valid damage or shortage claims into real credit memos so the invoice closes correctly, instead of leaving it open and smaller indefinitely.
- Call on every unexplained shortfall, no matter how small — a $60 gap nobody questions is also the one that teaches an account it can do it again.
- Review the short-pay reason codes by account every quarter; a pattern on one account is a conversation, not a coincidence.