Skip to main content
2,200+ contractors in the research universe benchmarked. Do you know your gross profit per labor hour? See where you stand →
Level
Cash Flow

Why Your Field Software Isn't Fixing Your Cash Flow

Sam YangEx-CFO across trades, SaaS & services · $2.5B in total PE/banking transactions · Stanford MBA
Updated October 7, 2026·Originally published April 15, 2026·12 minute read
Share

Owner checks for field software and cash flow

If our field platform shows every job, why does the P&L still surprise us?

An owner-review question

12 minute readCash Flow

The short answer

Field software is built to run the field. Whether your configuration also turns completed work into sent invoices, collection follow-up and fully costed job margin is something to test in your own tenant. In the Level Index (n=464 cross-trade contractors), the median contractor collects 85.1% of billed revenue as cash, against a legacy 92-96% comparison span, not a universal target. That gap mixes timing, disputes, credits and write-offs, so it is not all recoverable cash. ProcureDesk, a procurement software vendor, has reported that QuickBooks job-cost reports can run 15-25% off actual; that is a vendor claim with an unstated population, not a Level measurement. The practical fix is a reconciliation layer that reads from the FSM and accounting rather than a new system of record. Salesforce MuleSoft, an integration vendor, has reported that fewer than 30% of business apps are integrated; that is a vendor survey figure, not a contractor-specific measurement.

Key takeaways

  • 'Invoice ready' is not 'invoice sent': among post-completion invoicers, the Level Index median is 7 days from completion to invoice, and the bottom decile waits 30+ days (n=733). Fictional arithmetic: a $10M service contractor bills about $27,400 a day ($10M / 365), so cutting a 7-day lag to 1 day releases about $164K once (6 days x $27,400). That cash stays tied up only as long as the lag persists; cutting the lag is a one-time timing change, not recurring profit.
  • Card batch processing can leave job costs unassigned; ProcureDesk, a vendor, reports 25-35%, with an unstated population. Fictional arithmetic: if true job cost is 72% of revenue but only 52% is assigned (about 28% of the cost missing), the dashboard shows 48% gross margin while the real figure is 28%.
  • Showing AR aging is not the same as driving collections, so check whether your setup escalates by invoice age. Fictional arithmetic: on $10M billed, an 85% versus 96% collection rate is a $1.1M difference in cash collected during the period. Only the share that is collectible and simply late is recoverable cash. Credits, disputes, retainage and write-offs make up the rest, and any release is mostly one-time.
  • CIO Dive has reported a survey figure of about 12 hours a week lost searching across disconnected systems, and MuleSoft reports that fewer than 30% of business apps are integrated. Both are general survey figures with populations not verified here, not contractor measurements, and neither shows that one causes the other. The useful owner check is your own: count invoices, cost lines and agreements that exist in one system but not the other.

The Pitch That's Half True

Every field service software sales pitch promises the same outcome: "You'll collect faster. You'll know your margins. You'll have financial visibility."

Most of it is true. The parts that aren't true are where contractors lose money.

I spent four years as Director of Growth Product at BuildOps. Before that I was a PE analyst doing diligence on contractor acquisitions. Now at Level I review contractor P&Ls for a living. I've seen the full arc: what field software sells, what it actually delivers, and what falls through the cracks.

This isn't a post about BuildOps or ServiceTitan being bad. They're both excellent products. In my operating experience, they can substantially improve dispatch and field workflows. Their operational data still needs a financial acceptance check: reconcile the population, costs and timing before using it for decisions. And that distinction is where many contractors, even with a large FSM subscription, can still have cash stuck.

Here's what I mean, with owner checks and labeled fictional arithmetic you can rerun on your own data.


What Field Software Actually Does

Before we get into the gap, let's be precise about what FSMs are built to do. When they work well, they:

  • Route technicians efficiently and cut drive time
  • Replace paper tickets with digital work orders
  • Capture time, parts, and photos at the job
  • Trigger an invoice the moment a job closes
  • Store customer history in one place
  • Enable techs to quote and collect in the field

That's the operational job, and for many contractors it is valuable on its own. Whether it pays back for your shop depends on your actual subscription cost and the measured time and errors it removes. This page does not cite a source for typical subscription pricing.

The pitch starts to break down when the operational data has to become financial intelligence.


A Fictional $12M Contractor Review Scenario

To make this concrete, here is a fictional scenario. It is not a client story or a composite of clients, and every number is an assumption chosen for arithmetic.

