The Timing Trap
The flyout locks, and payroll runs later
This is the one people find hardest to believe until they check it, so check it. The job costing flyout locks once the invoice is posted and exported. After that, adjustments to labor do not flow back into the job cost.
Now overlay your actual calendar. The job finishes Tuesday. You invoice immediately, because you want the cash and because collecting at the door is the whole point. Thursday the batch exports to QuickBooks and the flyout locks. The following Monday payroll runs, and that is when the timesheet corrections happen: the tech forgot to clock two and a half hours, the overtime got recalculated, the commission on the sale was finalized, the helper hours got moved to the right job.
None of that reaches the job. Ever. The cost on that job is permanently frozen at the Thursday snapshot, and it is missing exactly the labor that was added after the fact.
And the errors are not random
Here is the part that turns an annoyance into a real problem. Post-invoice labor adjustments are not evenly distributed. They cluster on the messy jobs: the callbacks, the ones that ran long, the ones where a second tech had to be dispatched, the ones where overtime got approved. Which means the jobs whose cost is most understated are the jobs that hurt you the most. Your job costing report is systematically kindest to your worst jobs. That is not noise you can average out. It is bias, pointed at exactly the decisions you most need to get right.
The judgment call nobody makes
There are only two honest ways out, and you have to pick one. Either you sequence the close so payroll is finalized before invoices export, which is clean but delays your cash and almost no shop will actually do it. Or you accept that the flyout is an operational estimate and you maintain true job cost in the books, where post-export adjustments still land, and you tell everyone which number is the real one.
Most shops between $5M and $30M land on the second, and that is a perfectly defensible answer. What is not defensible is believing you have one job cost number when you have two, and switching between them depending on which one supports the decision you already wanted to make. The export sequencing that governs all of this is part of the ServiceTitan and QuickBooks integration setup, and it is worth getting deliberate about.