Published November 1, 2026

Job costing for contractors: know your profit per job

Most small service businesses know their revenue to the dollar and their profit to the quarter. Revenue is on every invoice. Profit shows up months later, after the accountant, as one number for the whole company. By then the panel upgrade that ran four hours over, the client who always wants "one more thing", and the Friday that was all driving have blended into an average that tells you nothing about what to change.

Job costing fixes that by putting a cost next to every job, not just every quarter. This post covers what to count, how to collect it without turning your technicians into bookkeepers, and how LLUMIFIELD does the arithmetic for you. Most of it applies whatever tool you use.

Why per-quarter profit is not enough

A 30% margin on the year can hide a 55% margin on service calls and a loss on installs. Averages hide the three decisions that actually move profit for a small crew:

You do not need accountant-grade precision for any of this. You need a cost on every job that is close enough to rank them, and a report that shows the ranking.

The three costs that matter on a job

  1. Materials and other direct costs. What you bought for the job, or a standard cost per unit for the things you stock.
  2. Labor. What you paid the people on the job for the hours they were there, including the hours the estimate did not plan for.
  3. Drive time. The hours between stops are paid hours too. For a crew that covers a wide area, drive is often the second biggest cost after labor on site.

Everything else, trucks, insurance, the office, is overhead. Spread it with a percentage if you like, but keep it out of the per-job number so the job comparison stays clean.

Costing without a second data entry job

Job costing fails when it depends on someone typing costs after the fact. Nobody does it on a busy week, and a report with half the jobs costed is worse than no report. The fix is to make each cost come from a place you already keep.

Materials: cost types on your catalog

In LLUMIFIELD every catalog item carries a cost type that says how its cost is found when you add it to an estimate or invoice:

Pick your trade when you set up the company and LLUMIFIELD suggests cost types for your catalog; you can apply the suggestions in one step and re-cost past lines. On any line you can also type a cost directly, or price in Markup mode by entering the cost and a markup percentage. Each line remembers where its cost came from, so a job that mixes a receipt, a catalog cost and an estimate says so instead of looking exact.

Labor: from payroll, not from a guess

The honest labor cost for a job is what you actually paid the technician for the time they spent on it. LLUMIFIELD already knows both halves: the schedule and the time clock say which jobs each person worked and for how long, and pay periods say what you paid them.

When a payslip is sent, its pay for each day is split across that day's jobs by the hours clocked on each, or by the scheduled hours when nobody clocked in. Until there is a payslip, a crew cost per hour you set once stands in, so a job has a labor estimate from the day it is invoiced and gets the real number when payroll runs. If you pay an hourly rate you can set it per person instead.

Paid hours with no job that day, shop time, training, a run to the supplier, stay out of every job and are shown on their own. That is a real cost no job should carry, and it is useful to see how big it is. When you know a particular invoice better than the automatic figure, edit its labor cost on the job cost card; one tap puts it back to automatic.

Drive time: the cost between stops

With a crew cost per hour set and route data on, LLUMIFIELD costs the drive minutes between a technician's stops and adds them to the jobs on either end. Nothing to type: it comes from the addresses already on the appointments.

Reading the job cost card

Every invoice has a job cost card that only administrators see. It lists the line item costs with their sources, the labor cost and where it came from, drive time, and the resulting profit. The card is internal: it never prints on the invoice, never appears in the customer portal, and is not sent to QuickBooks Online or Zoho Books. Technicians see the job, never the margin.

Profit on the card and in reports follows one rule: what the client pays after discounts, refunds and bad-debt write-offs, before tax, minus line costs, labor and drive time. Late fees and tips sit outside profit, so a slow payer or a generous customer does not change how good the job itself was.

The profit report: find the jobs that lose money

The Profit tab in Reports (administrators only) shows profit and margin by month, margin by client, and a list of low-margin jobs. It also tells you how many of the period's invoices have costs, so you know how much of the picture you are looking at before you act on it.

Use it like this once a month:

  1. Open the low-margin list. For each job, ask whether the problem was the price, the hours, or the materials. The job cost card answers that in a glance.
  2. Check margin by client. One client at a much lower margin than the rest is a pricing conversation, or a client to let go.
  3. Look at labor you could not place. If uncosted hours are a big share of payroll, you are paying for time that no job pays back, and that is a scheduling problem.
  4. Fix the catalog, not the report. When a line keeps coming in under cost, raise its price or its crew hours in the catalog and every future estimate gets it right.

A setup that takes an afternoon

  1. Open Settings, then Invoicing, then Job Costing, and enter your crew cost per hour. Add per-person hourly costs if you pay hourly.
  2. Apply the suggested cost types to your catalog and fill in unit costs for the items you stock.
  3. Turn on the time clock so labor follows clocked hours instead of the schedule.
  4. Run payroll from the app, even if you only use it to record what you paid. That is what turns labor estimates into real costs.
  5. Tap Recalculate last 120 days once, then read the Profit tab.

After the first month you will have a ranked list of your jobs by margin. Most owners find two or three surprises in it, and that is the whole point.

Try it on your own jobs

Job costing is included in LLUMIFIELD's one flat plan, with payroll, the time clock, estimates and invoices, so the data it needs is already in one place. Start a free 14-day trial, no credit card required. If you are moving from another tool, migration help is included; see pricing or how getting paid on site fits into the same loop.

Frequently asked questions

What is job costing for a contractor?

Job costing is adding up what a job actually cost you, materials, labor hours, drive time and other direct costs, and comparing it with what the customer paid. The difference is the job's profit. Done per job, it shows which kinds of work, clients and technicians make money.

How does LLUMIFIELD calculate profit per invoice?

Profit is what the client pays after discounts, refunds and write-offs, before tax, minus line item costs, labor and drive time. Late fees and tips are kept outside profit. Costs come from your catalog, receipts, payroll and routes, and you can override any of them.

Can my technicians see job costs?

No. Costs, margins and profit are visible only to administrators. They never print on an estimate or invoice, never show in the customer portal, and are not sent to QuickBooks Online or Zoho Books.

Do I have to enter a cost on every line?

No. Each catalog item carries a cost type, so a line gets a cost automatically when you add it: a fixed cost per unit, crew hours times your crew cost per hour, a receipt estimate, or no cost. Type a cost on a line only when you know better than the default.

Start your free trial