Back to the blog

December 20, 2025 · 11 min read

Handyman Bookkeeping: A Simple System for Many Small Jobs

By 909 Bookkeeping

How to keep books for a handyman business. Track many small jobs without a big setup, hold the materials apart from the labor, tag each job so the income sorts, and keep the monthly income true. Plain English from 909 Bookkeeping.

Trade illustration for this bookkeeping guideA flat illustration of a toolbox with a wrench and many small job cards, showing many small jobs tracked in one simple system for a handyman.LEDGER

What handyman books need to track

A handyman business is not one number. It is the small jobs you ran, the materials you picked up, the labor you charged, the travel you did, and the deposits that came in. Each part needs its own line so your monthly income stays true.

When you track all of it by job, you can see which jobs made money and which ones spent more on materials or drive time than they brought in. When you do not, you get one big pile of deposits and hardware store runs and no way to tell whether the faucet repair paid better than the door hang.

Most handyman work is small jobs. A leak fixed, a door hung, a ceiling fan installed, a fence board replaced, a garbage disposal swapped. Each job has a labor charge and a materials charge. The materials come from a hardware store run. The job may take an hour or a day. When the books hold the labor apart from the materials and each job on its own line, the business makes sense. You can read more about how we keep these lines tied on our bookkeeping page.

Here is what a clean job looks like.

LineWhat it means
Labor chargeWhat you charged for the work
Materials chargeWhat you charged for the parts
Materials costWhat you paid at the hardware store
Mileage or travelWhat the drive to the job cost
Net per jobWhat the job really earned after the materials and the drive

When the labor and the materials sit on their own lines, your per job profit is real. When they sit together, a big deposit looks like a great day and the hardware bill hides.

How small jobs show up in your books

A small job is the core of a handyman business. You show up, you fix the thing, you bill the customer. The job is the unit of the work.

The clean way is to book the labor to a service income line and the materials to a parts income line. When you bill a job, the labor goes to service income and the materials go to parts income. The two sit side by side on the profit and loss. You can see how much of your billing is labor and how much is parts. When the parts share grows, your margins shift and you can see it.

The messy way is to book the whole invoice to one general sales line. Now your income is one pile. You can not tell if a month was strong because you billed a lot of labor or because you marked up a lot of parts. You can read more about how we tie job income to the right line in our garage door and locksmith service calls guide. The same idea works for a handyman.

Here is how to keep the small job clean.

  • **Book the labor to a service income line: ** not to one general sales line.
  • - **Book the materials to a parts income line: ** so the two sit apart.
  • - **Tag each invoice to the job or the customer: ** so the income sorts by job.
  • - **Match each invoice to the bank deposit: ** the day the cash clears.
  • - **Watch the labor to materials mix: ** a shift in the share changes your margins.

When the labor and the materials sit apart, your income is true. When they sit together, the story hides in one pile.

How materials show up apart from labor

The materials you pick up for a handyman job are a cost, even when you also charge for them. A faucet you buy at the hardware store is a materials cost. The same faucet billed to the customer is parts income. The two are not the same and they need their own lines.

The clean way is to book the materials cost to a parts cost line when you buy the faucet. Book the parts income to a parts income line when you bill the customer for it. The two sit apart on the profit and loss. You can see the markup on parts over a month. When the hardware store raises prices, your parts cost goes up and your parts income should follow. When the two move together, the margin stays true.

The messy way is to book the hardware bill to general supplies and the parts charge to general sales. Now the parts cost sits in overhead and the parts income sits in the sales pile. You can not tell if you are making money on parts or losing it. You can read more about how we track parts in our plumbing truck stock guide. The same idea works for a handyman who picks up parts for each job.

Here is how to keep the materials clean.

  • **Book materials cost to a parts cost line: ** not to general supplies.
  • - **Book parts income to a parts income line: ** not to general sales.
  • - **Tag each materials buy to the job when you can: ** so the cost sorts by job.
  • - **Watch the parts markup: ** the parts income should track the parts cost.
  • - **Match each hardware bill to the bank: ** so no cost floats untied.

When the materials cost and the parts income sit apart, your parts margin is real. When they sit together, the markup hides and the true profit is a guess.

How to tag each job so the income sorts

A handyman with twenty small jobs in a month needs a way to sort the money by job. Tags or classes in QuickBooks Online do this without a big setup.

The clean way is to turn on class tracking or use a job tag on each invoice and each bill. Every labor charge, every materials buy, and every deposit carries the tag for the job it belongs to. When you run the profit and loss by class, each job shows in its own column. You can see which job paid and which one ate the budget on parts.

The messy way is to book every line to the same accounts with no tag. Now you can not sort by job. You can not tell if the faucet repair earned its keep or if the fence job is the one that needs a closer look at the materials. You can read more about how we keep projects apart in our cost codes and projects guide. The same idea works for many small handyman jobs.

