Job Profitability
Compare what you expected to make on a job when you priced it with what actually happened. Income, costs by category, labour and margin, all ex GST.
Job Profitability
Know your profit on every job, before and after you do the work.
- See the estimate you priced next to what actually happened, line by line
- Costs split into units and materials, subcontractors, other costs and labour
- Labour comes straight from finished timesheets at each person's cost rate
- Energy rebates from a provider count as income, so the margin is the real one
- Check the estimated profit on a quote before you send it
- See every job side by side in the Job Profitability Report
- Owners and admins only. Every figure is ex GST
The Profitability card on each job puts two pictures side by side. The Estimate is what you expected when you priced the quote. The Actual is what really happened: what you invoiced, the bills and expenses on the job, the hours on timesheets and any rebate the provider paid you. The Difference column shows where the job beat or missed the estimate. Every figure is ex GST.
What You Need
- Owner or admin role. Members and restricted members never see profitability, on the portal or the mobile app
- Quotes accepted after this update. Quotes accepted before this update on 21 October 2026 have no estimate (see No estimate)
- Costs on your price list and catalogue: unit prices, installation materials and a Your cost (inc GST) on each add-on. Itemised and trade quotes use the cost on each line
- Labour cost rates for your team (see Set your labour cost rates). Until you set one, labour is costed at $90 an hour
- Bills, expenses and timesheets on the job for the Actual column to fill in
Job Profitability is on every plan: Starter, Growth and Scale.
Where to Find It
In the portal:
- Go to Jobs in the sidebar and open a job
- Click the Purchases tab
- The Profitability card sits at the top of the tab
In the mobile app: open the job. The Profitability section sits on the Job tab, just above Purchases. See On the mobile app.
For all your jobs at once: go to Reports, then Job profitability. It lists every job in a date range with the same figures as its card, the jobs that lost money and why. See Job Profitability Report.

Reading the Card
The card has three columns: Estimate, Actual and Difference. A figure Cooledge can't know yet shows as a dash, never as $0.00.
Income
| Row | Estimate | Actual |
|---|---|---|
| Customer price | The accepted option's price plus the add-ons the customer chose, ex GST. The inc GST figure sits underneath | What you've invoiced on the job, ex GST. Draft and Void invoices don't count |
| Rebate from provider | The energy rebate you expect from the provider, with "Passed to customer $X ยท You keep $Y ex GST" underneath | Rebate invoice lines for the job (once the invoice is sent) plus any rebate you recorded as received |
Rebate from provider only shows when the job has an expected or received rebate. See Energy Rebates.
Costs
| Row | Estimate | Actual |
|---|---|---|
| Units and materials | Unit cost plus installation materials, electrical and add-ons | Bills and expenses in the Materials category |
| Subcontractors | The subcontractor fee on a subcontracted option | Bills and expenses in the Subcontractor category |
| Other costs | (none) | Bills and expenses in the Other category |
| Uncategorised | (none) | Bills and expenses with no category yet, with a link: Set a category on these bills and expenses. |
| Labour | Priced hours at your default labour cost rate | Finished timesheets at each person's cost rate |
The Labour row shows the hours beside it, for example "5.0 h estimated, 7.5 h on timesheets". Applied supplier credit notes come off the category they belong to. Rows with nothing in them are hidden.
Margin
Margin is your income (customer price plus any rebate from the provider) less every cost, including labour. The percentage in brackets is the margin as a share of that income, for example "(40%)". It's green when positive and red when negative.
Difference
The Difference column always reads the same way: a positive figure is good for you and a negative figure is bad.
- Income and Margin: actual minus estimate. You invoiced more than expected, so the difference is positive
- Costs: estimate minus actual. You spent less than expected, so the difference is positive
Difference is never shown against an incomplete or missing estimate.
Where the Estimate Comes From
Cooledge works out the estimate from the quote itself. You don't type anything into the card.
- When you send a quote, by email or SMS from the portal or the mobile app, Cooledge costs every option at today's costs
- Each re-send refreshes the estimate at the costs you have on that day
- Mark as sent does the same for a quote you delivered outside Cooledge
- When the customer accepts, the estimate for the chosen option is frozen. It never changes after that, even if your costs do
- Add-ons are costed at acceptance, once Cooledge knows which ones the customer picked
- Several accepted quotes on one job add up. Each is frozen at its own acceptance and the card shows the total
Labour on the estimate is the hours the quote prices multiplied by your business default labour cost rate. The Actual column uses each person's own rate.
Estimate Incomplete
If Cooledge couldn't find a cost for part of the quote, the estimate cells turn amber, the margin reads Estimate incomplete and an amber note says why.
| Note | What it means | How to fix it |
|---|---|---|
| Estimate incomplete: the unit has no cost. | The unit was picked with no price in your A/C Catalogue. The estimate uses the price saved on the quote when the unit was picked | Add the unit's price on that system's Units tab. Quotes where you pick the unit after that get its cost. On a quote that isn't accepted yet, pick the unit again with Change Unit (this can change the quote's price, so check it) and re-send |
| Estimate incomplete: some materials have no cost. | One or more installation materials have no cost. Custom grilles are always uncosted | Add the cost on that system's Materials tab |
| Estimate incomplete: add-ons have no cost. | An add-on the customer can pick has no cost | Set Your cost (inc GST) on the add-on. Add-ons without one show No cost beside the price |
| Estimate incomplete: the subcontractor fee is missing. | The option is subcontracted but has no fee | Enter the Subcontractor fee (inc GST) on the option. See Subcontracted Installation |
| Estimate incomplete: 1 line has no cost. | An itemised or trade line has no cost | Set a cost on the line in the quote editor and save. A cost you add to the price list item counts on lines you add after that |
| Estimate incomplete: some costs are unknown. | Cooledge can't cost this quote. Repair quotes always show this | Nothing to fix |
Fixing a cost helps the next estimate, not a frozen one. Material and add-on costs are read each time the estimate is taken, so fix them and re-send the quote before the customer accepts. The unit and each itemised line keep the cost saved on the quote, so fix those on the quote itself, as above. Once the quote is accepted, its estimate stays as it was.
No Estimate on Older Quotes
Quotes accepted before this update on 21 October 2026 show:
No estimate. This quote was priced before costs were recorded.
Those quotes never get an estimate. The Actual column still works, so you still see what the job made.
Calculate Estimate
Now and then a quote accepted after this update has no estimate yet. The card then shows a Calculate estimate button. Click it and Cooledge works the estimate out from the accepted quote. You'll see Estimate calculated. when it's done.
Jobs with Phases
On a job with phases, the card on the parent job (phase A) covers the whole job:
- Totals include all N phases. tells you the figures add up every phase
- Show per phase opens a breakdown with one row per phase and variation: Customer price, Bills and expenses, Labour and Margin, plus Rebate from provider when there is one
- On any other phase, the card shows the Actual column for that phase only, with the note The estimate is on the parent job. and an Open parent job link
Notes Under the Card
Grey notes under the card flag things that will change the numbers:
- "1 timer still running": a timesheet that hasn't been stopped. It isn't costed until it finishes
- Some hours were costed at the default rate.: timesheets finished before labour cost rates existed were costed at the default rate
- "Open purchase orders: $380.00 not yet billed.": sent or part-received purchase orders with no bill yet. They're money you've committed, not a cost yet
- "1 draft expense not counted ($12.00).": draft expenses don't count until they're final. See Tracking Expenses
Set Your Labour Cost Rates
Labour cost rates tell Cooledge what each person costs the business per hour, including wages and on-costs. They're used to measure job profit, never to set prices.
- Go to Settings then Manage Team
- Scroll below the team table to the Labour cost rates card
- Enter a Default rate per hour. Anyone without their own rate uses it and the estimate always uses it
- Enter a rate for anyone who costs more or less than the default. Leave a person blank to use the default
- Tick Paid by the job for any contractor who invoices you a fixed price (see Paid by the job)
- Click Save rates