A fictional commercial mechanical contractor runs $12M in annual job revenue, about $32,900 billed per day ($12M / 365). Dispatch works and the operations team uses its field platform. These independent inputs show five finance checks; they are not a relabeling of an individual client record:

CheckHow to run itFictional result
Completed jobs with no invoice sentList jobs marked complete with no invoice number, by completion date$180K of candidates, about 5.5 days of billing; confirm contract eligibility and parent invoices first
Jobs with no cost data attachedCount completed jobs with zero labor hours or zero material cost4 of every 10 completed jobs need a cost-completeness review
Month-to-month gross margin swingCompare monthly gross margin with and without late cost postings31% one month, 39% the next; test late postings before assigning a cause
AR over 90 days with no follow-up loggedFilter aging over 90 days, then check the last contact date$860K; check contract terms and statutory notice, lien and payment-claim deadlines before an aging-based step
Service agreements expired in the last 12 months with no renewal contactCompare expiry dates with renewal activity$240K of annual agreement value to review, not guaranteed renewal revenue

In this fictional scenario the field platform is doing its operational job. What is missing is a routine that turns those five checks into owners and next actions. Level does not publish a measured trend of FSM adoption versus financial-control gaps, so run the five checks on your own data rather than assuming your shop matches the scenario.


The Eight Specific Gaps Between Your FSM and Your P&L

Here's where the breakdown can happen. Treat each gap below as a test to run in your own tenant. Capabilities differ by product, edition, add-on and configuration, and this page does not certify what BuildOps, ServiceTitan, Housecall Pro, FieldEdge or any other platform does or does not do natively.

Gap 1: "Invoice Ready" ≠ "Invoice Sent"

In many setups, a job is marked "complete" when the tech hits done and "ready to invoice" once the quote, PO and materials reconcile. That's not the same thing as the invoice actually being in the customer's inbox.

Across the Level dataset, the median contractor invoices in 1 day (including the ~25% that progress-bill on install work). But among post-completion invoicers only, the adjusted median is 7 days, and the bottom 10% sit for 30+ days. Check whether a $12K work order can sit in "ready to invoice" for three weeks in your setup without anyone being alerted.

Fictional dollar impact on a $10M service contractor, using annual revenue / 365 x lag days: cutting a 7-day lag to 1 day is 6 days x about $27,400 a day, or roughly $164K of cash released once. That cash is tied up for as long as the lag persists. Cutting the lag is a one-time balance change, not recurring profit. (Billing speed benchmarks →)

Gap 2: Job Costing Exists, But Isn't Attached

Many FSMs offer job costing, but it only works if costs are attached. Level does not publish a measured share of contractors with labor, materials and subcontractor costs fully linked to jobs, so measure your own. Count last month's completed jobs that have labor hours, material cost and subcontractor cost each attached. Also decide whether overhead is allocated into job cost or kept below gross margin, and do it one way only so the same cost is not counted twice.

The fictional result: a dashboard shows "average gross margin 48%" when assigning the missing costs brings it to 28%. This is the phantom margin problem. It's not the FSM's fault. The FSM can't force you to tag materials to the right job. But check whether your setup alerts anyone when a large share of completed jobs have no cost data.

Gap 3: Collection Rate Is Tracked After the Fact, Not Driven

Showing AR aging is not the same as driving collections. Test whether your configuration triggers a step such as "this invoice is 14 days old, this customer usually pays in 22 days, escalate now." The Level Index median collection rate is 85.1% of billed revenue collected as cash (n=464 cross-trade contractors), with a legacy 92-96% comparison span, not a universal target and 96% at the 90th percentile. Fictional arithmetic for a $10M contractor: an 85% versus 96% rate is about $1.1M of billed revenue not collected in the period. That is not the same as the AR balance on a given day, and it is not all recoverable cash. Part is late but collectible, part is credits, disputes or retainage, and part may become a write-off. Contract terms and statutory notice, lien and payment-claim deadlines override any aging-based playbook, so check them first.

Closing the gap requires assigned collection actions and reconciled records. Your FSM may support some of that workflow natively; test its current configuration before adding another layer.

Gap 4: Margins Are Visible Per Job, Not Per Segment

You can pull up one job and see its margin. But can you answer: "What's my gross margin on residential refrigeration service jobs under $2K, this quarter, vs. last quarter?" Test whether your FSM can answer that natively or only through custom reporting, and get a written scope and price for any custom work before assuming the cost.

That segment-level visibility is where pricing decisions live. Without it, you raise prices across the board or you don't raise them at all. Both are wrong.

Gap 5: Service Agreements Track Visits, Not Economics

