How to Price Your Services: Hourly, Job, Package
By Mark Fulton · 2026-09-01 · 14 min read

Pricing a service fails on structure before it fails on the number. Hourly, per job, and package are not three flavors of the same decision, they are three different bets about how predictable your work is, and each one punishes a different kind of surprise. Hourly punishes you for getting faster. Per job punishes you for the customer who keeps adding. Packages punish you for the outlier who uses everything. The right structure is the one whose punishment your work rarely triggers, and you can read that straight off your own past jobs: how much the hours varied for the same kind of work, and how well you could see the scope before you started. Get the structure right and the number becomes a much smaller argument. Get it wrong and no number rescues it.
Most pricing guidance goes at this from the cost side. Add up your expenses, add your desired profit, divide by billable hours, and out comes a rate. That arithmetic is worth doing, and it does answer one question: the floor you cannot go below. It does not answer the question owners actually get stuck on, which is why two jobs at the same rate ended so differently.
Why does pricing structure matter more than the number?
Because the structure decides who absorbs the variance.
Every service job has a spread. The same bathroom deep clean is two hours at one house and three and a half at the next. The same logo package is one round of revisions for one client and five for another. The work does not repeat identically, and something has to absorb that difference. Structure is the rule that decides whether it lands on you or on the customer.
- Hourly puts the variance on the customer. Long job, bigger invoice. That is why customers push back on open-ended hourly, and why they ask for estimates.
- Per job puts the variance on you. You quoted a number, and the job takes what it takes.
- Packages split it. Ordinary customers subsidize the heavy ones, which works while heavy ones stay rare.
None of those is better in the abstract. They are better or worse against a specific pattern of work. A locksmith doing emergency callouts and a bookkeeper doing monthly closes have opposite variance profiles, and copying each other's pricing structure would hurt both.
The second reason structure outranks the number is that it changes your incentives. Under hourly, every efficiency you gain reduces your own income. You buy a better tool, you learn the shortcut, and you get paid less for the same result. Under per-job pricing that is reversed. The same speed-up is yours to keep. Owners often discover this only after a few years of hourly billing, when they realize their skill has been quietly working against their invoice.
Nothing here is a recommendation about what to charge, and none of it is financial advice. It is mechanics you can run on your own numbers.
When does hourly pricing work against you?
Hourly is the default because it feels fair and it is trivially easy to explain. It genuinely fits some work well: diagnostic work where nobody can see the end from the beginning, emergency and callout work, ongoing support with no fixed finish line, and anything where the customer keeps changing direction on purpose.
It works against you in four situations.
When you get faster. The clearest signal is a job you can now complete in half the hours it used to take, at half the money. Speed is the return on your experience, and hourly hands that return to the customer.
When the customer is buying an outcome, not your time. People hiring a mobile mechanic want a working car. Hours are your production detail, and putting them on the invoice invites a conversation about the detail rather than the result.
When your rate has to carry the unbillable work. Quoting, driving, ordering parts, chasing an invoice. The hours you can honestly put on a bill are a fraction of the hours the business consumes, which is why an hourly rate that looks generous next to a salary often is not. Any real hourly figure has to cover the whole week, not just the billable slice.
When it caps you. Hourly income has a hard ceiling equal to hours available. Anything that grows past that needs either a higher rate, more people, or a different structure.
The middle ground worth knowing is hourly with a not-to-exceed cap. You bill actual hours, and you tell the customer the total will not pass a stated ceiling without their written approval. The customer gets the certainty they wanted, you keep the honesty of billing real time, and you keep the risk bounded because the cap only binds when you exceed it.
How do you price per job without eating overruns?
Fixed-price work is where money is made and lost fastest, and almost every loss traces to one of two causes: the scope was never written down, or it was written down and then quietly grew.
Four mechanics keep it survivable.
Quote from your own history, not from memory. The difference between a quote that holds and a quote that does not is usually whether it came from recorded hours on comparable jobs or from a feeling that the last one went fine. This is exactly what job costing for small contractors produces: what you quoted, what you spent, and how many hours it actually took. Eight costed jobs make the ninth quote a lookup.
Write the scope as a boundary, including what is excluded. The exclusions do more work than the inclusions. "Includes two rounds of revisions" is a boundary. "Includes revisions" is an invitation.
Name the change-order rate in the same document. Not as a threat, as a mechanism. When the price for extra work is already agreed, adding work is a normal transaction instead of an awkward conversation you will avoid having and then absorb.
Price the range, not the best case. Fixed price means you are selling certainty, and certainty has a cost. If similar jobs have landed anywhere between six and eleven hours, a quote built on six hours is a plan to lose money on roughly half of them.
The floor underneath all of this is your break-even, which tells you what any given price implies about the volume you need. That calculation is worked twice, in jobs per month and in billable hours per week, in break-even point for a service business.
What makes a package worth offering?
A package is a fixed price for a defined bundle, usually repeating: a monthly maintenance plan, a quarterly service visit, a starter bundle for new customers.
Packages earn their place when three things are true at once.
- The same combination of work repeats across many customers. If every package needs redesigning, it is per-job pricing with extra admin.
- Usage clusters tightly, and the heavy users are genuinely rare. Packages average across customers. That is fine when the average holds and expensive when one customer uses four times the support everyone else does.
- The bundle is worth more to the customer than the parts. Usually that value is predictability, priority, or not having to think about it again. If the only difference is a discount, you have cut your price and called it a product.
The failure mode is the unlimited word. Unlimited revisions, unlimited support, unlimited callouts. It sells well and it prices the outlier into everyone's bill, or it prices nobody's, and you find out which by working weekends. A cap that most customers never reach costs you almost nothing and removes the whole tail of risk.
Packages also need an exit. State the notice period, what happens to unused visits, and what a customer keeps if they leave. Deciding that at signup is cheap. Deciding it during a dispute is not.
How do your past jobs tell you which to use?
This is the part the rate calculators skip, and it is the only part that needs data instead of opinion.
Pull your last ten to twenty jobs of a similar kind. For each one, note the hours actually worked and the total actually invoiced. Then look at two things.
Spread. Divide the hours of the longest job by the hours of the shortest, for the same type of work. A number near one means the work is predictable. A number near two or three means it is not. There is no official threshold, so pick your own line and be consistent, but the shape of the answer is usually obvious the moment you see the two extremes side by side.
Visibility. Ask, honestly, at what point you knew how big each job was. Before quoting, after the first hour on site, or halfway through.
Then walk the tree.
- Can you see the scope before you start?
- No. You are diagnosing, or the customer does not know what they want yet.
- → Hourly, ideally with a not-to-exceed cap.
- Scope-creep guard: the cap, plus written approval before you pass it. Bill in small increments so a surprise surfaces at the first invoice, not the last.
- Yes, roughly. You can define the work up front.
- Do similar jobs land in a narrow band of hours?
- No, the spread is wide. → Hourly, or a two-part price: a fixed fee for the predictable phase, hourly for the unpredictable one.
- Scope-creep guard: the phase boundary itself. Re-quote at the boundary with real information instead of guessing at the start.
- Yes, the spread is narrow. → Per job, quoted from your own costed history.
- Scope-creep guard: written inclusions and exclusions, plus a stated change-order rate in the same document.
- And does the same bundle repeat across many customers, with rare heavy users?
- Yes. → Package, on top of the per-job price for one-off work.
- Scope-creep guard: a cap most customers never reach, a named exclusion list, and a stated notice period.
- Yes. → Package, on top of the per-job price for one-off work.
- No, the spread is wide. → Hourly, or a two-part price: a fixed fee for the predictable phase, hourly for the unpredictable one.
- Do similar jobs land in a narrow band of hours?
- No. You are diagnosing, or the customer does not know what they want yet.
Read left to right, the tree is one question about visibility and one about variance. Both are answerable from records you already generate, which is the point. The structure is sitting in your job history whether or not anyone has looked.
Two practical notes. Run the tree per service line, not per business. It is completely normal to end up hourly on repairs and per-job on installations in the same company. And rerun it when your own numbers move, because a job type that was unpredictable when you had done four of them often turns predictable by the twentieth.
How do you handle the job that goes long?
Every structure eventually meets the job that blows past its estimate. What matters is when you notice and what you already agreed.
Notice at the boundary, not the end. Set a trigger you check mid-job: hours passing the estimate, or a task appearing that was not in the scope. A fixed-price overrun found at 40 percent through is a conversation. Found at delivery, it is a concession.
Separate the two causes, because they get different answers. If the scope changed, that is a change order, and it is the customer's cost under any structure. If you simply underquoted work that was always in scope, that is yours to absorb this time, and it is the most valuable piece of pricing data you will collect all year. Record which one it was. A pattern of underquoting one job type is fixable. A pattern of unbilled scope changes is a paperwork problem, not a pricing problem.
Tell the customer early, in writing, with a number. "This has grown by about four hours because of X, which puts it at Y, do you want me to proceed" is a normal message. Silence followed by a larger invoice is not.
Feed it back into the quote. The overrun is only a loss if you throw the data away. Add the job to your history, and the next quote of that type prices the real distribution rather than the optimistic end of it.
Watch the pattern weekly, not annually. If overruns cluster in one service line, that line is mispriced or misstructured, and it will keep taking from the ones that work. That is one of the things a short weekly look at the business is for, covered in the numbers worth checking every Monday.
Two boundaries worth stating plainly. Nothing above tells you what to charge, and it is not financial, tax, or legal advice. If you want a second set of eyes on your pricing from someone who can look at your actual figures, the Small Business Development Centers run free counseling out of universities in every state, which is generally a better use of an afternoon than another pricing calculator.
What about the market you are pricing into?
Structure and cost floor are internal questions. What customers already pay for alternatives is an external one, and it sets the ceiling.
The U.S. Small Business Administration's guidance on market research and competitive analysis lists pricing as one of the core questions to answer about your market, alongside demand, market size, location, and saturation: what do potential customers pay for these alternatives. Competitor prices are not a target to match, they are a constraint to understand, and they also tell you which structures your customers are already used to seeing. If everyone in your category quotes per job, an hourly quote adds friction you will have to justify.
The useful move is to collect both boundaries and look at them together. Your floor comes from your own costs. The ceiling comes from what is being paid around you. Where you sit between them is a positioning decision, and it belongs to you.
FAQ
Should I charge hourly or per job?
Answer it with your own hours, not a preference. Take a batch of similar past jobs and compare the longest to the shortest. If they are close, the work is predictable enough to price per job, and per job is usually better for you because efficiency gains stay yours. If the spread is wide, or you routinely cannot see the scope until you are on site, hourly protects you from absorbing a variance you cannot forecast. Many owners land on both: per job where they have history, hourly where they do not yet, and a two-part price where a job has a predictable phase followed by an unpredictable one.
How do I stop underquoting?
Stop quoting from memory. Underquoting is almost always a recall problem, because memory keeps the job that went smoothly and drops the two that ran long. The fix is a record of what each job actually took, hours and money, so the next quote comes from a distribution instead of an anecdote. Then quote the realistic case rather than the best case, and price the exclusions explicitly. The IRS's own recordkeeping guidance notes that no particular kind of record is required and that you may choose any system that clearly shows income and expenses, so the tool matters far less than whether you keep using it in week six.
What do I do when a job runs over?
Find out immediately whether the scope grew or your estimate was wrong. Scope growth is a change order, priced at the rate you named in the original document, and it should be raised in writing as soon as you see it. A bad estimate on work that was always in scope is yours to absorb on this job, and then to correct on the next quote of that type. Either way, tell the customer before the invoice, with a specific number and a specific reason. The cost of a mid-job message is a minute. The cost of a surprise invoice is the relationship.
How do I price a job I've never done before?
Treat the first one as paid learning and structure it to limit the downside. Hourly with a not-to-exceed cap works well here, because you are honest about the uncertainty while giving the customer a bounded number. Or split it: a small fixed fee for a scoping phase, then a real quote once you can see the work. Track that first job closely, hours and costs, because it becomes the entire evidence base for the second quote. What does not work is guessing a fixed price on unfamiliar work and hoping, since you have taken on all the variance in the one situation where you know least about it.
Sources
- U.S. Small Business Administration, Market research and competitive analysis, on pricing as a core market research question
- U.S. Small Business Administration, Small Business Development Centers, free counseling through university-hosted centers
- Internal Revenue Service, Recordkeeping for small businesses, on choosing any system that clearly shows income and expenses
Get the data the tree needs
The whole method rests on one month of honest records: every job with its hours and its total, logged as it happens rather than reconstructed later. Put that month into the money module of SMBDashboard, one entry per job, and then compare the longest to the shortest within each service line. The variance in your own data picks the structure for you, which is a far better argument than any rate formula. It's free, there's no account to create, and your data stays in your browser unless you turn on Pro sync. The free tier holds 25 customers, 200 money entries, and unlimited tasks, which is a real month of records rather than a demo. Pro removes the caps and adds CSV export, recurring entries, and your own branding on the printed report, at $48 every six months (about $8 a month) or $149 once.