ProductSolutionsTradesPricingArticlesContact Log in Start free trial

Job costing

Job costing for subcontractors, against the budget you actually bid.

Most subs find out a job lost money when the job is over. Not because nobody was watching, but because the numbers lived in four places: hours in a timesheet, materials in QuickBooks, POs in an email thread, and the budget in the estimate workbook nobody has opened since the award. SubMark lands them against one budget, per job, so the overrun shows up while there is still something to do about it.

Start free trial

14-day free trial, no card needed. Field crews are free and unlimited. See pricing →

  • Labor costed at the rate that applied on the day the hours were worked, not today’s rate.
  • Open purchase orders count as committed cost, before any invoice arrives.
  • An alert when actual passes budget on the job or on labor, with the overrun as a percentage.

Why the overrun shows up late.

The budget is in a workbook

The estimate that won the job is the only place the budget exists, and it was built to win work rather than to be reported against for nine months. Nobody opens it again until something has already gone wrong.

Costs arrive at different speeds

Labor is weekly, supplier invoices come whenever the supplier bills, and a sub’s invoice turns up when they feel like it. Comparing any of it to a budget means waiting for the slowest input, which is how a monthly review becomes a quarterly one.

Committed money is invisible

You issued a $140,000 purchase order in March. Until the invoice lands, a budget-versus-invoiced report says the line is fine. It is not fine; it is spent.

A raise rewrites history

In most homemade costing sheets, giving a journeyman a raise quietly re-costs every hour he has ever worked on every open job. Last quarter’s margin changes because of something you did this week, and nobody can reconcile it.

Nobody looks until somebody asks

If the costed position takes a day to assemble, it gets assembled when a partner asks — which is after the decisions it should have informed.

How costs land on a job in SubMark.

Each input arrives from where it already exists, so nothing is typed a second time and nothing waits on a monthly export.

  1. 01 The budget goes on the job

    Your budget lines live on the project itself, with an estimated and an actual figure each, so there is something to compare against from the first week rather than a workbook on somebody’s desktop.

  2. 02 Labor comes off the daily logs

    Hours logged per worker, per job, per day cost at the rate that applied on that date — a snapshot taken when the hours were logged. A raise next month does not rewrite last month’s margin.

  3. 03 Materials and bills pull from QuickBooks

    Bills and purchases pull across into job costing automatically, hourly, if you turn that on. Supplier invoices that arrive by email land in the invoices inbox, get read for vendor, number and amount, and you tag each one to its job and PO.

  4. 04 Open POs count as committed

    A purchase order is money spent whether or not the invoice has arrived, so committed cost is shown beside invoiced cost. A budget line is not healthy just because the paperwork is slow.

  5. 05 Subs and lump-sum crews are in the same picture

    Subcontractor invoices and lump-sum crew assignments land against the job alongside your own labor, so the cost of the job is the cost of the job.

  6. 06 An alert, not an autopsy

    When actual passes budget — on the job as a whole or on labor specifically — it raises an alert with the overrun amount and percentage, instead of waiting for you to come looking.

Everything above ships today and none of it is a tier you upgrade into. The core modules are on in every trade pack from setup; a few extras, like the invoices inbox, are a switch in Settings. The full list is on the product page.

In the app

The cost buckets a job breaks into.

Grouped the way a sub’s owner thinks about a job, each bucket reading from the records that created it:

Labor
Your own crews, from the daily labor logs, at the rate that applied on the day. Hours and dollars, by worker.
Crew lump sum
Crews assigned at a fixed amount rather than an hourly rate, which is a real cost and a routinely missing one.
Materials invoiced
What has actually been billed to the job and reconciled against a purchase order.
Materials committed
Open purchase orders. Money spent, invoice pending.
QuickBooks costs
Bills and purchases pulled from QuickBooks Online, by category, so the costs your bookkeeper codes land here without being retyped.
Subcontractor
Invoices from the subs you hired on this job.
Budget vs. actual
Your budget lines with estimated, actual and variance on each one — the table the whole module exists to produce.
Overrun alerts
Raised on the job total and on labor, with the dollar overrun and the percentage, when actual passes budget.