Your FSM likely knows how many SA visits happened this month. Check whether it also reports agreement gross margin with technician labor fully loaded. The Level Index median SA gross margin is 37.9% (n=259 cross-trade companies with $10K+ agreement revenue). The 10th percentile is -30.4%, so negative agreement margins do occur in the measured population. Fictional example: $2M of agreement revenue at -20% gross margin loses $400K of gross profit a year, while the dashboard shows 95% of visits completed on time. Operationally excellent. Financially damaging.

The operating check and financial check answer different questions. A completed visit can still belong to an unprofitable agreement, even when your FSM supports both reports.

Gap 6: Quotes Sit With No Follow-Up Triggers

Median decided-quote conversion across 794 contractors is 73.9%, but that is won / (won + lost) and excludes pending quotes. Counting every quote issued, the median is 38.1%. Winning quotes convert in a median of 2 days, while lost quotes are marked lost after a median of 29 days, but those decided-record medians do not establish the chance that a pending quote will win after a week. Set follow-up rules from your own quote cohorts, project schedules and customer buying process. Fictional example: a $30M contractor with $2.3M of quotes that expired without a logged follow-up has a list worth working, not a guaranteed $2.3M of revenue. Check whether your setup prompts a call when a $47K quote is 9 days old.

Gap 7: Budget vs. Actual Is a Feature Nobody Turned On

Across 315,393 jobs from 1,391 companies with both budgeted and actual labor hours, the median job used 99.4% of budgeted hours, the mean was 119%, 40% of jobs went over budget and 18.3% went over 150% of budget. That is a per-job distribution, not a ranking of contractors. Many FSMs support budgets at the job level. Check what share of your own completed jobs have a budget entered at all, and whether anyone compares budget to actual while the job is still open.

The FSM allows budgets. It doesn't prosecute them. Without that prosecution loop, you find out you lost $40K on a job three weeks after it closed.

Gap 8: Nothing Pushes the Numbers to Ownership

The CEO gets a monthly P&L from the accountant. They might look at a weekly dispatch board from the FSM. Between those two views, nothing is connecting operational events to financial outcomes in anything close to real time.

The 7 numbers every $5M contractor should check weekly live in neither the P&L nor the FSM. They live in the seam. And the seam is where money hides.


Free benchmark review

See how your cash cycle benchmarks.

Start with a free conversation about your priorities. With agreed access to the relevant records, we compare your numbers with applicable benchmarks and identify what to review first.

Why the Gap Exists (And Who Owns It)

Dispatch, mobile workflows and customer communication are common FSM capabilities. Evaluate the product and configuration you actually use instead of inferring a vendor's priorities. Vendor roadmaps change, so check current product documentation rather than assuming a feature does or does not exist.

The same is true of QuickBooks and Sage. They're general-ledger systems. They're built to record transactions, not to drive decisions. Ask your accountant to run "service agreement margin by customer tier, trailing 90 days" and check whether the system produces it natively or needs custom work.

The financial layer sits in between. It pulls dispatch and job data from the FSM, actuals from the accounting system, and turns it into the answers that change how the business is run. If you want the deeper mechanics, this is why your field platform and accounting never agree and how to reconcile the systems you already run. That's a different job from dispatch or general-ledger recording. Whether any vendor builds more of it in later is a roadmap question, so test what your current systems do today.


What the ROI Actually Looks Like

A common owner question: if we already pay for a large field-software subscription, shouldn't that cover this? Here is fictional math to rerun with your own numbers.

Fictional $20M commercial contractor, billing about $54,800 per day ($20M / 365):

GapFormula and fictional inputsResultType
Billing lag from 7 days to 2 days5 days x $54,800about $274K released onceOne-time cash timing
Collection rate from 80% to 95%15 points x $20M billed = $3.0M gap; assume a review finds 40% is collectible and simply lateabout $1.2M released once; the other $1.8M needs credit, dispute, retainage or write-off reviewOne-time cash, partly unrecoverable
Negative-margin SA segment$1.5M segment revenue x (+15% minus -10%)about $375K gross profit a year if pricing and cost changes holdRecurring gross profit, subject to renewals
Follow up on expired quotes$2M of new eligible quote volume each year x an assumed 10-point incremental win rate x 40% gross marginabout $80K annual gross profit if the added work is delivered and recognizedA one-time backlog produces one-time opportunity; annual volume and incremental wins must be measured
Catch install overruns earlier$8M install revenue x 2 margin pointsabout $160K gross profitRecurring only if controls hold

