QuickBooks for Plumbers: Set Up Job Costing and Let AI Sort the Bills

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for QuickBooks for Plumbers: Set Up Job Costing and Let AI Sort the Bills.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for QuickBooks for Plumbers: Set Up Job Costing and Let AI Sort the Bills.

Use QuickBooks Online Plus or Advanced, switch on Projects (Account & settings, then Advanced), open one project for each job worth tracking, and give every supplier bill line and timesheet a project. Then email or upload supplier bills so QuickBooks pre-fills them with AI, check the category and project on each line, and review project profit weekly.

The AI reads the bill. It cannot know which job the copper was for. A counter invoice covering three jobs and your van stock still needs a person to split it line by line, and that split is where plumbing job costing is won or lost. Treat the pre-fill as a draft from a fast but careless temp. Every figure from here on belongs to an illustrative four-person firm (the owner, two plumbers and an apprentice, with two vans) and its bathroom replumb, job J2611, traced from quote to margin.

Follow me on Instagram@sagnikteaches

Which QuickBooks plan does job costing, and what the AI costs on top

Projects, the QuickBooks job costing feature, sits on the Plus and Advanced plans. Intuit's job costing page says so, and its help article on creating projects repeats it. These are the plans as Intuit's pricing page showed them on 1 November 2026, as monthly USD list prices. Intuit was advertising 50% off for the first three months, so budget on the list price.

Connect on LinkedInSagnik Bhattacharya
PlanList price a monthUsersWhat it means for a plumbing firm
Simple Start$381Fine for a solo plumber with no jobs to cost. No Projects.
Essentials$853Adds Accounting AI and more users, still no Projects.
Plus$1405Projects with basic profitability tracking, purchase orders and class tracking. The sensible home for a four-person firm.
Advanced$34025Enhanced project financials and a construction financials solution (job costing, change orders and work-in-progress reports among its features), plus a beta Project Management AI that Intuit describes as auto-creating projects and allocating costs.

The decision rule is simple. If more than a handful of jobs a month run past one visit, take Plus. Move to Advanced only when you bill in phases against budgets, or when commercial clients expect construction-style billing. Here is the sum that settles most arguments: Plus costs $55 a month more than Essentials, which is $660 a year at list price. One job where a $1,150 water heater lands in overhead instead of on the job hides more profit than that, as the worked example further down shows.

Subscribe on YouTube@sagnikteaches

Intuit presents its AI as Intuit Intelligence. Its pricing page labels the chat and several automations as beta with limited capacity, and the AI features cannot currently be switched off one by one. If that matters to you, read the tutorial on whether you can turn off Intuit Intelligence in QuickBooks Online before you commit. For bigger jobs with retainage and work in progress, the tutorial on AI in construction accounting covers what a general ledger can and cannot do.

The Complete Excel Course with AI Integration thumbnail

The Complete Excel Course with AI Integration

From formulas and pivot tables to Power Query, DAX, VBA and AI with Copilot, ChatGPT and Claude — hands-on from the first lesson.

By Sagnik Bhattacharya and Virginia Thorn, Primetime Emmy Award winner

Buy now

Stage 1: decide what counts as a job (30 minutes)

Not every call-out deserves a project. A project takes minutes to set up, and every bill line afterwards has to be assigned to something, so spend that effort where the margin is uncertain. The firm used one rule: open a project when a job meets any one of these tests.

  • It is quoted at $1,500 or more.
  • It will take more than one visit.
  • It includes special-order parts, or a water heater or boiler.
  • A subcontractor is involved.
  • It will be invoiced in stages.
Type of workProject?How its costs are tracked instead
Bathroom or kitchen replumbYesOne project per job, with the quote attached
Water heater swap, one visit, stock unitNo, unless over $1,500 or special orderParts assigned to the customer on the bill; labour from timesheets
Emergency call-out repairNoA class for service calls, so the profit and loss report shows them apart from installs
Maintenance plan visitsOne project per plan year, only if you want to know whether plans payOtherwise a class for plan work

Stage 2: set up accounts, items and settings (about 90 minutes)

Do this once, ideally with your bookkeeper on screen. Rename nothing in the chart of accounts without asking them first, because history moves with the account.

The chart of accounts, before and after

Most plumbing books start with one Materials account and one Subcontractors account sitting among the overheads. That makes every job look more profitable than it is, because real job costs are mixed in with rent and insurance. The fix is a short run of cost-of-sales accounts, so job costs sit above the gross profit line and overhead sits below it.

Before (typical)After (built for job costing)
Materials, as an expenseJob materials, as cost of sales
Subcontractors, as an expenseSubcontractors, as cost of sales
No accountPermits and disposal, as cost of sales
No accountEquipment hire, as cost of sales
Freight, as an expenseDelivery and freight, as overhead
Supplies, as an expenseVan stock and consumables, as overhead
Wages, all in one placeJob labour allocated through project timesheets (stage 6), with office wages kept as overhead

