Xero job costing for residential builders
Job costing in Xero: Tracking Categories or Projects, bill assignment, time tracking, retainer treatment, and reading the job profit reports.
Ask Chalkline about this →TL;DR
Job costing in Xero means tracking revenue and cost per job so you can see which builds make money and which don’t. Xero has two mechanisms: Tracking Categories (free, up to 2 dimensions like “Job” and “Trade”) and Xero Projects (paid add-on, $7-$10 per active project per month). For 1-3 active jobs, Tracking Categories does it. For 4-15 jobs with budget tracking, Projects is the upgrade. Past 15 jobs or with complex estimating needs, Buildxact (or similar) layered over Xero is the answer. Job costing is only useful if you actually assign every transaction; the most common failure is half-assigned books with profit numbers that mean nothing.
Why job costing matters
A builder running 4 simultaneous jobs at $500k each ($2M turnover) typically has one job making 20% margin, one making 10%, one making 5%, and one losing 3%. Aggregate margin looks fine (~8%), but the bleeding job is consuming the others’ profit AND tying up working capital.
Without job costing, the builder can’t see this. They see total revenue, total cost, total profit at the company level. The view they need is per-job.
Job costing gives:
- Which job is profitable: cut your losses on the bad one, fight for more like the good one.
- Which job is consuming time: per-job time tracking reveals where labour is going.
- What variation costs really are: is the $50k variation actually profitable, or covering its own cost only?
- Cost trends across the company: are slab costs trending up across jobs? Are framing labour rates stable?
- Quoting accuracy: actual vs estimate per job tunes the next quote.
Approach 1: Tracking Categories (free)
Xero has two Tracking Categories available by default. Set one to “Job” with each active build as an option. Optionally set the second to “Trade” or “Phase”.
Every invoice, bill, and bank transaction gets tagged with the Job (and optionally Trade/Phase).
Reports then split by Job:
- P&L by Job: revenue, cost, profit per job.
- Balance Sheet by Job: less common but available.
| Feature | Tracking Categories |
|---|---|
| Cost | $0 (built into Xero base) |
| Per-job revenue / cost | Yes |
| Time tracking against jobs | No (unless using Xero Me or third-party) |
| Job budgets | No |
| Tasks within a job | No |
| Live budget vs actual | No |
Fits: 1-3 active jobs at moderate complexity.
Doesn’t fit: budget tracking, granular task-level profit, larger portfolios.
Approach 2: Xero Projects (paid)
Xero Projects is a paid add-on giving more sophisticated per-job tracking:
- Project records with client, budget, dates.
- Tasks within projects.
- Time tracking via Xero Me or web entry.
- Bills assigned at project + task level.
- Live budget vs actual reports.
Cost: $7-$10 per active project per month.
Fits: 3-15 active jobs where budget tracking and task-level visibility are worth the cost.
For full coverage of Projects-specific features, see Xero Projects.
Approach 3: Estimating software + Xero
For builders with complex estimating, takeoff, scheduling, and trade-bid management needs, Buildxact or Cubit handles the front-end (estimating, project management, schedules) while Xero handles the accounting (invoicing, payments, BAS).
Xero job costing then becomes a mirror of the Buildxact job data, not a standalone tracking exercise:
- Buildxact pushes invoices and bills to Xero with the Job reference.
- Xero’s Tracking Categories or Projects line up with Buildxact jobs.
- BAS and reporting all flow from Xero.
Fits: 10+ active jobs, complex builds, multi-trade head contracting.
Common transactions and how to code them
| Transaction | Code where |
|---|---|
| Client deposit invoice | Job revenue |
| Trade invoice (sparky for Job A) | Job A cost |
| Materials bill (timber order for multiple jobs) | Split by job; or single job if site-specific delivery |
| Vehicle expense (excavator fuel) | Site costs, allocated to job |
| Office rent | Overheads (not allocated to job) |
| Subscription costs (Xero, Buildxact) | Overheads |
| Public liability insurance | Overheads |
| Vehicle / plant insurance | Overheads (or apportioned to active jobs) |
| Owner draw | Equity / drawings (not P&L) |
| Subbie variation invoice | Job cost (variation, not original scope) |
The split between direct job cost and overhead is judgement. Conservative builders allocate everything they can to a specific job; aggressive allocation can distort small-cost jobs by spreading overhead onto them.
Retainer / retention treatment
When a client withholds 5% retention from a stage payment:
| Approach | What it does |
|---|---|
| Income-on-invoice (accrual) | Invoice $100k, retention $5k held back, GST liability on $100k on invoice |
| Income-on-cash (cash basis) | Invoice $100k, $95k received, GST liability on $95k; $5k recognised when paid |
Most residential builders use cash basis (simpler cashflow). Retention is then handled as a “retained” balance in the chart of accounts, recognised as income when actually received.
Reading the per-job report
Standard Xero P&L by Tracking Category (or Project) for a job in progress:
| Line | Job A |
|---|---|
| Revenue | $400,000 |
| Direct materials | $145,000 |
| Direct labour (trades) | $130,000 |
| Site costs | $22,000 |
| Gross profit | $103,000 (25.75%) |
| Variations revenue | $45,000 |
| Variations cost | $28,000 |
| Variation margin | $17,000 (37.8%) |
This job is healthy. Variations are even more profitable than original scope (common; variation pricing is usually less price-sensitive than the contract).
A bleeding job looks like:
| Line | Job B |
|---|---|
| Revenue | $300,000 |
| Direct materials | $135,000 |
| Direct labour | $120,000 |
| Site costs | $28,000 |
| Gross profit | $17,000 (5.7%) |
5.7% before overheads / margin doesn’t cover a typical builder’s costs. This job is making the builder poorer.
Common builder errors
| Error | Effect |
|---|---|
| Half-assigned bills | Job costs understated; profit overstated |
| Overhead allocated to jobs | Inconsistent comparison across jobs; some jobs look bad just because of allocation |
| Time tracking not done | Labour cost per job is unknown; only paid trade invoices land |
| Variations not separately tracked | Variation margin invisible; can’t tell whether variations are profit-positive or just churn |
| Retention not separately accounted | Job P&L looks understated; cashflow forecasting wrong |
| Job-costing reports never read | Data is collected but not used |
For builders
- Pick an approach matching your scale: Tracking Categories for 1-3 jobs, Projects for 4-15, Buildxact-layered-Xero for 15+.
- Be ruthless about assignment: every bill and every invoice gets a job code at receipt. No “I’ll allocate it later”.
- Run the per-job P&L weekly. The earlier you spot a bleeding job, the more recoverable it is.
- Separate variations from original scope in the report. Variations are a distinct profit lever.
- Reconcile to actuals: actual labour and materials per job tune next quote’s estimates. The Excel cost library or Buildxact cost library updates from real numbers.
References
-
Xero Tracking Categories: https://www.xero.com/au/features/tracking-categories/ (verified 2026-05-15).
-
Xero Projects: https://www.xero.com/au/features/projects/ (verified 2026-05-15).
Related
See also
Last updated: 2026-05-15. Verified: 2026-05-15.