Unbilled T&M Labor: What Job Data Can and Can't Show
From Level's proprietary contractor research
Across 963 companies with at least 100 logged job hours, the median invoiced-to-logged job-hour ratio is 97.1%. It cannot see work that was never logged. Review completed jobs with logged hours and no linked invoice, then distinguish eligible omissions from warranty, bundled and internal work before calling the difference lost revenue.
Level editorial interpretation; historical status snapshots have not been reproduced as a leakage measure
The Industry's Hidden Billing Gap
Estimates attributed to ServiceTitan and Sera Systems (publications not verified here) put manual time-and-materials tracking at 75-85% of billable work. A 75-85% capture assumption leaves 15-25% outside that measure, but does not establish that labor is permanently uninvoiced. These are vendor estimates with an unstated population and method. This page does not link the specific publications and has not verified them, so treat the range as a scenario to test, not an industry benchmark. What it means in dollars depends on your own capture rate; the derivation is shown once in The Dollar Math below.
An eligible completed job with no invoice needs a billing investigation before a collections follow-up. Distinguish it from a billing speed problem, legitimate nonbillable work and a job already billed through its parent. Paid labor cost establishes an expense, not the amount of recoverable revenue.
What Our Data Shows
An unreproduced historical internal analysis reported 3.84 million job records and a 46% "Fully Invoiced" status share. These counts and the status shares below are not current Level Index metrics. The company population for this snapshot has not been established here; the separate 2,242-contractor research universe does not establish its denominator. Treat the table as retained historical context, not a verified leakage measure. A share of job records by status is not a share of T&M labor hours or dollars:
| Billing Status | % of Total | What It Includes |
|---|---|---|
| Fully Invoiced | 46% | Completed, billed, and tracked |
| In Progress / Open | ~29% | Still being worked or awaiting completion |
| Internal / Warranty | ~5% | Legitimately unbilled: warranty, no-charge, internal |
| Partial / Other | ~20% | Sub-tasks of larger projects, PM visits under SAs, partial billing |
Not every uninvoiced job is lost revenue. Many "Not Invoiced" jobs are sub-tasks of broader projects invoiced at the parent level, PM visits bundled under a service agreement, diagnostic visits that lead to a separate quoted job, or internal work orders. The data can't cleanly distinguish "forgot to invoice" from "not supposed to be invoiced individually."
The status mix is consistent with some work going unbilled, but it does not measure T&M leakage and cannot confirm the vendor 15-25% estimate.
A separately defined Level Index measure is billing capture: hours invoiced ÷ hours logged on jobs. Across 963 companies with at least 100 logged hours, the median is 97.1% (p25 89.2%, p10 66.9%). That denominator counts only hours logged to a job, so it cannot see hours that were worked but never logged, and the vendor definitions do not establish whether that is the gap they describe. The source definitions are insufficient to map the vendor estimate to unlogged hours specifically. Your own matched job, payroll and invoice review must separate unlogged time, legitimate nonbillable work and logged time omitted from invoices. If your billing capture sits near the p10 of 66.9%, the logged-but-uninvoiced gap is large and worth reviewing first, though part may be legitimately nonbillable; if it sits near 97% and logging completeness is unknown, test unlogged hours separately. A high logged-hour capture ratio does not establish that an unlogged-hours problem exists.
The Dollar Math
The dollar figure depends on which capture rate you assume, so the derivation is shown once here. Use your own inputs.
Planning arithmetic (fictional $5M contractor, 40% T&M, so $2M of billed T&M revenue):
Unbilled billable value = billed T&M ÷ capture rate, minus billed T&M.
| Capture rate assumed | Basis of the assumption | Unbilled value at billing rates |
|---|---|---|
| 97% | Fictional value-capture assumption, numerically near the Level hours-capture median; not a conversion of its hour ratio to dollars | about $62K |
| 85% | High end of the vendor capture estimate (unverified) | about $353K |
| 75% | Low end of the vendor capture estimate (unverified) | about $667K |
The base is $2M already billed, so the omitted amount is billed value × (1/capture − 1). At 85% capture it is about 17.6% of billed value; at 75% it is about 33.3%. The corresponding 15% and 25% gaps are shares of total eligible billable value, which is the larger denominator. These are values at billing rates, not cash or incremental profit. An omitted invoice for completed labor may require no additional field work, but materials, commissions, rework, credits and other costs reduce the contribution. An invoice alone does not establish newly earned revenue, especially if it was already accrued. Cash arrives only as you collect, and some old work may not be billable at all.
Job-count version (fictional): for a contractor with 1,200 billable jobs per year, if 5% go uninvoiced at a $1,000 average, that's 60 jobs × $1,000 = $60,000/year at billing value. At a fixed missed-job rate and invoice value, doubling eligible job count doubles exposure. Doubling both job count and the missed-job rate would quadruple it. For scale, $750K of revenue at an 8% net margin produces $60K of profit. The omitted $60K invoice value does not establish that much incremental profit.
Separate initial backlog from recurring misses. The first completed-no-invoice report can surface months of old work. Report that as a one-time backlog: confirmed contract-eligible value, invoices actually created and cash actually collected. Do not multiply that accumulated stock by 52.
Weekly flow math: after backlog cleanup, count confirmed contract-eligible missed invoices on jobs completed during the review week. Recurring annual exposure = that weekly count × the average eligible value of those misses × 52. Fictional steady-flow example: 3 confirmed new misses per week at $500 = $78,000 a year at billing value. At an assumed 85% eventual collection rate, that would produce $66,300 of cash; the 85% is a fictional collectability assumption, not the Level collection-ratio median. Measure the new weekly flow for, say, four weeks after cleanup before annualizing, and test seasonality before treating that run rate as a forecast.
| What to measure | Formula | Where to pull it |
|---|---|---|
| Completed jobs with no invoice | Count of completed-status jobs with no linked invoice, older than 48 hours | FSM job list filtered by status and invoice link |
| Unbilled logged hours value | Eligible logged hours × contract bill rate for T&M jobs; use contract or flat-rate price for other work | FSM timesheets |
| Billing capture | Hours invoiced ÷ hours logged on jobs | FSM timesheet and invoice line reports |
| Unlogged hours check | Paid field hours, minus hours logged on jobs, minus known drive, shop and training time | Payroll vs. FSM timesheets |
| Recovered cash | Cash collected on invoices created from the backlog | AR report with backlog invoices tagged |
Free benchmark review
See how your cash cycle benchmarks.
We compare your AR, billing speed, and cash timing against companies that collect faster.
Why 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. If neither the dashboard nor the weekly review assigns these candidates to an owner, the exception can persist.
2. T&M work needs a time-to-invoice check. Vendor-attributed estimates (ServiceTitan, Sera Systems; publications not linked or verified here) put manual T&M capture at 75-85% of billable work. The leak has two distinct mechanisms: hours worked but never logged to a job, and hours logged but never converted to an invoice. Level's billing-capture median (97.1% of logged job hours invoiced, n=963) speaks only to the second. See The Dollar Math above for what each capture rate would mean on $2M of T&M revenue.
3. Small jobs get ignored. A $300 diagnostic call seems trivial. But in a fictional example where one tech runs 10 of those per week and 2 never get invoiced, that's $600/week, $31,200/year at billing value. A threshold based only on individual job size can miss that repeated exposure. Multiply by dozens of techs and the number becomes material.
4. Job closeout doesn't exist. Without a formal job closeout process, field completion can become detached from final cost reconciliation, invoice generation and AR follow-up. Without a closeout checklist, unbilled jobs accumulate silently.
5. Nobody's watching the aging backlog. Completed-but-uninvoiced jobs don't show up in AR aging because they were never invoiced. An earlier first-party pull counted about 288,000 completed jobs with logged hours and no linked invoice. That unreproduced historical internal count is not a current Level Index metric; it includes warranty, bundled and internal work and does not count confirmed missed billing. The genuinely missed jobs among these candidates can be absent from your accounting dashboard. They remain in field-service records as "completed" jobs that everyone assumes were handled. Some were not. Review the contract and billing links before calling a candidate missed revenue. 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.
In a subset of Level's job data, reported in our internal analysis as 1.39 million jobs representing $7.56 billion in revenue, no job-level cost data was tracked: no labor cost, no material cost, no job-level margin. These are unreproduced historical internal counts, not current Level Index metrics; neither the company population nor the source-cost completeness has been re-established here. 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 published company-level collection-ratio median is ~85% of billed revenue (85.1%, cash collected ÷ billed revenue, n=464). But you can't collect what you never invoice.
Fictional arithmetic for a company whose own collection rate is 85%: if 5-10% of billable work never becomes an invoice, cash recovered on work performed is 85% × 90-95%, or 76.5-80.75% before rounding. These are fictional scenario outputs, not the observed collection benchmark.
Two cautions apply. First, the median is not your rate, so use your own matched cohort and cutoff. Second, the gap is not all recoverable cash: it can mix reporting-period timing, disputes, credits and true bad debt. Level has not published the collection metric's matched-cohort window.
Layer in the billing speed data. The Level Index median is 1 day from completion to invoice across 733 companies, a figure that includes progress billing (about 25% of companies). Among post-completion invoicers the median is 7 days. Either way, the median only measures jobs that eventually get an invoice. The uninvoiced jobs aren'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 candidates for review, not automatically missed billable work.
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 logged hours and no invoice still needs its contract, parent billing, agreement, warranty and cancellation status checked.
Step 3: Quantify the total. Sum the expected contract-eligible invoice value of the uninvoiced jobs after removing warranty, bundled and internal work. Even a rough estimate will tell you whether this is a $20K problem or a $200K problem. We don't have a measured range for contractors your size, so your own report is the measurement. Use the average value of the uninvoiced jobs themselves rather than your overall average job value, since missed invoices may skew toward small jobs.
Step 4: Build the closeout process. Use 48 hours as an internal review trigger, not a rule to invoice every job regardless of contract or legitimate billing status. 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
This page reports a vendor-attributed 15-25% T&M scenario; the specific publications and definitions remain unverified. Level's job data is consistent with a gap but does not measure T&M leakage. 46% of job records reach "Fully Invoiced" status, and much of the rest is in progress, internal, bundled under SAs, or sub-tasks of larger projects. The Level Index billing-capture median of 97.1% (n=963) shows the typical company invoices most logged job hours, but it cannot see hours that were never logged. The way to know your own gap is to measure both leaks.
The fix is straightforward: run a weekly report of completed jobs with logged hours and no invoice, quantify the gap, and build a closeout process with a 48-hour candidate review and documented exceptions for contractual or legitimate nonbillable work. Confirmed eligible omissions can represent billing for work you already did, with no new customers required. Track invoices created and cash collected from the backlog so the recovery is measured rather than assumed.
Q: How does Level find unbilled work? A: After confirming supported access, the selected company and the available source fields, we cross-reference completed field-service jobs against QuickBooks invoices using the permitted API, native export or browser collection path. Jobs with logged hours or completed visits that lack a corresponding invoice are listed for review, along with their age, hours and job type, so warranty, internal and bundled work can be separated from true misses. We don't publish a typical finding because we haven't released a counted, dated basis for one. 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 easier to review.
Q: Isn't this just a software problem? A: Check both the available fields and the review process. Job and invoice status may be present while parent billing links, recurring-work coverage or costs are missing from the selected export. Verify population completeness, then make completed-not-invoiced a standing exception review with an owner. A report alone does not resolve those exceptions.
Q: How fast can this be fixed? A: A trial plan can allocate the first week to an initial candidate batch and two weeks to testing daily or weekly closeout ownership. Those are planning intervals, not measured delivery timelines or a promise to clear the backlog. Access, volume, parent-job links and contractual exceptions determine the work. Review 30-60-day and 90+-day candidates separately; age alone does not establish whether either group is billable. Billing deadlines, notice requirements and applicable lien or claim rules govern eligibility. Track unresolved exceptions, invoices created and cash collected separately from ongoing billing; payment terms do not guarantee actual collection.
Get the next one
Want next week's benchmark in your inbox?
One email a week. Real numbers from 2,200+ service businesses. No fluff. Unsubscribe anytime.
Related reads
Cash Flow
Profitable on Paper, Broke in the Bank: The Four Gaps That Eat a Contractor's Cash
The median contractor collects 85.1% of what it bills (n=464) and invoices 97.1% of logged hours (n=963). Four measurable gaps, none on your P&L.
Cash Flow
The October Problem: Roofing Permits Spike 46% in One Month, Then the Cash Crunch Hits
Roofing permits spike +45.8% above average in October, then fall into winter. Why a fall demand peak can set up a Q1 cash squeeze, how to test whether it applies to you, and how to plan for it.
Cash Flow
The 13-Week Cash Forecast Is a Data-Layer Test
A 13-week cash forecast exposes whether field status, billing, AR, AP, payroll, backlog, and accounting data actually tie.

About the author
Sam Yang
Founder & CEO
Founder of Level, the AI operating layer for contractors and skilled trades, and the other operating businesses where scarce labor is the constraint. Ex-CFO across trades, SaaS, and service businesses. 4 years as Director of Growth Product at BuildOps, building financial tooling used by 1,000+ commercial contractors. Four years in PE and investment banking rolling up and acquiring service businesses, $2.5B in total transactions including M&A and IPOs. Stanford MBA, Brown undergrad. The Level founding team's analysis of 2,200+ contractors ($13.25B in job revenue) across operating, private-equity, and CFO roles anchors the Level Index benchmark research.
LinkedIn