The settings that make bill lines assignable

  1. Open Account & settings, choose Advanced, and turn on the switch for organising all job-related activity in one place (Intuit spells its label with a z). This is what makes Projects appear.
  2. Stay in Account & settings, choose Expenses, and turn on "Make expenses and items billable", "Track expenses and items by customer" and "Show Items table on expense and purchase forms".
  3. Create each homeowner or builder as a customer, because every project hangs off a customer.
  4. Decide now whether staff will log time in QuickBooks Time or in QuickBooks timesheets (stage 6).

These are the labels in Intuit's help articles as of October 2026. Intuit moves menus around, so use the in-app search bar if one has shifted.

Hourly cost rates come before any timesheet

Intuit's article on labour costs warns that an hourly cost rate only applies to time tracked after the rate is set. Enter the rates first. A rate should be fully burdened: the wage plus employer taxes, insurance and anything else an hour of that person costs you. For the firm, a plumber on $32 an hour with 28% on-costs is $32 × 1.28 = $40.96, entered as $41. The apprentice on $19.50 is $24.96, entered as $25. The 28% is an illustrative figure, so take yours from payroll.

One rule for van stock

Anything bought for a named job goes to that job. Only genuine consumables used across many jobs, such as flux, solder, PTFE tape and washers, go to Van stock and consumables, and the quote carries a small consumables allowance to recover them. This one rule stops the commonest leak in plumbing job costs: a $1,150 water heater coded as stock because it arrived on the same invoice as the solder. The tutorial on van stock lists and reorder levels covers the stock side.

Stage 3: one project per job, with the quote on file

Take job J2611, a bathroom replumb with a new water heater, quoted at $9,600. In QuickBooks go to All apps, then Projects, then Projects, and select New project. Enter a project name, choose the customer, add a start date (the end date can wait) and leave the status on In progress, which is the default. The firm names projects with the job number, the customer's surname and the work, for example "J2611 [surname] bathroom replumb", so a bill line sorts correctly even when two customers have the same surname.

Then attach the quote. Open the project, choose the Add to project dropdown and pick Estimate. Intuit's help article lists estimate, invoice, timesheet and bill among the transaction types that dropdown can create. Intuit's job costing page lists enhanced project profitability tracking as an Advanced feature (Plus gets the basic version), so on Plus the safe habit is to write the planned costs down yourself, somewhere you will see them. The firm used the project's notes field:

J2611 planned cost at quote time (illustrative)Amount
Materials$2,300
Subcontractor (drain work)$850
Labour: 40 plumber hours at $41 plus 16 apprentice hours at $25$2,040
Permit and disposal$140
Total planned cost$5,330
Quoted price$9,600
Planned profit and margin$4,270, or 44.5%

One caution for firms that move up to Advanced. With Intuit's construction features switched on, the project form can offer a choice between Basic and Detailed project costing, plus a Phases section. Read Intuit's current help article on that choice before you make it, because a costing method can be hard or impossible to undo once transactions sit under it, and try it on a test project before you use it on a live one.

Stage 4: let the AI read the bill, then assign the jobs yourself

Two routes put a supplier bill in front of QuickBooks's AI. You or your supplier can email a copy to the forwarding address QuickBooks sets up for your company. Or you can go to Bills, open the Add bill dropdown and choose Upload from computer (PDF, JPEG, JPG, GIF or PNG files). Either way the bill arrives as a draft for you to review, and uploads land in the For review tab. Intuit's help article says QuickBooks detects the key information and fills it in, and that you should correct anything missed or wrong, including the category. Intuit's Bill Pay page is bolder: AI pulls the details and creates pre-filled bills with dates, terms, category and line items, and you review, save and pay.

Two cautions before you rely on it. Intuit's help article on accounts payable automation says the feature may not be available in every account yet, so check your own Add bill menu for the upload option. And the review step is yours, which is the only reason this stage is safe to automate at all.

Card and cash counter purchases take a different route. Snap the receipt in the QuickBooks mobile app, then open Receipts, create the expense and set the Customer/Project column. If you email receipts instead, Intuit asks for one receipt per image or file, attachments of up to 20 MB, and a sender with at least Vendor access writing from the address they use to sign in to QuickBooks. The tutorial on QuickBooks receipt capture covers what the photo reader misses.

Now the part the AI cannot do. This is a counter invoice from the firm's wholesaler: one document, two jobs, a consumables line, a delivery charge and a return. Every figure is illustrative.

