Home › Guide

Projects & job costing

Accounting → Job costing (at /projects) is for contract work: you agree a price, do the work in stages, claim as you go, and someone holds back retention until it's signed off. It's on the Business plan and up.

A job is a project

Every job is a project under Accounting → Divisions & projects. That's deliberate — it means a job already slices your profit & loss, already rolls up into its trading division, and its invoices already carry the right trading name. Job costing adds the contract on top.

So the order is: create the project, then add the contract here.

If you run more than one brand, set the project's division and everything follows: the job's invoices go out headed "Your Company (Pty) Ltd t/a ABC Builders", and the work counts towards that division's P&L and budget.

Setting up the contract

  • Contract value — the agreed price before variations
  • Retention % — held back on every claim, released at practical completion (10% is typical)
  • Customer — needed before you can invoice a claim
  • Status — Quoted → On site → Practical completion → Final account → Closed

The cost budget

Budget by category, the way a builder actually thinks: labour, materials, subcontractors, plant & hire, other. Point each category at an expense account and the comparison reads straight off your ledger.

Actual cost is never entered twice. Tag a bill to the job and it lands in the job cost automatically. Job costing that keeps its own set of figures is job costing you can't trust — the moment the two disagree, nobody knows which is right.

Progress claims

Certify completion to a cumulative percentage, and the app bills the difference:

ClaimCertifiedBills
130%30% of the contract
260%the next 30% — never the whole 60%

Because every claim is worked from the contract, consecutive claims can't double-bill, and the arithmetic is always checkable. A claim can't go backwards, and it can't bill more than the contract.

Retention comes off the claim and the invoice is raised for the net — what the customer actually owes now. A claim creates a draft invoice; issuing it is what bills them. Nothing posts until you say so.

Retention

Retention accumulates on the job and shows on the dashboard at all times. At practical completion you release it: one final claim for the accumulated total, which becomes its own invoice.

The app deliberately does not raise a debtor for retention at claim time. The stricter reading would recognise the gross and carry retention as a separate receivable, but that puts money you can't yet chase into your age analysis and shifts your VAT timing. It's visible on the job throughout — it just isn't a debtor until it's claimable.

Variation orders

Raise a variation with a number, description and amount (negative for an omission). It sits as pending and changes nothing.

Approving it changes the effective contract value, and therefore every future claim. That's why it's a decision rather than an edit.

Work in progress

WIP = work certified − work billed.

  • Positive — you've done work you haven't invoiced. Raise a claim.
  • Negative — you've billed ahead of the work. Worth knowing before your client notices.

WIP is reported, not posted. Capitalising work in progress onto the balance sheet is an accounting-policy choice with tax consequences, so 360books shows you the figure and leaves the journal to you and your accountant.

What you see per job

Contract (including variations), billed to date and percentage, retention held, actual cost against budget, cost by account, and gross profit — revenue less cost, both read from the books.