I should say this up front: I'm not a handyman. I run a cleaning company in the Vail Valley and I build ValLedger, software that small service businesses, handymen included, use to quote and invoice. So this isn't advice from someone who has mounted a thousand TVs. It's the pricing method I use for my own business, applied to handyman work, with the market figures checked and cited.
Method matters more in handyman work than almost anywhere, because the jobs change every hour. You might hang a mirror at 9, fix a running toilet at 10:30, and spend the afternoon on a punch list you saw in two blurry photos. If every one of those prices gets made up on the spot, some will be wrong, and you won't know which.
Start with your own hourly rate, not the market's
Every way of pricing handyman work runs on one number: what an hour of your labor has to bring in. Get that first and the rest is arithmetic.
The trap is dividing what you want to earn by 40 hours a week. You don't bill 40 hours. You drive, go to the hardware store, look at jobs you don't win, answer texts, and do the books. The hours you bill have to pay for those.
Here's the calculation. The numbers are illustrative, picked to keep the arithmetic easy. Swap in your own.
- Hours on the clock: 48 working weeks × 40 hours = 1,920 hours.
- Billable share: say 60% are billed to a client. That's 1,152 billable hours.
- Your pay: say you want $60,000 a year before income tax.
- Self-employment tax: the IRS rate is 15.3% for Social Security and Medicare. A rough allowance on $60,000 is about $9,200; your accountant can refine it.
- Overhead: insurance, vehicle, tools, phone, software, advertising. Say $18,000 a year.
- Total to cover: $60,000 + $9,200 + $18,000 = $87,200.
- Add a margin: the business needs profit beyond your pay, for slow months and the saw that dies mid-job. At a 15% margin: $87,200 ÷ 0.85 = about $102,600.
- Hourly rate: $102,600 ÷ 1,152 billable hours = about $89. Call it $90 an hour.
Now check it against the market. HomeAdvisor's 2026 cost guide puts handyman labor at $60 to $125 an hour plus materials. Thumbtack's handyman price guide gives a typical national range of $60 to $75, with low-end pros around $45 to $50 and high-end pros at $100 to $125, and says rates run higher where living costs are high. Your town could sit well above or below these national figures.
If your number lands far above your market, look hard at your billable share and overhead. If it lands far below, the formula just told you you've been undercharging.
Hourly vs. flat rate vs. per task
Once you have a rate, the question is how to present it. Each method fits a different kind of job, and the real difference is who carries the risk when a job runs long.
| Method | Works best for | Who carries the risk of overruns |
|---|---|---|
| Hourly | Unknowns: diagnosis, old houses, "see what's behind the wall" | The client |
| Flat rate for the whole job | Defined scope you've seen in person | You |
| Per task (price list) | Common, repeatable tasks: mounting, swaps, small repairs | You, but you've timed it |
Hourly is the safe choice when you can't see the job. The client pays for the time it takes, but can't budget for it, and some will watch the clock.
Flat rate is what most homeowners prefer, because they know the number before you start. HomeAdvisor's guide notes that handymen often charge hourly when they need to cover diagnostic time, and a flat rate when they can easily estimate how long a job will take. If you're fast, the time you save is yours.
Per task is flat rate made repeatable. Price the things you do every week once, write them down, and stop inventing prices in someone's kitchen.
Minimum charges and trip charges
Small jobs are where handymen lose the most money. Tightening a cabinet hinge takes ten minutes, but the drive, unloading, and cleanup might take an hour. Bill ten minutes and you've worked an hour for a sixth of your rate.
Two common fixes. Pick one:
- A minimum charge. Every visit costs at least a set amount, often expressed as a minimum number of hours. Thumbtack's guide gives the example of a $50 hourly rate with a two-hour minimum, so a one-hour job still costs $100.
- A trip charge. A flat fee per visit that covers drive time and setup, with the work priced on top. Thumbtack notes travel can be billed as a flat fee or by mileage beyond a service area.
At the illustrative $90 rate, a 1.5-hour minimum ($135) covers a half hour of driving and setup plus an hour of work. A $45 trip charge pays for the trip and prices every task on its own time, which makes punch lists easy. Either way, say it on the phone so nobody hears it first on the invoice.
Materials: markup is not margin
Charge more for materials than you paid. You fronted the money and you're on the hook if the part is wrong.
Watch the math. Adding 25% to a $40 part gives you $50: a 25% markup, but only a 20% margin, because the $10 is 20% of the $50 price. I worked through this in the cleaning pricing guide's section on margin vs. markup. Short version: for a target margin, divide your cost by one minus that margin.
Two more rules:
- The store run is labor. Forty minutes getting the part is forty minutes at your rate, billed or built into the markup.
- Client-supplied parts change the price. No markup for you, plus the risk it's the wrong part. Say in your terms that a second trip caused by a wrong part is billable.
Building a flat-rate price list from your labor rate
For each common task:
Task price = (time on site, including setup and cleanup) × your hourly rate + materials, rounded up.
The times below are examples, not benchmarks. Time each task yourself on your next few jobs, and use those numbers. The prices use the illustrative $90 rate and assume a separate $45 trip charge per visit.
| Task (with what's included) | Example time | Labor at $90/hr | Materials (example) | Task price |
|---|---|---|---|---|
| Mount a TV up to 65", client's mount, into studs, no in-wall wiring | 1 hr | $90 | — | $90 |
| Swap a kitchen faucet, client's faucet, working shutoffs | 1.25 hr | $112.50 | $15 supply lines | $130 |
| Patch drywall up to fist size, ready for paint | 1.5 hr | $135 | $10 | $145 |
| Adjust a sticking interior door (hinges, strike plate) | 0.5 hr | $45 | — | $45 |
| Remove and replace caulk around one tub | 1 hr | $90 | $12 | $105 |
A standalone faucet swap is then $45 + $130 = $175. Your numbers will differ. The point is that every price traces back to your rate and your clock, so you can defend it.
What makes the list work is the scope in each description. "TV mount: $90" invites an argument the first time the wall is brick or the client wants cables hidden. "Into studs, no in-wall wiring" says what the $90 buys, and anything else is a separate line.
Punch lists
Punch lists, the ten small fixes a homeowner or landlord has been saving up, are where a price list pays off. Instead of guessing a total, add up the lines: one trip charge, each task at its list price, and anything not on your list priced by its estimated time.
The trip charge appears once, which is the honest reason a punch list costs less than ten separate visits. With a minimum charge instead, the minimum stops mattering once the list is big enough.
Estimating the unknowns
Some jobs you can't flat-price because you can't see them: a leak you haven't traced, rot that might stop at the trim or might not.
Honest options:
- Price a diagnostic visit. An hour or two at your rate to find out, then quote the repair.
- Fixed price for the defined part, hourly for the rest. "Replace damaged trim: $X. If rot extends into the framing, additional work at $90 an hour, and I'll call you first."
- Quote a range. See below.
Whichever you use, write down what triggers a change and agree you'll stop for approval before going over. A surprise you called about is a conversation. A surprise on the invoice is a dispute.
When to quote a range
A range fits when you know roughly how long a job takes but not exactly, like rehanging and trimming closet doors in an older house. Quote the hours and your rate, and bill what it actually takes.
Keep it tight enough to be useful. "Two to four hours" helps a client plan. "Two to twelve hours" says you haven't looked yet, so go look. If one specific unknown makes it wide, name it in the estimate.
Licensing limits on job size
How big a job you can take without a contractor's license depends on your state, and in some states it's tied to the job's dollar value, which makes it a pricing question.
California is a clear example. According to the Contractors State License Board, since January 1, 2025, an unlicensed person can do minor work up to $1,000, but only if the work doesn't need a permit and they don't employ anyone on the project. Bidding above $1,000, doing permitted work, or hiring help requires a license.
Other states draw the line differently, and some trades, such as plumbing and electrical work, can carry their own license requirements. Check your state's contractor licensing board and your city before you quote work near any limit. Don't split one job into smaller invoices to get under a cap.
Raising your rates
Your costs rise every year. A rate you set three years ago and never touched is a pay cut.
- Rerun the formula once a year with this year's numbers. If it beats what you charge, that's your increase.
- Update the price list with it. Every task price comes from the hourly rate.
- Quote new clients at the new rate right away. It tells you whether your market accepts it.
- Give regular clients written notice: the new rate and the date it starts. Don't over-apologize.
- Raise a little every year, not a lot every few years.
Putting your price list to work in ValLedger
Here's how this works in ValLedger, described narrowly so you know exactly what's there.
A price book. Save your tasks once, each with a price, a pricing type (flat, hourly, or unit-based with a unit like "sq ft"), and an optional category. When you build an estimate, on the web or in the phone app, you pull items from the price book instead of retyping prices.
Three estimate types:
- Service is one service at a flat price or an hourly rate, with add-ons listed underneath as their own lines. In hourly mode you can enter a minimum and maximum number of hours. The estimate line spells out the range and your rate, for example "2-4 hrs @ $90.00/hr", and the estimated total is figured at the midpoint of the range. If you'll bill actual hours, say so in the estimate's terms.
- Itemized is a list of line items, each with a quantity and rate. That's the one for punch lists: a trip charge line, then each task from your price book.
- Flat Rate lists what's included and shows one price with no per-line prices, either one-time or per week, month, quarter, or year.
Your costs stay private. Each estimate has an internal costs section marked not visible to the client. Enter your materials and other costs and it shows estimated profit and margin before you send.
Approval and deposits. The client opens the estimate in their client portal, approves it, and signs on screen. You can require a deposit, as a percentage or a fixed amount, paid by card through Stripe once you've connected online payments. Useful when you're buying materials up front.
Invoices from your phone. The phone app creates and sends invoices, so you can bill before you leave the driveway.
If you're quoting from the truck between jobs, I wrote up how quoting and invoicing from your phone should work, and there's a page on what ValLedger does for handymen.
The short version
Set your hourly rate from billable hours, not 40-hour weeks. Hourly for unknowns, flat rate for jobs you've seen, a timed price list for the weekly regulars. Cover small jobs with a minimum or trip charge. Know what margin your materials markup gives you. Check your state's licensing limits. Rerun the numbers every year.
When you want your price list, estimates, deposits, and approvals in one place, you can try ValLedger free for 14 days, no credit card required, and price a real week of jobs with it before you decide.