Invoice lineAmountTypical AI pre-fillWhat the firm set it to
Copper tube, 6 lengths$186.00Job materials, no projectJob materials, J2611
Press fittings, assorted$142.90Job materials, no projectJob materials, J2611
Isolation valves (4)$96.00Job materials, no projectJob materials, J2611
Flux, solder, PTFE$38.50Job materials, no projectVan stock and consumables, no project
Pipe clips and brackets$27.00Job materials, no projectJob materials, J2611
Waste trap and pipe$54.00Job materials, no projectJob materials, J2612
Tap connectors, pair$19.00Job materials, no projectJob materials, J2612
Delivery$25.00Job materials, no projectDelivery and freight (two jobs on the order)
Credit: fittings returned-$18.00Read as +$18.00-$18.00, Job materials, J2611

The pre-filled total came to $606.40 against $570.40 printed on the paper invoice. A gap of exactly twice one line (here $36, twice the $18 credit) usually means a sign was flipped, and that one comparison catches more errors than any other check. After correction the invoice splits into J2611 $433.90, J2612 $73.00, Van stock and consumables $38.50 and Delivery and freight $25.00. Those four add back to $570.40.

To assign a line, use the Customer/Project column on the bill. Intuit's help article notes that each expense line is assigned to a project separately, and that the project on a line is different from the payee for the whole expense. That is exactly what a multi-job counter invoice needs. If the column is missing, recheck the expense settings from stage 2.

Three checks before you press Save

  1. Does the pre-filled total equal the total printed on the invoice?
  2. Does every line carry a category and either a project or a deliberate overhead code?
  3. Is this invoice already in Bills? Search the supplier and invoice number first, because an emailed copy and a portal copy of the same invoice both exist.

Stage 5: pre-sort a pile of bills with ChatGPT or Claude (optional)

QuickBooks's own pre-fill handles one bill at a time. A chat assistant earns its place when you have a pile: a backlog from a quiet month, a supplier statement with 40 lines, or an apprentice entering bills who needs a coding sheet. The assistant produces a coding table and a person still enters it. The prompt below pins the AI to your accounts, your open jobs and your rules, and tells it to say NEEDS HUMAN rather than guess.

You are coding supplier invoice lines for a plumbing firm's job costing in QuickBooks Online.

For each line return: line | amount | category | job code or OVERHEAD | confidence (High, Medium, Low) | reason.

Categories allowed: Job materials; Subcontractors; Permits and disposal; Equipment hire; Delivery and freight; Van stock and consumables.

Open jobs: J2611 bathroom replumb (new shower, basin, wall-hung WC); J2612 basin replacement (one visit).

Rules:
- Use only the categories and job codes above.
- A line bought for a named job goes to that job. Genuine consumables used across jobs (flux, solder, PTFE, tape, washers) go to Van stock and consumables.
- Delivery goes to the job if the order names one job, otherwise to Delivery and freight.
- A credit or return keeps its negative sign and the job of the item returned.
- If you cannot tell the job, write NEEDS HUMAN and say what you would need to know. Never guess a job code.
- After the table, add up all the lines and compare the sum with the invoice total I give you.

INVOICE TOTAL: $796.10
LINES:
[paste the lines here]

The firm ran it on a second wholesaler invoice. This is what came back, with the firm's rulings alongside. As ever, the figures are illustrative.

LineAmountAI's codeThe firm's ruling
Thermostatic shower valve set$312.00Job materials, J2611 (High)Agreed
Basin mixer tap$148.50NEEDS HUMAN: both open jobs include a basinJ2611, because the bathroom job sheet lists a basin mixer
Wall-hung WC frame and cistern$198.00Job materials, J2611 (High)Agreed
Concealed trap and waste kit$64.60Job materials, J2611 (High)Agreed
Silicone and fixing kit$41.00Van stock and consumables (Medium)J2611. It was bought for this bathroom, so it is a job cost under our rule
Flexible hoses (3)$32.00NEEDS HUMANJ2611, because the job sheet lists all three hoses

The AI's closing line said the six lines added up to $796.10, matching the invoice. Three of the six needed a human ruling, which is the point of the exercise. The AI did the typing and the first sort, and the firm made the three calls that depend on knowing the jobs. Allow 10 to 15 minutes for a 40-line statement, most of it spent on the NEEDS HUMAN rows. The same supplier lines can also keep your price book current, which the tutorial on updating a plumbing price book from supplier invoices covers.

Paste lines, not bank details or the supplier's account number. ChatGPT Business and Claude Team say they do not train on your content by default, whereas free and personal plans have a training setting you should check before any financial data goes in.

Stage 6: put labour on the job

