
September 30, 2026 · Mitt Patel · 6 min read
You just deposited a $6,000 progress payment on a panel upgrade and rewire job, and the bank balance looks great. But you haven't added up what the materials and labor actually cost so far, and you won't know if that job is making money until it's finished — maybe not even then.
Why this happens
Most electricians bill bigger jobs in stages: a deposit to start, a payment at rough-in, a final payment on completion. On most small shops' books, each of those payments shows up as income the day it lands. That's how cash-basis books work.
The problem is what it does to your sense of how the business is doing. If you're looking at your bank balance or even your monthly profit and loss, a big deposit in March can make March look like a great month, even if the job it belongs to won't wrap up until May and will lose money once all the costs come in.
The same blur happens at the item level. If material costs and labor hours both get lumped into one "job income" line, you can't tell whether your service calls or your bigger installs are the ones actually paying the bills. And small recurring costs like permit fees and inspection fees are easy to pay in the moment and forget to tag to the job — so a project can look more profitable than it really was, simply because a few hundred dollars in fees never got charged against it.
None of this is a fraud problem or a discipline problem. It's a setup problem. Cash-based, month-by-month thinking works fine for a business that does mostly one-and-done service calls. It stops working once you're carrying jobs that span several weeks and get billed in pieces.
The cost isn't abstract. Owners who only look at monthly totals sometimes keep taking on more work of a type that's quietly losing money, because the deposits kept the bank account looking healthy. Others underprice the next similar job because they never went back and checked what the last one actually cost to complete.
A worked example
Say you take on a panel upgrade and rewire for $18,000 total, billed in three stages: a $6,000 deposit to start, $6,000 at rough-in, and $6,000 on completion.
You collect the first $6,000 in March. Your March profit and loss shows $6,000 of income from that job and, so far, only $1,500 of material costs and $800 of labor booked against it — because most of the work hasn't happened yet. On paper, that job looks like it's running at about 62% profit in March.
By the time you finish in May, the real numbers look different. Total materials came to $7,200. Labor came to $6,400. You also paid $350 for a permit and $150 for two inspection trips, both on the job's behalf. Total cost: $14,100. Total billed: $18,000. Real profit: $3,900, or about 21.7%.
That's still a fine result for that job. The problem is that if you'd only ever looked at the March snapshot, you'd have thought this type of job was much more profitable than it is — and you might price, staff, or schedule the next one based on the wrong number.
How to set it up
- Turn on projects in QuickBooks Online. This groups every estimate, invoice, expense and bill under one job, so you can see its full history in one place instead of piecing it together from the general ledger.
- Create the job as a project before you send the first invoice. Attach the original estimate to it. This is what lets QuickBooks track billed-to-date against the estimate as you invoice in stages.
- Use progress invoicing from that estimate, rather than creating each stage invoice from scratch. When you invoice for the deposit, then rough-in, then completion, QuickBooks tracks what percentage of the estimate has been billed so far, so nothing gets double-billed or missed.
- Set up separate items for materials and for labor, instead of one general "job income" or "services" item. Use both line items on every invoice, even simple ones, so the split is consistent.
- Record job costs — material purchases, subcontractor labor, permit fees, inspection fees — against the project as you go, not in a batch at the end. When you pay for a permit or run to the supply house, tag that expense to the customer or project right there in QuickBooks.
- Create a dedicated expense category for permits and inspections. This keeps them from getting buried in "supplies" or "miscellaneous," and makes it easy to confirm every job is carrying its own fees.
- Check the project's profitability report before you invoice the final stage, not after. This is your last chance to catch a job that's running over before you close it out.
What undoes it
- Invoicing from a blank invoice instead of the estimate. This breaks the link QuickBooks needs to track billed-to-date, and progress invoicing stops working correctly.
- Paying for permits or small material runs with a personal card or petty cash and not entering them promptly. These are the costs most likely to get forgotten, and they're often the difference between a job looking profitable and being profitable.
- Using one item for "electrical work" instead of splitting materials and labor. This is the fastest way to lose the ability to compare job types later.
- Waiting until a job is finished to enter costs. By then it's harder to remember which receipt belongs to which job, and easier to just lump them into overhead.
- Not closing out or marking projects complete. Old, unfinished-looking projects clutter the project list and make it harder to spot the ones that actually need attention.
Monthly checklist
- Review every open project's billed-to-date versus cost-to-date, not just the overall profit and loss.
- Confirm every material purchase and subcontractor bill from the month is tagged to the right project.
- Confirm permit and inspection fees paid this month are categorized and tagged to a customer.
- Check that recent invoices were created from estimates using progress invoicing, not typed from scratch.
- Pull a sales-by-item report and compare margin on materials versus labor for the month.
- Look for any project with no cost activity in weeks — it may mean costs are being recorded somewhere else, or not at all.
Common questions
Doesn't this only matter for big jobs?
It matters most for jobs that span weeks or get billed in more than one payment. A same-day service call rarely needs this level of tracking. Anything with a deposit, a rough-in payment, or multiple invoices benefits from being set up as a project from the start.
What if I've already been running jobs without this setup?
You can still create a project retroactively and attach past invoices and expenses to it, though it takes some cleanup. Going forward, starting every larger job as a project from the estimate is what keeps this easy.
Do I need to itemize materials and labor separately on every invoice, even small ones?
For consistency, yes. If you only split them on big jobs, the sales-by-item report won't give you a clean comparison across your work. It doesn't have to mean a longer invoice — just two line items instead of one.
Where do subcontractor costs fit into this?
They should be entered as a job cost tied to the project, the same way materials are. If a subcontractor's invoice covers more than one job, split it before entering it so each project carries its correct share.
North Hudson Bookkeeping sets up projects, item lists and job costing like this for electrical contractors in North Jersey, and keeps it current every month so you can review where each job stands while there's still time to act on it. The first call is free.
