Every Credit Memo Has a Silent Twin
21 August 2026
A project manager at your biggest paving customer, call them Hartley, phones about invoice 8841. Their gate log shows ticket 51218 at 24.6 tons. Your invoice line says 42.6. Your clerk pulls the paper ticket, sees the transposition, apologizes, and cuts a credit memo for the difference, about $310 at the contract rate. The PM is satisfied. The credit gets a number, goes in the file, and shows up as a small deduction on next month's revenue report.
File closed. Except that credit memo is telling you something, and almost nobody reads it this way: the errors that produce credits also run in the other direction, and the other direction never generates a phone call.
Errors have no favorite direction. Detection does.
Think about what actually caused that credit. A clerk deep in a stack of tickets swapped two digits. Nothing about a tired thumb prefers the digit order that overstates a load. Keyed at 42.6 when the scale said 24.6, keyed at 24.6 when the scale said 42.6, the keyboard doesn't care. The same goes for the other standard causes: a ticket scanned twice lands as a duplicate line, a rate table with last year's price applies it to this year's loads, two similar customer names pull each other's terms. Every one of those failures can move an invoice up or down.
What has a strong preference is who notices. Your customer's back office exists partly to catch charges that shouldn't be there. When your invoice runs high, a person on their side is paid to find it, and they do, and you hear about it. When your invoice runs low, that same person has no reason to say a word. Some won't even notice, because nobody reconciles an invoice hunting for loads that aren't on it. The ones who do notice will quietly pay the smaller number. You'd do the same.
So the errors surface on exactly one side. Overbills come back as calls and credit memos. Underbills come back as nothing at all.
flowchart TD A["Clerk keys 24.6 tons as 42.6"] --> B["Invoice runs high"] B --> C["Customer's PM checks the gate log"] C --> D["Call, dispute, credit memo on file"] E["Clerk keys 42.6 tons as 24.6"] --> F["Invoice runs low"] F --> G["No routine check runs in this direction"] G --> H["No call, no record, revenue gone"]
What the credit file actually measures
Plenty of owners will resist this claim: your credit memo file is the most honest audit of your billing process you own, and it was compiled for free, by customers motivated to catch anything large.
Pull the credits you issued last quarter. Set aside the ones about product quality or returned material; those are a different conversation. What's left is a list of documented billing failures: this many miskeys, this many duplicate tickets, this many wrong rates, this many loads billed to the wrong account. Each one carries a dollar figure and a date. That's the loud half of your error rate, measured.
Now do the arithmetic the file invites. Suppose those billing-error credits total $3,800 for the quarter, and half trace to keying errors. A tired thumb doesn't favor the direction that overstates a load, so a similar $1,900 in transpositions ran the other way, went out underbilled, and was never reported. If the quarter's typical, call it $7,600 a year from one error family, sitting one inference away from a report you already run. And that's before the failures that don't mirror themselves. A double-scanned ticket overbills and gets caught. Its quiet cousin, the ticket that never got keyed at all, underbills and doesn't. The credit file can't price that one for you. It can only tell you the handoff that produced the duplicate is loose, and a loose handoff drops tickets as readily as it doubles them.
Treat that number as a floor, not an estimate. Customer detection isn't perfect even on the overbilled side. A $60 overcharge on a $14,000 monthly invoice gets paid without a second look, so plenty of small overbills never became credits either. The file only shows you the errors big enough, on accounts attentive enough, to get caught.
A fair objection: maybe your errors aren't symmetric. Some failure modes only run one direction, and not all of them run under. A fuel surcharge that kept applying after the index dropped overbills every load until someone notices. But look at where each one-way error lands. The stale surcharge lands on the loud side, where a customer is paid to find it, so it tends to get a short life. The lapsed escalator, the minimum nobody applied, the expired discount still running: those land on the silent side and can run for years. If your credit file is wrong as a mirror, the error most likely flatters you.
Sort by cause, then go hunting
The practical move takes one afternoon. Take last quarter's credit memos and sort them by root cause instead of by customer. Not "Hartley account, $310" but "digit transposition at manual entry." Four or five categories usually cover the pile: keyed wrong, ticketed twice, priced off the wrong rate, billed to the wrong customer or job, and quantity disputes where the ticket itself was the problem.
Then ask one question per category: what does the silent twin of this error look like, and would anything in our current process catch it? A duplicate that inflates an invoice gets caught by the customer. A ticket that never got keyed at all is the same handoff failing in the quiet direction, and the only thing that catches it is a count: loads on the scale log versus lines billed. A wrong-rate credit means the rate table disagreed with the contract once, in the visible direction. The same table is wrong in the invisible direction for someone else.
If a credit memo goes out without a root cause written on it, you've paid for the error twice: once in the refund, and once in the sibling error you declined to go find.
Closing those causes is the shape of the work Termco does. Digitizing tickets at capture removes the keyboard where transpositions are born, and duplicate or non-compliant tickets get flagged before they ever reach an invoice. Structured billing rules keep the rate table from drifting away from the contract, while managed reference data stops two spellings of the same customer from carrying two prices. The credit memos you've already issued will tell you which of those failure modes your operation actually has. That part costs nothing but the afternoon.
If you'd rather have us look, send 10-20 sample tickets to hi@termco.ai and we'll send back what we find within 48 hours.
More from the Termco blog.
August 20, 2026
Detention Time Never Prints a Ticket
Tonnage gets billed because the scale forces a record. Detention, tarp fees, and second stops have no machine behind them, so they leak.
Read postAugust 19, 2026
The Ticket Says Tons, the Contract Says Yards
When tickets weigh in one unit and contracts price in another, the conversion factor becomes a rate nobody manages. That's where the money moves.
Read postAugust 18, 2026
Your Best Month Is Your Leakiest Month
Ticket leakage concentrates in peak weeks, when volume spikes and back-office attention collapses. A record month is where the misses hide.
Read post