A Voided Ticket Is Still a Ticket
28 August 2026
Ticket 41772 comes off the printer and the driver leans out of the cab: wrong product. It's 3/4 minus in the bed, not crusher run. The scale operator voids the ticket, fixes the code, and prints 41773. Forty seconds, handled, truck rolls. Nobody will remember this by lunch.
Now count the paper. One load crossed the scale. Two tickets describe it. The first one didn't stop existing when the operator hit void; it stopped being true. And a piece of paper that's no longer true, with a valid serial number, a real weight, and a real customer on it, is a specific kind of hazard to whoever runs your billing.
Most operations treat a void as an erasure. It's a fork. Both tickets are now loose in a process built on the promise that one ticket means one billable event, and the voided one has nowhere it's supposed to go.
Where the first print goes
Best case, the operator writes VOID across it in pen and spikes it in the scale house. Plenty of voids end that way.
The other endings are the problem. The driver already grabbed the first print, so it rides to the job in the cab and comes back in Thursday's stack of driver copies. Or the customer's foreman signed it before anyone caught the error, so their copy of your mistake is now in their gate log. Or it lands in the office pile with a pen stroke through it, and a clerk sixty tickets deep reads a diagonal line as a scribble, not a verdict. At keying speed, VOID in ballpoint on a gray thermal print is about two millimeters of ink away from invisible.
None of these people did anything wrong. The operator voided a bad ticket, which is the job. The driver delivered the paperwork, which is the job. The clerk keyed what arrived. That's the job too. The process just never assigned anyone to the fourth job: making sure the dead ticket stays dead.
Two ways it comes back
The loud way is the duplicate. 41772 and 41773 both reach the office and both get keyed. They don't look like copies of each other; different serials, different product codes, which is exactly what two separate loads look like. The customer gets billed for a load of crusher run they never received, on a day their gate log shows one truck. Their AP clerk finds it, because finding it is their job. You cut a credit memo, and for the next year that clerk reads your invoices the way you'd read a used car contract.
The quiet way costs more. It arrives dressed as an afternoon of phone calls.
Counting is the cheapest real audit a billing office has: sort the month's tickets by serial and look for holes. A gap is a load that crossed your scale and never reached your books, which makes gap-chasing some of the highest-paid detective work in the building. Unless the gap is a void. Then the clerk calls the scale house, the operator doesn't remember one ticket from three weeks ago, dispatch checks the log, and an hour later the conclusion is a shrug: probably voided.
Run that loop a few dozen times and watch what it teaches. A pit printing 3,000 tickets a month with voids at 1.5% has 45 gaps in every monthly count, and if the office chases each one honestly, that's a full week of somebody's time spent confirming that nothing was wrong. No office keeps doing that. By the third month, "probably voided" stops being a conclusion and becomes a policy.
Here's the claim to argue with: the unrecorded void does its real damage there, not on the duplicate invoice. The double-billed load costs you a credit memo and some goodwill, a few hundred dollars and an apology. Teaching your office to shrug at sequence gaps costs you the audit itself. The one real missing ticket, 23 tons of delivered material at $9.50 a ton, sits in the same list as 45 shrugs, indistinguishable from them, and it gets waved through under the same policy, this month and every month after. You bought a control, and your voids trained your people to stop reading its output.
flowchart TD
A["Ticket 41772 prints: wrong product"] --> B["Operator voids, reprints as 41773"]
B --> C{"Does the void leave a record?"}
C -- no --> D["41772 paper still circulates"]
D --> E["Keyed beside 41773: one load bills twice"]
D --> F["Gap at 41772: hours chasing a load that never existed"]
F --> G["Office learns to shrug at gaps"]
C -- yes --> H["41772 marked void, linked to 41773"]
H --> I["Count closes: every serial billed, voided, or flagged"]
A void is a transaction, not an absence
The fix isn't asking scale operators to void less. Voids are honest; a wrong ticket should die at the scale, where the truck is still on the deck and the correction costs nothing. An operation reporting zero voids is hiding its corrections somewhere worse, usually in pen on the ticket itself.
The fix is refusing to let a void be nothing. A real void is a record with three fields: the dead serial, the reason, and the serial that replaced it. 41772, wrong product, superseded by 41773. Written at the scale, on the ticket or the scale log, in the moment, by the person who did the voiding, because that person is the only one who will ever know the answer and only knows it for about an hour.
Once voids are records, the rest is mechanical, and it's the same machinery that handles every other ticket. Digitized tickets can be checked against the void list, so a keyed ticket wearing a dead serial gets flagged as non-compliant before it becomes an invoice line instead of after. A void with no successor serial gets flagged too, because a voided load that never got re-ticketed is either a load that left unbilled or a load that never existed. Someone should decide which while the driver still answers the phone. And the monthly count stops producing shrugs, because every serial now lands in one of three bins: billed, voided with a reason, or flagged. That third bin is short, and everything in it deserves the detective work. This is the shape of what Termco builds from your paper: capture every ticket including the dead ones, check each against the rules and the reference data, and assemble invoice totals only from serials that earned their line.
There's a fifteen-minute test before any of that. Pull last month's ticket sequence, list the gaps, and ask your billing team what's in them. If the answer is "voids, probably," ask how they know. The silence after that question is the size of your exposure.
Or let us run the count. Send 10-20 sample tickets to hi@termco.ai, voids and all, and we'll send back what we find within 48 hours.
More from the Termco blog.
August 27, 2026
No Charge, No Questions
Every operation needs a no-charge code. Unguarded, it turns into a discount nobody approves, on tickets no report totals and no customer reviews.
Read postAugust 26, 2026
When the Other Side Writes the Ticket
Broker tallies, destination weights, and elevator grain tickets are billing records your counterparty controls. That control has a price.
Read postAugust 25, 2026
Two Spellings, Two Prices
When one customer lives in your system as two records, the negotiated terms fork, and each ticket bills at whichever copy the clerk picks.
Read post