Job costing software for subcontractors

By Zia Nawaz, Owner & General Contractor, Eiffel Builders Inc.7 min read

A subcontractor's job costing problem looks different from a GC's, because a sub usually isn't setting the price. The GC agreed to a number with you before the work started, and that number doesn't move just because material costs went up or a crew took two extra days. Your margin isn't something you're managing up — it's whatever's left after your actual labor and materials come in under a fixed contract amount.

That makes job costing, for a sub, a much narrower and sharper question than for a GC: given what this job is contracted for, are my real costs tracking under that number right now, or am I finding out at the end that I worked for less than I meant to? Here's what a job costing tool needs to do to actually answer that.

Margin squeezed from both ends

A sub's margin has two ways to disappear, and neither one is under a GC's control — they're both yours. Labor runs long because a crew hit something unexpected, or because hours weren't tracked accurately and drift went unnoticed. Materials cost more than the estimate assumed, or get bought at the wrong time and marked up by a supplier's rush fee. The contract price is fixed; your costs are the only variable left, which means job costing for a sub is really cost control, not revenue tracking.

The practical version of this: you need to know, mid-job, whether labor and material spend so far — measured against the fixed contract number, not against a moving target — leaves you the margin you priced in. That’s a different question than “is this job profitable overall,” which most contractors already answer eventually. The value is answering it while the job is still running, with time left to add a crew, pull one, or renegotiate a change order before the number is locked in for good.

What to check before you buy

  • Can you set a job’s cost budget to your contract price and see spend-to-date against it, updated as labor and materials post — not reconstructed at the end from timesheets and receipts?
  • Does time tracking capture actual hours on site, not hours someone remembers writing down at the end of the week? Rounded or late timesheets are the most common way a sub’s labor cost quietly creeps past what was priced.
  • Can a crew lead photograph a material receipt from a supplier run and have it coded to the job in seconds, so material cost is current instead of a shoebox reconciled at month-end?
  • Does the tool flag overtime? Overtime hours on a fixed-price job erode margin faster than almost anything else, and they’re easy to miss if a weekly timesheet just shows a total.

Change orders are where the number actually moves

The one lever a sub does have is a documented change order — extra scope the GC agreed to pay for beyond the original contract. Job costing software doesn’t write change orders for you, but it does make the case for one: if you can show, with real cost data, that a scope addition is already running labor over what the original contract priced in, that’s the evidence a change order request needs. Without that data, it’s a conversation based on a feeling instead of a number.

For a sub, the fastest way to lose margin isn’t a big visible mistake — it’s hours and small material buys that don’t get tracked in the moment and add up quietly against a price that was never going to move.

Standing time is your most common uncosted loss

Subcontractors are dependent on somebody else's programme. Arriving to a site that is not ready, waiting for a preceding trade, being asked to work around another crew, all of it consumes days you were paid to have available and none of it is naturally recorded as a cost.

Log it against the job with the reason and the time. Whether you can recover it commercially varies; being able to demonstrate it at all is what makes the conversation possible, and the pattern across a year tells you which main contractors are genuinely worth working for.

Retention is money you have already earned

Retention is held against work you have completed, released long after you have left site, and easy to forget entirely once a job is closed in your head. Subcontractors routinely discover at year end that several thousand pounds is sitting with main contractors nobody has chased.

Keep it on the job record rather than in a separate spreadsheet, with the release date attached. A job is not finished when the work is finished; it is finished when the last of the money has arrived, and treating those as the same event is how retention quietly becomes a bad debt.

Variations agreed on somebody else's site

As a subcontractor you are frequently asked to do something extra by whoever is running the site, and the request rarely arrives as paperwork. It arrives as a conversation, often from someone without the authority to commit the main contractor to paying for it.

Note it the same day with who asked, what was asked and roughly what it will cost, and send it on. You are not being difficult; you are converting a verbal instruction into something that can be paid. The alternative is doing the work and arguing about it at final account, which you generally lose.

Where SiteLedger fits

SiteLedger lets you set a job’s budget to the fixed contract amount and see real-time margin against it as labor and materials post — geofenced time tracking captures actual hours with one tap, and overtime is flagged automatically on weekly timesheet approvals. AI receipt scanning reads vendor and total off a photo in about four seconds, so a supply run doesn’t sit uncoded until the job’s already closed out.

It works fully offline for crews on sites with no signal, and payroll-ready CSV export means the hours that fed your job cost number also feed payroll without re-entry. Starter is $8/month for up to 10 workers, which covers most sub crews outright; Professional is $15/month with unlimited workers and AI budget alerts. Both start with a 1-week free trial and no credit card.

Common questions

Is job costing different for a sub than for a general contractor?
The mechanics are similar — track labor and material cost against a job budget in real time — but the meaning is different. A GC is watching a job’s overall margin across many cost sources including subs they don’t directly control. A sub is watching their own labor and materials against a single fixed contract price, so the number has less room to move and less time to recover if it drifts.
How do I know if a job is actually losing money before it’s finished?
Compare labor and material spend to date against the percentage of the job that’s actually complete, not just against time elapsed. If you’re 40% through the scope but have already spent 60% of the labor budget, that’s the early signal — and it’s only visible if hours and materials are tracked as they happen, not reconstructed afterward.
Can this help me write better change order requests?
Indirectly — it gives you real cost data (hours worked, materials bought) tied to the specific scope in question, which is exactly what a GC will want to see before approving extra pay. It doesn’t generate the change order document itself.
What if my crew is small enough that I already know the numbers in my head?
That works until it doesn’t — usually right when you’re running two jobs at once, or one job runs longer than expected. The value of tracking it in software is catching the moment your mental math and the real numbers diverge, which happens more often than most subs expect.