Do not sum these lines into one EBITDA number. The billing-lag and collection lines are one-time cash timing changes on the balance sheet. The agreement, quote and overrun lines are gross-profit changes that recur only if the underlying behavior holds. Level does not publish a measured EBITDA-uplift figure for this kind of work. A financial layer can read from the systems you already run without a rip-and-replace, though data mapping and review still take time.

The example sizes workflows to test, not a permanent limitation of every FSM. Check what your licensed edition already supports before buying or building the missing piece. When does a contractor need a CFO vs. a bookkeeper, and the practical answer for a $10M+ contractor is: when you realize the FSM isn't going to close these gaps on its own.


The Honest Framing

The FSM vendors aren't your enemy. They're doing what good software does: running operations. The financial intelligence layer, reading from the FSM, writing nothing back, pointing out the gaps before they compound, is a different job that many owners have not yet assigned to anyone.

If you're on BuildOps or ServiceTitan and you feel like the P&L still doesn't tell you what you need to know, you're not doing it wrong. You're experiencing the gap between operational software and financial software. The gap is closeable. Whether it closes inside your FSM, your accounting system or a separate layer depends on what your configuration can do.


The Bottom Line

Field software is doing its job. The gap between what it captures and what your P&L should tell you is where cash can hide. Level does not publish a measured EBITDA figure for that seam, so size it for your own shop with the checks above, keeping one-time cash releases separate from recurring gross profit. The cause is usually not the FSM failing but nobody owning the financial layer on top of it.

You don't need to rip out BuildOps or migrate off ServiceTitan. You need a layer that reads from them and surfaces the numbers that nobody's watching.


Q: So are you saying BuildOps/ServiceTitan are bad? A: No. They can be strong tools for running field operations. I worked at BuildOps for four years. What I'm saying is that financial intelligence is a different job. Your FSM may tell you "jobs completed today." Check whether your configuration also tells you "this segment of jobs is unprofitable, three of your SAs are losing money, and your top customer hasn't paid in 47 days." If it doesn't, those questions live in the financial layer on top.

Q: Can't my controller or bookkeeper do this? A: They can, partially. The constraint is time and data engineering. The time needed to extract, reconcile and review the data depends on volume and tooling. An experienced controller or bookkeeper may own the review with integration support. Measure the workload before deciding whether an additional role is needed. Many $5-30M contractors find a dedicated FP&A hire hard to justify. That's the gap an AI-native CFO layer is built to fill. See when contractors need a CFO vs. a bookkeeper.

Q: What would a financial layer actually look like on top of my FSM? A: It reads job, SA, quote, and invoice data from the FSM through an API, native exports or reports, depending on what your account makes available. It reads P&L and AR from QuickBooks/Sage. It runs the calculations nobody else does, margin by segment, collection probability by invoice age, expired quotes by dollar value, SA profitability by tier, and it pushes the 7-10 things ownership needs to see this week into an inbox or dashboard. No new system of record. No data migration. At Level we build this for contractors on a monthly retainer; the first audit is free. Level does not promise a recovery amount; the audit sizes the items above from your own data.

Q: How do you actually measure the ROI of that layer? A: Three metrics. (1) Days sales outstanding, did it come down? (2) Unbilled work at month-end, did it shrink? (3) Gross margin variance between what the FSM says and what the true P&L shows, did it tighten? Record a baseline before work starts and review all three at 60 and 90 days. Treat a DSO reduction as a one-time cash timing change, not recurring profit, and weigh the monthly fee against the measured changes in your own data.

Q: Where can I see the underlying benchmarks? A: The full Level Index is public at /benchmarks/contractor: collection rates, SA margins, billing speed, quote conversion, and pull-through, all with quartile breakouts. For the public-company comparison side (EBITDA multiples, DSO, FCF margins at the big listed contractors), see the Market Monitor.

Share

Get the next one

Want next week's benchmark in your inbox?

One email a week. Real numbers from 2,200+ contractors in the research universe. No fluff. Unsubscribe anytime.

Sam Yang

About the author

Sam Yang

Founder & CEO

Founder of Level, the always-on finance team for contractors, service businesses, and ecommerce brands. 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

See how your cash cycle benchmarks.

Start with a free conversation about your priorities. With agreed access to the relevant records, we compare your numbers with applicable benchmarks and identify what to review first.

2,200+ businesses benchmarked$13.25B in revenue analyzedWeekly action cadence

No credit card. Start with a 15-min call. We only follow up if we can actually help.

No commitment. Real numbers, not generic advice.