Kalos™ Outsourced finance for owner-operators

Resources · Guide

How to do job costing for a small business or nonprofit

Your P&L says whether you made money. Not where. Here’s how to see which jobs, projects, or programs actually pay, in five steps, with the tools you already have.

The short answer: job costing means tracking revenue and direct costs for each job, project, or program. Pick one dimension to track, set it up with Projects or Classes in QuickBooks Online, tag every cost when it’s incurred, keep overhead simple, and review profitability by job for 20 minutes each month.

Why job costing matters

A business can be profitable overall while some jobs quietly lose money. The winners hide the losers. Without job costing, you price the next job on gut feel, chase revenue that doesn’t pay, and miss the clients and services worth doubling down on.

For each job, project, or program: what came in, and what went out?

What counts as a “job” depends on your business:

Contractors & tradesEach project or work order
Real estateEach property, development, or entity
Professional servicesEach client engagement
NonprofitsEach program or grant

Step 1

Decide what you’re tracking

Pick one primary dimension and stick with it. Most small businesses track by job or project. Most nonprofits track by program, and add grants if funders require it.

Start simple: revenue, direct labor, materials or subcontractors, and other direct costs. You can add detail later. What you can’t easily do is go back and fix six months of untagged transactions.

If you wouldn’t make a decision based on it, don’t track it.

Step 2

Set up job costing in QuickBooks Online

Projects: for client jobs

Create a project under each customer. Invoices, bills, expenses, and time tagged to a project roll into a project profitability report.

Classes: for programs, departments, or service lines

Turn on class tracking in Settings → Advanced. Classes work across every transaction and are the standard approach for nonprofits.

Many businesses use both: Projects for which job, Classes for which service line or program. Both features require QuickBooks Online Plus or Advanced, so check your plan before you start.

Step 3

Tag costs at the source

Job costing breaks down when tagging happens at month-end from memory. Tag every cost when it’s incurred:

  • Bills: tag the project or class when the bill is entered.
  • Card spend: in a spend tool like Ramp, require a project or class on every transaction so it syncs straight to QuickBooks.
  • Payroll and time: have staff log time by job, then allocate labor cost by hours worked.
  • Invoices: every invoice line carries the project or class.
At month-end, untagged direct costs should be close to zero.

Step 4

Handle overhead simply

Overhead is rent, admin salaries, software, insurance: the costs that don’t belong to any one job. You have two sensible choices:

  • Don’t allocate it. Measure each job’s contribution margin (revenue minus direct costs), then make sure total contribution covers overhead. This is the simplest option and often the most useful.
  • Use one simple driver. When pricing needs a fully loaded cost, allocate by labor hours or revenue share.

Avoid complex allocation formulas. They create false precision and arguments, not decisions.

Nonprofits: your functional expense split (program, management and general, fundraising) is a related but separate exercise. Keep program tracking clean and the functional split gets much easier.

Step 5

Review job profitability monthly, in 20 minutes

Pull the project or class profitability report and ask:

  1. Which jobs have the lowest margins, and why?
  2. Did any job run over its estimate? By how much?
  3. Are there untagged costs to clean up?
  4. What would I price differently next time?
  5. Which client or service line deserves more of our attention?

A simple monthly scorecard keeps the review honest:

Job / programRevenueDirect costsMargin $Margin %Est. vs actual
 
 

Common job-costing mistakes

  • Tagging at month-end from memory instead of at the source
  • Too many projects or classes, so nobody uses them consistently
  • Leaving labor out, which is usually the biggest direct cost
  • Building overhead allocations before the basics work
  • Running the report and never acting on it

Free PDF

Get the printable guide and monthly scorecard

The full guide, with the copy-ready scorecard page, formatted for your team.

Get the free guide

Job costing FAQ

What is job costing?

Job costing is tracking revenue and direct costs by job, project, or program, so you can see which work makes money and which quietly loses it. Your P&L shows whether you made money overall; job costing shows where.

How do I set up job costing in QuickBooks Online?

Use Projects to track client jobs and Classes to track programs, departments, or service lines. Many businesses use both. Both features require QuickBooks Online Plus or Advanced.

Should I allocate overhead to each job?

Usually not at first. Measure each job's contribution margin (revenue minus direct costs) and make sure total contribution covers overhead. If pricing needs a fully loaded cost, allocate overhead with one simple driver such as labor hours or revenue share.

How do nonprofits do job costing?

Nonprofits track by program, and add grants as a second dimension if funders require it. Clean program tracking also makes the functional expense split (program, management and general, fundraising) much easier.

Want it set up for you? Kalos sets up job costing, cleans up history where it’s worth it, and builds the monthly review into your close as part of Ledger, Rhythm, or Compass.

Thirty minutes, and you’ll know whether this is worth a second conversation.

Bring your last month’s P&L if you have it handy. If you don’t, that’s useful to know too.

Book a 30-minute call