Here is how to keep each job on its own line.

  • **Turn on class tracking or use a job tag: ** and set one class or tag per job.
  • - **Tag the labor to its job: ** so the income sorts by job.
  • - **Tag every materials buy to its job: ** so the cost sorts by job.
  • - **Tag the deposit to its job: ** so the cash sorts by job.
  • - **Run the profit and loss by class each month: ** so each job shows in its own column.

When each line carries a tag, the business reads like a row of jobs. When it does not, the business reads like one big blur.

How to match each job to the bank

Every small job has to match the bank. The customer pays you. The cash lands in your account. The books need to tie the two together.

The clean way is to match each invoice to the bank deposit the day it clears. The amount in the books agrees with the amount that hit the bank. When a customer pays on a card, the deposit lands net of the card fee. When a customer pays in cash, the deposit lands whole. When a check bounces, the deposit does not stay on the books. The bank and the books always agree.

The messy way is to book the invoice and never match it. Now the books show a payment that may or may not have cleared. A check that bounced sits as income. A card fee that came out before the deposit hides. The invoice total does not match the cash that landed. You can read more about how we match payouts to the bank in our courier and delivery guide.

Here is how to keep the match clean.

  • **Match each invoice to the bank deposit: ** the day it clears.
  • - **Watch for card fees: ** a card payment lands net, so split the fee out.
  • - **Watch for bounced checks: ** a payment that did not clear should not stay as income.
  • - **Reconcile the bank each month: ** so the cash total agrees with the bank.
  • - **Check the deposit total against the day end report: ** so the books agree with the till.

When each invoice matches the bank, your cash is true. When they float untied, the income drifts and the real profit hides.

How the month end close works

At month end, every small job needs its lines added up. The labor, the parts income, the materials cost, the mileage and any card fees all pull together. The income shows what you billed. The costs show what the work took. The net shows what the jobs really made.

We start with the bank. We match each invoice to the deposit that cleared. We split the card fees from the net cash. We book the materials buys to the parts cost line tagged to each job. We book the labor to the service income line tagged to each job. We tag every line to the job or the customer. We send you the profit and loss by class, a balance sheet, and a cash summary. Each job sits inside the report in its own column.

Here is a simple month end check.

  • **Match each invoice to the bank: ** every deposit cleared.
  • - **Split the card fees from the net cash: ** so the fee shows on its own.
  • - **Book the materials buys to the parts cost line: ** tagged to each job.
  • - **Book the labor to the service income line: ** tagged to each job.
  • - **Tag every line to the job or customer: ** so the profit and loss sorts by job.
  • - **Run the profit and loss by class: ** so each job shows in its own column.

When the close runs every month, the job story stays clear. When it skips a month, the small jobs stack up and the next month is harder to close.

A situation we clean up

The small jobs that all looked like one pile

A handyman runs twenty small jobs a month. Every invoice lands in one general sales line. The hardware store bills go to general supplies. No job tags are used. At month end, the owner can not tell what the labor margin is, what the parts markup is, or which jobs paid best. The bank and the books do not agree because the invoices float untied.

Here is how we handle it. We turn on class tracking in QuickBooks Online and set up one class for each job. We go back through the open month and split each invoice into labor and parts. We move the hardware bills from general supplies to a parts cost line and tag them to the job. We match each invoice to the bank. When we are done, the owner can run the profit and loss by class and see each job in its own column. We set up a rule so the next invoice carries the right class from the start.

Mistakes we fix

  • Every invoice in one general sales line with no labor or parts split
  • Hardware store bills in general supplies instead of a parts cost line
  • No job tags or classes so no way to sort by job
  • The parts income and parts cost in the same pile so the markup hides
  • No match between the invoice and the bank deposit
  • Card fees buried inside net sales instead of on their own line
  • A bounced check still sitting as income after it did not clear
  • Mileage or travel costs never tracked per job
  • No profit and loss by class run at month end

Common questions

How do I record a small handyman job? Book the labor to a service income line and the materials to a parts income line. Tag each invoice to the job or the customer. Match each invoice to the bank deposit the day it clears. The two income lines sit apart so you can see the labor margin and the parts markup.

How do I track materials cost for a handyman job? Book the materials you buy to a parts cost line, not to general supplies. Tag each buy to the job so it sorts by job. Match each hardware bill to the bank so no cost floats untied. Watch the parts markup so the parts income tracks the parts cost.

How do I sort my income by job? Turn on class tracking in QuickBooks Online and set up one class per job. Tag every labor charge, materials buy, and deposit to its job class. Run the profit and loss by class so each job shows in its own column.

How do I match a small job to the bank? Match each invoice to the bank deposit the day it clears. Watch for card fees that come out before the deposit and for bounced checks that do not clear. Reconcile the bank each month so the cash total agrees with the bank.

Ready for books that close on time?

Free 20-minute call. We reply with a fixed quote within one business day.

Book a callCall