Most contractors do not have a pricing problem. They have a cost capture problem — the job earned its margin, and the records failed to hold onto it. These five account for most of the damage, and none of them show up in a bank balance.
The tell is almost always the same: a job that felt busy and looked fine all the way through, then closed at a number nobody can explain. Busy is not the same as profitable, and a full schedule hides a thin job better than anything else.
The wage is not the cost of the worker. Employer payroll taxes, workers compensation, general liability, benefits, and paid time off stack on top of the hourly rate — a substantial premium on the number most contractors carry in their head. When estimates price the bare wage and the ledger carries the burden, every job reads better in the bid than it does in reality. That gap is not a surprise; it is arithmetic nobody applied.
The single most expensive habit in the trades: the crew does the extra work because the customer asked, and the paperwork catches up never. That labor and material land in the original job's cost codes, so the base scope looks like a loser and the extra work looks like it was free. It wasn't free — it was unbilled. Every change order needs agreed pricing before the work starts and its own cost code when it does.
Retainage is revenue you have earned and cannot collect yet. Sitting inside accounts receivable it inflates what looks collectable and hides what is actually a next-year cash event. Track it per job, aged separately, so you can tell this quarter's cash from money that is parked. On a multi-job schedule that distinction is the difference between a forecast and a guess.
A work in progress schedule puts contract value, cost to date, percent complete, revenue earned, and billed to date side by side for every job. The two numbers that matter are the difference between them. Underbilled means revenue you have earned but not invoiced — a receivable and a cash warning. Overbilled means cash in hand you have not yet earned. One is a collection problem, the other is a future obligation, and neither is visible without the schedule.
A deposit on work barely started is unearned money. If it lands in the operating account and gets spent on the next mobilization, the business is financing itself with customer cash and calling the balance profit. Job costing is what converts “the account looks healthy” into “this job is 40% complete and 70% billed.” Only one of those is a fact you can act on.
Job costing is not a report you pull at year end. It is the cost codes, burden rates, and change-order discipline that make the monthly close mean something — so the same numbers feed tax, cash forecasting, and the next bid.
Oskar Escobedo is an IRS Enrolled Agent and a Knowify Certified Advisor. That means the job workflow your crews already use stays in place — the question is whether what comes out of it is costed correctly and whether it survives into the return. More on the trades side: construction & trades.
Borderland detail: if you bid jobs on both sides of the state line, New Mexico sources construction and construction-related services to the construction site — each job can carry its own location code — while Texas brings franchise tax and county BPP renditions. That is a compliance question and a job-costing question at the same time.
Assessment call → financial review → custom plan. Elev8 does not perform audit, review, or compilation. Full scope is confirmed at the assessment call. See if we're a fit →
Because cash in the bank is not profit. A deposit for a job you have barely started is a liability, not income — the money is unearned until the work is done. If you bank progress payments and spend them, an accurate job cost schedule makes the gap visible months before the return does.
Labor burden is everything you pay on top of the wage rate: employer payroll taxes, workers compensation, general liability, benefits, and paid time off. On a crew-heavy job it commonly adds a significant percentage to the wage. If estimates price the bare wage and the books carry the burden, every job looks better on paper than it actually was.
Yes. A change order performed without its own cost code is margin that disappears silently — the labor and material get absorbed into the original scope and the job reads as a loss on work you were paid to do. Every change order should have approved pricing before the work begins and its own cost code when it does.
A work in progress schedule reports each job's contract value, costs to date, percent complete, revenue earned, and billed-to-date, so you can see overbilling and underbilling in one view. Underbilling is a receivable you have not billed yet and a cash-flow warning; overbilling is cash you hold that you have not earned. Most contractors running past a few million need one.
Yes, and separately from accounts receivable. Retainage is earned revenue you cannot collect yet, so it distorts both margin and cash if it sits inside ordinary AR. Tracking it by job and by aging tells you what is genuinely collectable this quarter versus next year.
It can. Job-level cost data is what feeds revenue recognition and work-in-progress reporting, and it is the same dataset that supports depreciation and cost segregation decisions. Contractors on a cash basis often find they are missing that granularity entirely. It also determines whether a job's margin is real before you price the next bid.
The software records what happened. The question is whether the numbers that come out are costed correctly — burden applied, change orders coded, retainage separated — and whether they survive into tax and cash forecasting. Elev8 is a Knowify Certified Advisor, so the job workflow you already use stays in place.
No. The owner-operator running a handful of crews is exactly who is hurt most, because there is no controller catching it. Positioned for owner-operated trades businesses across Texas, New Mexico, and Colorado.