Termco
Termco

The Pile With Your Customer's Name on It

22 September 2026

At the north end of your yard there's a pile of 1-inch minus with a customer's name on it. You crushed it in April, to their spec, under a contract that says material will be invoiced as removed. It's September. The pile is still there, most of it, and so far it has produced exactly as many invoice lines as the empty ground next to it.

One ticket, one billable event. The principle holds up well at the scale, and that's precisely the problem here: the contract moved the billable event to the scale, and the sale didn't happen at the scale. It happened in April, when your crusher spent three weeks turning shot rock into somebody's spec. Pay-on-removal quietly rewrites the deal so that nothing you did counts until a truck shows up, and every ton that never gets on a truck retroactively becomes a ton you crushed for free.

Three counts, no referee

Ask how much is in that pile and you'll get three answers that were never going to agree.

The belt scale on the crusher says you made 30,000 tons. The surveyor who flew the pile in June says 28,900. The scale tickets, when the job finally hauls, will sum to something else again, and under the contract as written, the tickets are the only count that turns into money.

Some of the spread is honest physics. Crushed rock leaves the belt damp and loses moisture weight sitting through a dry summer. Some of it is the pit floor: the bottom lift of any pile works itself into the mud beneath, and a loader operator who wants to keep the product clean leaves the last couple hundred tons where they sit. Ask your own loader operators what a pile gives up between the belt and the last truck. They'll shrug and name a number, and it won't be zero.

And some of the spread is commercial. The paving job gets value-engineered in August and needs 26,000 tons, not 30,000. Nobody calls you about that. Why would they? Their obligation, as the contract reads, is to pay for what they remove.

The tons that never become events

Follow one ton of the gap. It came off the belt in April, so you paid to drill, shoot, feed, and crush it. It sat in the pile through the summer. It never crossed the scale, so it never printed a ticket, and in a pay-on-removal deal a ticket is the only thing that creates a billable event. That ton doesn't show up as a bad debt or a disputed invoice. It doesn't show up at all. Your production report says you had a strong April, your billing system says the account is current, and both are telling the truth about different transactions.

Run the arithmetic with your own rates. A 30,000-ton dedicated pile at $14.50 a ton is a $435,000 commitment. If the job hauls out 27,600 tons over two seasons, the 2,400-ton remainder is $34,800 that no invoice will ever carry, and that's before you count fourteen months of a pile occupying ground you could have sold twice. The customer didn't short-pay you. There was never anything to short-pay. The contract defined the leak as not-a-sale.

flowchart TD
  A["Crusher: 30,000 tons to spec"] --> P["Dedicated stockpile"]
  P --> T["Removal tickets: 27,600 tons"]
  T --> I["Invoice lines"]
  P --> M["Moisture and base loss"]
  P --> J["Job re-specced, 2,400 tons stranded"]
  M --> N["No ticket, no billable event"]
  J --> N

Crushing to spec is the sale

Here's the position that will start an argument in your next sales meeting: material crushed to a named customer's spec should bill on production, not on removal, and if you can't get that, you shouldn't sign without a true-up.

The pushback writes itself. Customers want to pay as they haul, and the competitor two counties over will sign whatever you won't. Maybe. But notice what pay-on-removal actually is: you've manufactured finished goods inventory for a single buyer, stored it at your cost, carried the shrink, and given them an unpriced option to walk away from the remainder. A bank charges for every one of those things. You're providing all four inside a price that was quoted as if the ticket and the sale were the same moment.

You don't have to win the whole argument to stop the bleeding. A true-up clause does most of the work: tons produced to spec, measured by a named instrument, reconcile against tons removed at the end of the haul window, and the shortfall bills at an agreed rate. Even 60% of the contract rate on stranded tons converts the pile from a donation into a discount you chose. The clause costs one paragraph. What it mostly costs is the habit of leaving the measurement question unasked. The moment you write it down, someone has to say out loud whether the belt scale, the survey, or the tickets govern, and that conversation is far cheaper at signing than in a dispute.

The haul window needs a keeper

Whatever terms you win, they only pay if somebody runs them, and a haul window that closes fourteen months out is exactly the kind of obligation an office forgets. That part is structure, and it's the slice Termco builds.

The agreement itself is reference data: the customer, the contracted tonnage, the rate, the haul window, the true-up terms, the instrument that governs. Removal tickets get digitized as they happen and reconciled against that record, so what's left on the contract stops being anyone's guess. A ticket pulling against a pile that's already at its contracted tonnage gets flagged instead of keyed on faith. So does a ticket arriving after the window closed, while the true-up you negotiated is still enforceable rather than awkward. Invoice totals assemble only from tickets that cleared. Nothing in that machinery flies a drone or runs your crusher; it holds the terms you signed and refuses to let a ticket contradict them silently.

There's a test you can run this week on a pile that's already gone. Pick one dedicated stockpile that closed out in the last two years. Pull the production count from the belt scale or the crushing invoice, then total every removal ticket against it. Price the difference at the contract rate. That number is what pay-on-removal cost you on one pile, and every dedicated pile in your yard is accruing its own version at whatever pace the gap grows.

If you'd rather have a second reader on it, send 10-20 sample tickets to hi@termco.ai, removal tickets from a dedicated pile especially, and we'll send back what we find within 48 hours.