Labour is usually the biggest cost on a plumbing job and the easiest to leave out. Intuit's help article describes two ways to get it onto a project. Payroll expenses show up after you run payroll. Estimated hourly costs show up straight away, calculated from timesheet hours and the burdened rates you set in stage 2, which makes them the better choice for a weekly check while a job is still open. Both work whether you use Intuit's payroll or another provider, and you can switch between them.

Each person logs time against the project. If you use QuickBooks Time, your workers can track time to the project and you approve and export it into QuickBooks. Paper timesheets keyed in on a Friday work too, provided the project is on every line.

One setting needs care. The dropdown that switches projects between Payroll Expenses and Hourly Costs changes the view for every project, including the ones you are not looking at, although Intuit says it does not change your books. If a job's labour suddenly looks like zero, check that dropdown before you blame the timesheets, because payroll costs only appear after payroll has run. On J2611 the plumber logged 40 hours and the apprentice 18, which is $1,640 plus $450, or $2,090 of labour against $2,040 planned.

The finished job: J2611 from quote to margin

Three supplier documents, one subcontractor and two sets of timesheets later, J2611 closed. Open the project and Intuit's overview shows income, costs and profit margin, with labour separated from the other costs. Here is the picture set against the plan from stage 3.

J2611 (illustrative)Planned at quoteActualDifference
Materials (three invoices: $433.90 + $796.10 + $1,150.00)$2,300$2,380+$80
Subcontractor$850$850$0
Labour (40 plumber hours, 18 apprentice hours)$2,040$2,090+$50
Permit and disposal$140$140$0
Total cost$5,330$5,460+$130
Income$9,600$9,600$0
Profit$4,270$4,140-$130
Margin44.5%43.1%-1.4 points

A $130 overrun and a margin that slipped 1.4 points is the result you want to see: small, explained and visible in the week the job closed. The apprentice's two extra hours account for $50, and the $80 of extra materials is a line the firm can check against the quote.

Now the sum that justifies the whole exercise. Suppose the $1,150 water heater on the third document had been coded to Van stock and consumables because it arrived alongside the solder. J2611's recorded cost would fall from $5,460 to $4,310. Profit would show as $5,290, a margin of 55.1%, which flatters the job by 12 points. The next bathroom quote would be priced from a margin the firm never earned, and the $1,150 would sit in overhead where nobody compares it with a job.

A 15-minute check every Friday

  1. Open Bills and the For review tab. It should be empty. Anything sitting there is a cost no job can see yet.
  2. Open the Projects list and read the income and cost bars. Open any job where costs are close to income, or where the margin is under your own floor (35% on installs, say, but that number is yours to set).
  3. Check that the Payroll Expenses or Hourly Costs dropdown is set the way you intend for this review.
  4. Pick one supplier and compare its latest bill in QuickBooks with the paper or PDF: total, signs and projects.
  5. List finished jobs with no invoice. A job with costs and no invoice is money you have not yet asked for.

Once a month, open the Project profitability report from a project's Project Reports tab. Intuit's help article is not entirely consistent about whether this report follows the hourly setting, so compare its labour line with the project overview before you trust it.

Where plumbing job costs go wrong

  • Rates entered late. Hourly cost rates only apply to time tracked after they are set, so the first weeks of a job can show labour at zero. Ask your bookkeeper how to handle the gap, because the older timesheets will not recalculate.
  • Payroll lag. With the dropdown on Payroll Expenses, a job's labour does not appear until payroll runs. Use Hourly Costs for weekly checks.
  • Flipped credits. A return read as a purchase inflates the bill. The total comparison in stage 4 catches it.
  • The same invoice twice. It arrives once by supplier email and once from a portal download. Search before saving.
  • Costs left on the customer, not the project. Open the expense and set the Customer/Project column on each line. Intuit's article on existing expenses covers it.
  • Bank-feed mislabels. The AI that categorises bank transactions makes its own mistakes, and the tutorial on recategorising transactions after AI mislabels them shows how to fix them.
  • Trusting beta features. If you are on Advanced and try the beta Project Management AI, test it on a handful of jobs and compare its project allocations with the paper before you rely on it.

To know the setup works, pick one finished job and rebuild its cost from the paper: every supplier invoice, every timesheet, every permit. QuickBooks should match to the dollar. If it does not, the missing amount is almost always a bill without a project or a timesheet without a rate, and finding it once teaches you which stage of your own routine leaks.

Further reads

Sources: Intuit QuickBooks Online pricing page, job costing page and Bill Pay page; Intuit help articles on creating projects, adding transactions and expenses to projects, tracking labour costs by project, entering bills, uploading bills and emailing receipts and bills (all read 1 November 2026).

Want job costing set up around your own jobs?

On a 1:1 call we'll look at how your jobs and supplier bills flow today, decide what QuickBooks can already do for you, and pick the first step worth automating.

Book a 1:1 call with me