Project costs
The project Cost tab is where you see what a project has actually cost — labour, materials, purchases, and expenses — and how that compares to the plan. It's a read-only picture built from the work recorded elsewhere in Jobyo, split into spend roll-ups, a planned-vs-actual variance table, and material tracking views.
What the Cost tab shows
Open a project and select the Cost tab. It pulls together several read-only views:
- Spend summary — total actual cost, split into posted (finalised) and draft (not yet finalised).
- Cost composition — actual cost by class: direct (job cost), overhead (allocated indirect cost), and adjustment (corrections).
- Cost by category — actual spend per cost category.
- Cost by work order — every work order under the project, with its cost, sorted by amount.
- Cost lens — the same cost pivoted by worksite, location, or equipment.
- Planned vs actual variance — actual direct cost against a frozen baseline plan (see below).
You don't enter cost on the Cost tab. Jobyo builds every figure from the time, materials, purchases, and expenses logged against the project's work orders and tasks. A brand-new project with nothing logged yet reads zero — that's the honest empty state, not an error. Figures fill in as work is recorded.
Where the money comes from
Each cost figure traces back to activity captured elsewhere:
| Cost source | Recorded in |
|---|---|
| Labour and transport | Time & attendance on work orders |
| Materials and inventory | Item consumption, goods receipts |
| Supplier purchases | Purchase invoices |
| Miscellaneous expenses | Add expense on the project or a work order |
Labour and transport are priced from labour cost profiles (set up under Company Settings), which hold the hourly, daily, per-km, or flat rates the cost engine applies when time is logged.
Planned vs actual variance
The variance table compares the actual direct job cost against the cost that was frozen when a baseline was published — so you can see where the project is running over or under plan.
The variance table only appears once at least one baseline has been published on the project's Plan tab. A baseline freezes the planned cost at a point in time; the table then compares actuals against that frozen version. With no baseline, there's nothing to compare to.
Open the Cost tab
From the project workspace, select Cost and scroll to the Planned vs actual variance section.

Variance section — baseline picker, per-phase Planned / Actual / Variance rows, project total Pick a baseline version
Use the baseline-version selector to choose which published baseline to measure against.
Read the rows
You get one row per phase (and a project total), each with Planned (the frozen figure), Actual (direct cost so far), Variance ($) (actual minus planned — negative means under plan), and Variance (%). The percentage shows as — when the planned figure is zero. Rows where actual exceeds planned are flagged.
The variance lens compares direct job cost only. Category- or bucket-level breakdown within variance isn't available yet — the table compares totals per entity.
Cost buckets
Planned cost rolls up into three buckets by category — labour, material (materials and equipment), and expense (everything else). This bucket split is how a project's plan is summarised; it sits alongside the actual-cost composition (direct / overhead / adjustment) on the Cost tab.
The line-item plan that feeds variance is built by the back end — today it's seeded from an accepted quotation's cost-bearing lines when a project is created from that quote. There's no in-app screen to add, edit, or delete individual planned-cost lines. (The project's estimated budget and category breakdown are a separate, editable planning figure — see Project budget.) Because of this, variance stays at zero until both a baseline with planned lines is published and actual cost has been recorded.
Materials: what to buy and where it stands
A project gives you two material views, each with a different audience and permission level.
Buy plan
A supplier-grouped list of the materials the project still needs to order. It's netted against what's already on purchase orders and shows a suggested unit price, so a buyer can turn it straight into draft purchase orders. This is the project's slice of the buyer's planned-requests queue.
Ordered quantity counts POs in every state except cancelled — including draft POs (so a second run doesn't re-suggest lines already queued) and closed POs (so fully-bought material doesn't reappear as buyable). Only cancelled POs drop out of the netting.
The suggested unit price is hidden unless you hold cost-viewing permission (see Who can see what). Reading the buy plan also needs purchase-order view permission on top of project view, because it carries supplier identity.
Material status
A cost-free, supplier-free tracking view for project managers. For each material it shows, grouped by phase:
| Column | Meaning |
|---|---|
| Planned | Units in the project's task plans |
| Ordered | Units covered by purchase orders (draft/requested/issued/received all count; only cancelled is excluded) |
| Received | Units physically delivered and logged via a goods receipt |
| Pending | Units still to order (planned minus ordered) |
Any row with Pending greater than zero means that material isn't yet fully covered by a purchase order. Because it shows quantities only — no prices, no supplier names — it needs only project view permission, so any project manager can follow procurement progress without cost or purchasing access.

Who can see what
Cost visibility is controlled by permission, not by plan tier.
- Actual cost roll-ups (spend summary, composition, cost by category, cost by work order, cost lens) require the view actual costs permission (
actualCosts:view) — a single on/off gate. Without it, the money figures on the Cost tab are hidden. - Variance requires the view planned costs permission.
- Buy-plan suggested price is hidden unless you hold view-actual-costs or cost-pricing permission.
- Material status is cost-free and needs only project view permission.
On the project Invoicing view, the billing-coverage structure stays visible to a project manager, but the money buckets are blanked out unless they hold the company-wide view actual costs permission. Seeing the table isn't the same as seeing the figures. See Project invoicing.
If it doesn't work
- Cost tab shows all zerosNo cost has been recorded yet, or it is still processing. Costs come from time, materials, purchases, and expenses logged against the project — check that activity exists.
- Money figures are hiddenYour role doesn't include view actual costs. An administrator can grant it under Users & roles.
- No variance tableNo baseline has been published. Publish a baseline on the Plan tab first, then the variance section appears.
- Variance shows zero after publishing a baselineThe baseline has no planned-cost lines, or no actual cost has been recorded yet. Both are needed for a meaningful comparison.
- Buy-plan prices are blankYou can see the buy plan but not costs. Viewing suggested prices needs view-actual-costs or cost-pricing permission.
- Material status table is emptyNo materials have been planned on this project's tasks. Planned materials are entered at the task and work-order level.