Good to know:
- Until you set a default, labour is costed at $90 an hour
- A timesheet is costed when it finishes, at the rate in force at that moment. Changing a rate later never rewrites past timesheets. Only Paid by the job can change past entries, when you choose Apply to past entries
- Only owners and admins see these rates. They're not on the mobile app
- Team members see their own hours in Timesheets, never a cost
Paid by the Job
Some contractors clock in and out on the app but invoice you a fixed price for the job. Their bill already carries the cost, so counting their hours as labour as well would cost the job twice. A line at the top of the card says so: Paid by the job: for contractors who invoice a fixed price.
- In Labour cost rates, tick Paid by the job beside that person. Their rate box is greyed out and reads No hourly cost
- Click Save rates
- If they already have finished timesheet entries, a Paid by the job box asks: Also remove the labour cost from their N finished entries? Click Apply to past entries to take their labour off past jobs too, or Only new entries to leave past jobs as they are

From then on their timesheet entries still record their hours, but those hours don't count as labour on the job's Profitability card, in the mobile app or in reports. Add their invoice as a bill in the Subcontractor category and that's the job's cost.
Untick Paid by the job to cost their hours again. Cooledge then asks whether to Also cost their N finished entries that have no labour cost, at their current rate?
Existing labour costs never change on their own. They only change when you choose Apply to past entries.
Estimated Profit While You Quote
You don't have to wait for the job. Owners and admins see an Estimated profit block while they build a quote in the portal, so you can check the margin before you send.
In the quote editor, the block sits in the right-hand column under Pricing Summary. It shows Income, Unit cost, Installation materials and electrical (Materials on itemised and trade quotes), Labour (for example "4.0 h ร $90.00") and Estimated margin, plus Rebate from provider and Subcontracted installation when the option has them. Add-ons are left out until the customer picks them (Add-ons the customer picks are costed at acceptance). On itemised and trade quotes, save to see the cost of new lines.
The block's caption reads Frozen when the quote is sent. In practice Cooledge takes the estimate each time you send the quote, so a re-send refreshes it at that day's costs. It's locked for good once the customer accepts.

