2,200+ contractors benchmarked. How do your margins stack up? See where you stand →
Level
Cash Flow

288,000 Jobs Where Technicians Logged Hours and Nobody Sent an Invoice

Sam Young·2026-04-10·8 minute read
288,000 Jobs Where Technicians Logged Hours and Nobody Sent an Invoice — Level CFO

The Work Got Done. The Invoice Never Did.

Your technician drove to the site. Logged in. Worked the job. Recorded their hours. Drove home.

Nobody sent an invoice. Not late — never.

We analyzed 3.84 million jobs across 1,779 contractors in the trades. Of those, 1.37 million jobs — 36% of all jobs — were marked "Not Invoiced." That alone is alarming. But the number that should make your stomach drop is this: 288,319 jobs had actual labor hours recorded and were never invoiced. A tech logged time. The company paid that tech. And nobody ever billed the customer.

This isn't a collections problem. It's not a slow-pay problem. It's not even a billing speed problem. This is work that was performed, paid for in labor cost, and then abandoned in your system. The money left your bank account and never came back.

The Full Billing Breakdown

Here's where 3.84 million jobs landed:

Billing StatusJobs% of Total
Fully Invoiced1,753,40146%
Not Invoiced1,373,63536%
Partially Invoiced86,0042%
Other / blank~628,00016%

46% of jobs fully invoiced. That's it. Fewer than half. The "Not Invoiced" category is nearly as large as the fully-invoiced one.

Within that 1.37M "Not Invoiced" bucket, the severity varies. Some are warranty calls or internal work that legitimately shouldn't be billed. But 405,863 jobs had completed site visits — a tech physically went to the location and did work — and still no invoice was generated. And 288,319 had actual hours logged in the system — labor was tracked, the company incurred cost, and the billing step simply never happened.

The Dollar Math

How much money are we talking about? The average service call with logged hours carries $500 to $2,000 in billable labor, depending on the trade and job complexity. Apply that range to 288,319 jobs:

  • Conservative ($500/job): 288,319 x $500 = $144 million in unbilled labor
  • Mid-range ($1,000/job): 288,319 x $1,000 = $288 million
  • Higher-complexity ($2,000/job): 288,319 x $2,000 = $577 million

Even at the conservative end, that's $144 million in labor that contractors already paid for and will never recover. This isn't theoretical revenue. It's not "potential" upside. These are hours that hit payroll. The cash went out. The invoice never went in.

For a single contractor doing $8M in revenue with 1,500 jobs per year, if even 5% of their jobs with logged hours go unbilled at $1,000 average, that's 75 jobs x $1,000 = $75,000 per year walking out the door. On an 8% net margin, that wipes out nearly the entire profit from $1M worth of revenue.

Why 288,000 Jobs Fall Through the Cracks

This isn't one failure. It's a system of compounding breakdowns.

1. The field-to-office handoff is broken. The tech closes the job on their phone. Maybe they mark it complete, maybe they don't. The office doesn't have a reliable trigger to generate an invoice. So the job sits in a "completed" status indefinitely. Nobody's dashboard flags it. Nobody's weekly checklist catches it.

2. T&M work is the worst offender. Industry data consistently shows that manual time-and-materials tracking captures only 75-85% of billable work. The remaining 15-25% is never invoiced — hours that were worked but not recorded cleanly enough to bill, or recorded but never converted to an invoice. For a $5M contractor with 40% T&M revenue, that's $100K-$250K annually in unbilled labor.

3. Small jobs get ignored. A $300 diagnostic call seems trivial. But if your techs run 10 of those per week and 2 never get invoiced, that's $600/week, $31,200/year. Nobody notices because no single job is large enough to trigger alarm bells. Multiply by dozens of techs and the number becomes material.

4. Job closeout doesn't exist. Most contractors don't have a formal job closeout process. The job gets done, the tech moves on, and the administrative steps — final cost reconciliation, invoice generation, AR follow-up — happen inconsistently or not at all. Without a closeout checklist, unbilled jobs accumulate silently.

5. Nobody's watching the aging backlog. These 288K jobs don't show up in AR aging because they were never invoiced. They're invisible to your bookkeeper, your accountant, and your QuickBooks dashboard. They live in your field service software as "completed" jobs that everyone assumes were handled. They weren't. This is the same stale backlog problem that erodes margins across the board.

The Compounding Problem

Unbilled work doesn't exist in isolation. It compounds every other financial blind spot.

