TICKETRECON

Does your landfill invoice match your scale tickets?

TicketRecon is a waste hauling invoice audit for independent haulers and roll-off operators. Give it one month of landfill scale tickets and that month's invoice. It recomputes every line against the facility's rate schedule and hands back an exception packet: each mismatch with the ticket evidence, the invoice line, the rule it breaks, and the dollar amount.

The first month is free. If it comes back clean, no discrepancies were found in the lines your files covered — that is all a clean result claims. If it doesn't come back clean, you have something you can dispute with.

Run the sample month — no upload needed Upload your own CSVs

Roll-off truck hoisting a roll-off container
Photo: “Roll-Off” by Boomer77, via Wikimedia Commons — CC BY-SA 3.0

What a scale ticket check catches

The specimen month (synthetic data)

The demo runs on a made-up month — 40 scale tickets, 41 invoice lines — priced on a real published schedule: Fairfax County's commercial disposal rates, FY27 (trash $98/ton, brush $59/ton, yard waste $96/ton; per-class minimums assigned inside the county's published $39–$109 range).

Billed total$27,415.06
Expected total$25,841.71
Gross overbilled$2,327.65
Gross underbilled$754.30
Net effect+$1,573.35 in 7 lines

34 of 41 lines were exactly right. The 7 that weren't are the seven kinds of error listed above, one of each. Run it yourself — the sample button at the top recomputes it live.

Try it with your month

No rates file? Then the run is computed on the published Fairfax County demo schedule — not your facility's rates — and the packet carries a banner at the top saying so. Upload your facility's rates CSV to get your real numbers.

Sample files: tickets.csv · invoice.csv · rates.csv

CSV formats

Tickets: ticket_no,date,truck_id,material,gross_t,tare_t,net_t,notes — the notes carry the scale house's own wording: a penalty is priced only when the note records a definite contamination assessment. A note saying none was found supports no penalty, and a "suspected" mention sends any billed penalty to review, unpriced.
Invoice: ticket_no,billed_net_t,billed_rate,billed_penalty_amount,billed_amount
Rates: material,rate_per_ton,minimum_per_load, plus one row contamination_penalty_per_ton,185, carrying your facility's penalty per ton. Material names in the rates file must match the material names on your tickets. List each material once and carry exactly one penalty row — a duplicate row for a material (or a second penalty row) is rejected with the duplicate named, whether the rows agree or conflict, because a schedule with two rows for one material has no single rate to price against.
Every row must have exactly as many fields as its header: a field that contains a comma (a note like "Checked for contamination, none found" is the common case) must be wrapped in double quotes, or the run is rejected with the row named — no field is ever silently dropped. Each column name may appear only once in a header: a duplicated column name is rejected with the column named, because two columns under one name cannot both be read.

How it works

  1. Match. Every invoice line is joined to a scale ticket by ticket number.
  2. Recompute. Each charge is rebuilt from the ticket: material rate × ticket net, per-load minimum applied, contamination penalty only when the ticket records a definite contamination assessment.
  3. Report. Anything that doesn't match lands in the exception packet with both sides of the evidence and the exact dollar effect. Clean lines are counted, not buried.

Privacy, plainly

Honest limits

First month free

Send one month of scale tickets and that month's landfill invoice — by the form above if you have CSVs, or by email if you have paper or PDFs — and the exception packet comes back free, no obligation. Reach us at johnnyribcage@proton.me or message @JohnnyRibcage on X.