On the quote page, owners and admins see an Estimated profit panel for each option. Its label tells you which estimate you're looking at:
| Label | Meaning |
|---|---|
| Live estimate | Not sent yet. A preview at today's costs |
| Estimated when sent on 20 Oct 2026 | The estimate taken at the last send |
| Frozen at acceptance | The customer accepted. The chosen option is tagged Accepted option |

The block is in the portal only, not the mobile app quote editor.
Cost Categories
Every bill, expense, purchase order and credit note has a Category: Materials, Subcontractor or Other. That's how the card splits the Actual costs. Anything without one lands in Uncategorised, with an amber badge on the job's Purchases tab.
- Give each supplier a Default category so their documents start with the right one. See Managing Suppliers
- A bill raised from a purchase order takes the PO's category and a credit note takes its bill's
- On the mobile app, a quick expense needs a category before it saves. It saves as a draft, so it counts once it's made final on the portal
More in Tracking Expenses, Supplier Bills and Credit Notes and Purchase Orders.
The Tiles Under the Card
The four tiles below the card (Net Cost, PO Open, Bills and Credit Notes (applied)) are running totals including GST, so they won't match the ex GST card.
Subcontracted Jobs
When a subbie installs, the fee is the estimate's Subcontractors cost and the Labour estimate reads Subcontracted when no work by your own team is left in the estimate (with Includes electrical unticked, the electrical labour stays and shows as hours). Their bill in the Subcontractor category fills the actual. See Subcontracted Installation.
When the Labour estimate reads Subcontracted and no labour is logged on timesheets, the card hides the Labour row, on the portal and in the mobile app. Once finished timesheets add labour hours or cost, the row comes back. Hours from staff paid by the job don't count, so they don't bring it back. If the subbie clocks in on the app too, tick Paid by the job for them so their hours don't count on top of their bill.

On the Mobile App
Owners and admins see a compact Profitability section on the job: Estimated margin, Actual so far and a line for each row with its estimate and actual. Draft expense notes show too. Tap Full breakdown on the portal job page. for the full card.

Who Can See It
Only owners and admins. Members and restricted members never see the card, the mobile section, the Estimated profit block or anyone's cost rate. They can still add timesheets and expenses to the job. Timesheets count once they're finished and their expenses count once they're made final on the portal. An owner can change someone's role in Settings then Manage Team.
Common Questions
Does it count my labour? Yes. Finished timesheets on the job are costed at each person's labour cost rate, or the default rate if they don't have one. The estimate uses the hours priced on the quote at your default rate.
Are the figures inc or ex GST? The card works in ex GST, all of it. The one inc GST figure on the card is the labelled Customer price under the estimate. Elsewhere on the tab, the four tiles under the card and the expense, bill and credit note totals include GST.
Why is a bill showing as Uncategorised? It has no category. That happens with bills and expenses recorded before categories existed, or from a supplier with no default category. Open it, pick a Category and save. The link Set a category on these bills and expenses. takes you to them.
Why is there no estimate? The quote was accepted before this update on 21 October 2026, so it was priced before costs were recorded. If the quote was accepted after the update, look for the Calculate estimate button.
Why does Difference say -$300.00 on Units and materials? The bills and expenses in the Materials category came to $300 more than the estimate. On a cost row, a negative difference means you spent more than you priced. On Income and Margin, a negative means you made less.
Can members see it? No. Profitability is for owners and admins only, on the portal and the mobile app.
My contractor clocks in on the app and also bills me. Is the job paying for them twice? It was, until you tick Paid by the job for them in Labour cost rates. Their hours then stop counting as labour and their bill is the cost. See Paid by the job.
Can I see profit across all my jobs? Yes. Reports, then Job profitability, lists every job in a date range with totals, groupings and export. See Job Profitability Report.
Related Articles:
- Job Profitability Report: Every job's profit over a date range, with the reasons behind its losses
- Energy Rebates: Track rebates you claim from a provider and invoice them
- Subcontracted Installation: Quote a job a subbie installs for a fixed fee
- Tracking Expenses: Add expenses to a job by snapping receipts
- Supplier Bills and Credit Notes: Record bills and apply credits
- Purchase Orders: Send orders to suppliers and link them to jobs
- Timesheets: Track time on jobs in the mobile app
- Quoting Basics: Build and send quotes
Need help with Job Profitability? Email us at support@cooledge.com.au
Was this article helpful?
Let us know if you found this information useful.
Still need help? Contact support
In this article
Use your browser's search (Ctrl+F) to quickly find specific topics within this article.
Browse all help articles โRelated Articles
Job Profitability Report
Revenue, costs and margin for every job over any date range. Find the jobs that lost money and why, group by month, job category, system type or technician and export to CSV or PDF.
Managing Suppliers
Save your supplier directory once. Cooledge uses the order email to send purchase orders. Each supplier's page holds its details, pricebook and discounts.
Purchase Orders
Send purchase orders to your suppliers from any job. Cooledge emails a clean PDF, you reconcile the bill when it arrives.