From our analysis of 1.39 million jobs representing $7.56 billion in revenue: zero cost data was tracked. No labor cost, no material cost, no job-level margin. When you can't see your real job margins, you can't identify which jobs were profitable, which were losers, and which were never billed at all. The phantom margin problem and the unbilled work problem feed each other.

And consider the collection math. The median contractor collects 85% of what they bill. But you can't collect what you never invoice. If 5-10% of your billable work never becomes an invoice, your effective collection rate isn't 85% of billed revenue — it's 85% of the 90-95% you actually billed. Your real cash recovery rate on work performed could be under 80%.

Layer in the billing speed data: the median contractor invoices 1 day after completion, but this median excludes the jobs that are never invoiced at all. The "billing speed" metric only measures jobs that eventually get an invoice. The 288,319 jobs in our data weren't late. They were never started.

How to Find Your Unbilled Work

This is fixable. It starts with a report you've probably never run.

Step 1: Pull every job with a "completed" status and no linked invoice. Your field service software can generate this. Sort by completion date. If you see jobs from 30, 60, 90+ days ago that are marked complete with no invoice, those are your unbilled jobs.

Step 2: Filter for jobs with logged hours or completed visits. These are the ones with real cost attached. A completed job with zero hours might be a warranty call or a canceled appointment. A completed job with 4 hours of tech time and no invoice is money you left on the table.

Step 3: Quantify the total. Multiply unbilled jobs by your average job value. Even a rough estimate will tell you whether this is a $20K problem or a $200K problem. For most contractors in the $3-30M range, the number is $50K-$250K annually.

Step 4: Build the closeout process. No job should sit in "completed" status for more than 48 hours without an invoice. Set up an automated alert or a daily report. Assign someone to review it. Make "completed but not invoiced" a weekly KPI that gets reviewed alongside revenue and backlog.


The Bottom Line

Of 3.84 million jobs across 1,779 contractors, 288,319 had labor hours logged and were never invoiced. At $500-$2,000 per job, that's $144M to $577M in labor that contractors paid for and never billed. This isn't a collection problem or a payment terms problem. It's a process gap between field operations and the back office — and it's invisible in your accounting software because the invoice was never created.

The fix is straightforward: run the report, quantify the gap, and build a closeout process that catches every completed job before it ages past 48 hours. For most contractors, this is one of the fastest cash flow wins available — no new customers, no new tools, just billing for work you already did.

Q: How does Level find unbilled work? A: We connect to your field service software and QuickBooks, then cross-reference completed jobs against invoices. Any job with logged hours or completed visits that lacks a corresponding invoice gets flagged immediately. In most audits, we find $50K-$250K in annual unbilled work within the first week. The free profitability audit includes this analysis.

Q: What if some of those uninvoiced jobs are warranty or internal work? A: They should be coded as warranty or internal in your system — not left as generic "completed" jobs. Proper job type coding is part of good job costing hygiene. If warranty work isn't categorized, it inflates your unbilled count and makes it impossible to distinguish real revenue leakage from legitimate non-billable work. We help contractors set up job type structures that make this separation automatic.

Q: Isn't this just a software problem? A: The software has the data. The problem is that nobody reviews it. BuildOps, ServiceTitan, and most modern FSM platforms track job status and invoice status. But the "completed, not invoiced" report isn't part of most contractors' weekly rhythm. It's a management process gap, not a technology gap. A fractional CFO makes sure this report gets run and acted on — every week.

Q: How fast can this be fixed? A: The backlog review — finding and invoicing old completed jobs — can be done in a week. Some of those will be too old to bill (90+ days is a hard sell to most customers), but many in the 30-60 day range are still recoverable. The process fix — daily or weekly closeout reviews — takes about two weeks to implement and immediately prevents new jobs from slipping through. Most contractors see measurable cash improvement within 30 days.

About the author

Sam Young

Founder of Level. Former PE investor and investment banker. Built AI-powered accounting products at BuildOps — the largest field management software for commercial contractors — benchmarking financial data across 2,200+ contractors in HVAC, plumbing, electrical, and mechanical trades. Operations analytics work with Astra Service Partners, CIVC Partners (American Refrigeration), and other PE-backed portfolios in the trades. Co-founded Overline, where his team has analyzed over $1B in real estate assets. Stanford MBA.

LinkedIn

Ready to see where your money is going?

Get a free job profitability audit.

Get Your Free Audit