The Second Column
24 October 2026
On a Tuesday in June, a single-axle dump you've never seen crosses your scale with Keller Grading lettered on the door. Keller has bought delivered base from you for six years: your trucks, his jobs, $18.25 a ton. The driver explains while the deck settles. Dennis bought the truck at the spring consignment auction, your fleet was booked until Thursday, and he needed twelve tons today. The scale operator does everything right. She weighs him, writes the ticket, puts the truck in the truck blank, and sends him off with the pink copy.
At month end that load bills at $18.25. Delivered. For rock that left on Keller's own axles, behind Keller's own diesel.
Two sales on one line
$18.25 was never one price. Your own rate sheet says so: 57 base runs $14.50 FOB plant, $18.25 delivered inside ten road miles. Two columns, because a delivered ton is two sales, rock out of the ground and a truck under the rock. The $3.75 between the columns is hauling revenue, about $82 on a 22-ton load, with a driver's hour and a couple gallons of diesel behind it.
The trouble is where the answer to "who hauled it" lives. When Keller opened the account he owned no trucks, so somebody keyed the account delivered, and for six years that one cell was true sixty times a month. The auction ended that. Who hauled it stopped being a fact about Keller and became a fact about each load, and the account header, which can hold exactly one answer, kept answering anyway.
The loud mistake buys the quiet one
Keller's bookkeeper is good. Three weeks after the June statement she calls with four ticket numbers, loads their own truck hauled, billed at the delivered price. She's polite and she's entirely right. You credit back about $330 of hauling you never performed and eat the phone call.
Then your office does the sensible thing, the thing the credit memo demands: it flips Keller's account to the pickup column so this can never happen again. $14.50 from here on.
October is cul-de-sac season. Keller's crews are placing base on three small subdivisions at once, 180 tons on a good day, and one single-axle can't feed that, so your trucks haul him all month, 2,200 tons of it, delivered. Every ticket keys clean, every invoice goes out crisp at $14.50, and the $3.75 of freight on every one of those tons, about $8,250 for the month, rides along free. The diesel burned and the drivers clocked in. The line that should carry the hauling reads zero.
Look at the trade your office made without meaning to. The June error was loud: it overcharged a customer with a motivated bookkeeper, surfaced inside a billing cycle, and cost $330. The October error is silent, because no customer audits an invoice to report the hauling he forgot to pay for. The fix didn't fix anything. It moved the error from the direction that gets caught to the direction that doesn't.
flowchart TD
A["Ticket: 22 tons of base for Keller"] --> B{"What prices the freight?"}
B -- "account header: delivered" --> C["Keller's own truck bills $18.25"]
C --> D["Bookkeeper calls, credit memo"]
D --> E["Header flipped to pickup, $14.50"]
E --> F["Your October deliveries bill $14.50"]
B -- "rule reads the truck blank" --> G["His truck $14.50, your truck $18.25"]
A header can't answer a per-load question
Here's the position: "delivered account" shouldn't exist in your pricing at all. Delivered is a property of a load, not of a customer, and a field that stores it on the account is wrong on every mixed month, whichever way it points.
Your bookkeeper will push back, fairly. Accounts get set up delivered or pickup because that's the deal that was made, and customers like invoices that look like last month's. True in 2019. But every customer who owns one truck already hauls both ways: his truck when it's free, yours when the pour is big, and the header is guessing, sixty times a month, in ink.
The hired truck cuts the same corner from the other side. In August you covered Keller for a week with Mazur's tri-axle at $110 a load, and those loads delivered on your dime. If the account was already sitting in the pickup column, you bought freight for cash and sold it for nothing.
There's a smaller cost hiding in the same drawer. When Keller first asked what he'd save by hauling his own, somebody did the subtraction out loud, on the phone, from memory. If the split between your columns isn't written where pricing can see it, every one of those answers is a fresh negotiation, and the freight component of your biggest accounts is folklore.
Price the blank that moves
The window already captures the deciding fact, and always has. Truck 07, truck 12, Keller, Mazur: the operator writes a truck on every ticket because the gate has always wanted to know who's on the deck. Pricing just has to read it. Your fleet list and your hired trucks are reference data. Rock bills from the FOB column. Hauling bills on top whenever the truck under the load is yours or hired by you. That's one billing rule, not a header to flip every time a customer's fleet changes size. A ticket whose truck blank matches nothing on the roster isn't ready to invoice: no fleet number, no known customer truck, no hired truck. It should sit flagged that same day, while the operator still remembers the stranger on the deck.
That's the slice Termco builds. Tickets get digitized as your window already writes them, truck blanks included. The truck roster and both price columns live as reference data and billing rules. A ticket that can't say who hauled it gets flagged instead of priced by habit, and invoice totals assemble from the tickets that cleared. Nothing changes at the scale. Same book, same pen. The paper already named the axles, and now something reads it.
Ninety days of truck blanks
The audit takes an evening and a highlighter. Pull ninety days of tickets for your delivered accounts and read nothing but the truck blanks. A truck that isn't yours on a delivered invoice is freight you charged and didn't perform, a credit memo waiting for a sharp bookkeeper. Then flip it: your trucks on pickup-priced invoices are freight you performed and never charged. Price each circle at the gap between your columns. Keep a separate pile for blanks you can't identify at all, because nobody can price what nobody can name.
If you'd like a second reader, send 10-20 sample tickets to hi@termco.ai, delivered and pickup accounts both, and findings come back within 48 hours.
Keller's keeping the truck. It was a good buy, and the next auction will park one in another customer's yard by spring. Your rate sheet already has the second column ready for that day. What's left to decide is who assigns it, load by load off the ticket, or once a season, by a cell somebody keyed in 2020.
More from the Termco blog.
October 23, 2026
Split by the Alphabet
Add a second billing clerk and you add a second billing policy. Every rule that lives in habit forks the day the keying desk divides.
Read postOctober 22, 2026
Ready by Spring
Old operations software had to swallow your whole company before it could bill one load. A seasonal business never had a window that long.
Read postOctober 20, 2026
212 Loads by Your Count
At settlement the written tally at the bunker beats the clicker in your cab. That gap is how harvest loads vanish, four at a time.
Read post