Labor is costed at each worker’s logged wage rate, with no burden added — no payroll taxes, insurance or benefits — so treat it as wage cost and add your own burden before you read it as a margin.

Straight answer

What it does not do.

A product page that only lists wins is a product page you stop trusting in week two. These are the gaps, in our own words, before you find them yourself.

  • Costing is per job, grouped by cost type. Labor broken out by phase or work type needs phase tracking switched on, and only the drywall pack has it on by default — it is a switch in Settings for every other trade, not an upgrade.
  • T&M hours do not post to costing actuals. A T&M tag is billing, not cost; your labor cost comes from the daily logs. If both landed, every hour of extra work would be counted twice and every job would look like it was losing money.
  • It is only as complete as its inputs. Bills pull hourly from QuickBooks if you enable it, and labor lands when it is logged — but the QuickBooks coverage meter, which shows how much of your pulled cost is coded to a job at all, is company-wide rather than per job. Read it before you trust a clean variance.
  • Salaried and piece-rate workers are excluded from labor cost by design, because an hourly cost for them would be a fiction.

Questions

Job costing: what a sub’s office actually asks.

Is job costing per phase or per job?

Per job, grouped by cost type — labor, crew lump sum, materials, QuickBooks costs and subcontractors. Labor broken out by phase or work type requires phase tracking to be switched on, and the drywall pack is the only one that has it on by default. Every other trade can turn it on in Settings.

Where do the actual costs come from?

Labor from the daily labor logs, at the rate that applied on the day the hours were logged. Materials from purchase orders and reconciled invoices. Bills and purchases pulled from QuickBooks Online automatically, hourly, if you turn that on. Subcontractor costs from their invoices. Nothing here asks you to type a cost twice.

Do T&M hours show up in job costing?

No, deliberately. T&M tags are the billing side; your cost comes from the labor logs. If T&M hours also landed in actuals, the same hour would be counted twice and every job with extra work on it would look unprofitable.

What happens to past costs when we give someone a raise?

Nothing. The cost of an hour is snapshotted at the rate that applied when it was logged, so a raise this week does not rewrite the margin on a job you closed last quarter. That one behavior is the difference between a costing report you can reconcile and one you cannot.

How current are the numbers?

As current as their inputs. Labor is there as soon as the hours are logged; QuickBooks bills and purchases pull hourly if the connection is on; a supplier invoice that is still sitting in an inbox is not costed yet. The coverage meter is the honest check on that, and it is company-wide rather than per job.

Does this replace QuickBooks?

No, and it should not. Your books stay your books. SubMark pulls bills and purchases across so job costing sees them, and pushes draws and POs the other way with a click. Your accountant keeps working where they already work.

Put a budget on a job you are running now.

Start the trial, enter that budget, and log a week of hours against it. The variance either tells you something or it does not, and you will know inside a week.

Start free trial

14-day free trial, no card needed. See the whole product →

$249/mo for your company, your first 3 office users included, $39/mo each after that. Field crews are free and unlimited. See what's included →

The rest of the job

Change orders

From the day the field finds the change to the day it is in the schedule of values, with an audit trail at every step.

T&M tickets

Priced in the office off your own rate lists, signed on site, and several tickets roll into one change order.

Schedule of values

One SOV per job, built from your trade’s own breakdown, locked when the first draw goes out, and approved change orders added to it automatically.

Draw tracking

Fifteen jobs, nine GCs, nine cutoff dates and nine submission methods — in one calendar and one log, with drawn, certified and received as three different numbers.

Retainage tracking

Five or ten percent of everything you have ever billed, sitting somewhere, on jobs some of which finished last year.

Daily logs

The record that wins an argument nine months later, written in two minutes by a foreman who wants to go home.

Lien waiver tracking

Which waivers went up the chain, which the GC has received, and which draw is sitting still because one of them has not.

Crew scheduling

Who is on which job on Monday, across every job — and a flag the moment the same crew is promised to two of them.

QuickBooks

Bills and card purchases pull back as job costs. Draws and POs push across with a click. Your books stay your books.

Time tracking

Hours per worker, per job, per day — signed by the worker who worked them, approved by the office, and read straight into job costing.

Safety records

Toolbox talks signed off per person, scored site inspections, and certification and COI expiries you see 30 days out instead of on the day.