
How to Price Your Services: A Step-by-Step Financial Framework for Trades and Service Businesses
Ask a trades business owner how they set their prices and you'll hear some version of one of three answers: "I looked at what other companies charge and tried to be competitive." "I doubled my labor cost and added materials." "I've been charging the same rate for 3 years and it seems to work."
None of those are pricing strategies. They're guesses. And they're the reason so many businesses do $1M, $2M, or $3M in revenue and the owner takes home $60,000 to $90,000 while working 50-hour weeks.
"I charge $85 an hour. My tech makes $28 an hour. That's $57 an hour in profit, right?"
Not even close. That $28/hour tech actually costs you $42/hour once you add payroll taxes, workers comp, health insurance, and vehicle costs. And the $43 that's left after labor has to cover your rent, office staff, insurance, marketing, software, your own salary, and everything else it takes to run the business. When you do the real math, that "$57 in profit" is actually $6 to $12 in profit. Maybe less.
This post gives you a step-by-step financial framework for pricing your services. Not "know your value" advice. Not "research competitors." Actual math, using a real trades business example, that produces a price you can defend with numbers instead of gut feeling. If you run a trades or service business doing $500K to $10M, this is the process that separates companies with 5% net margins from companies with 18% net margins on the same type of work.
Why Competitor-Based Pricing Is the Most Expensive Mistake You Can Make
Every business has different overhead. Different labor costs. Different truck expenses. Different insurance premiums. Different efficiency levels. When you price based on what another company charges, you're inheriting their cost structure. If their overhead is 26% of revenue and yours is 38%, matching their price means you lose money on every job they profit from.
Here's a simple example. Two HVAC companies both charge $350 for a diagnostic and repair visit. Company A's fully-loaded cost for that visit (labor + burden + truck + overhead allocation + materials) is $210. That's a 40% gross margin and the job is profitable. Company B's fully-loaded cost for the same visit is $305. That's a 13% gross margin. After the overhead allocation, that job barely breaks even. Company B can't figure out why they're "busy but broke." The answer is that they're pricing based on Company A's cost structure, not their own.
The only way to price correctly is to build your price from your actual costs, layer by layer. Here's how.
The 5-Step Pricing Framework
We'll use a real example throughout: a plumbing company with 4 plumbers doing $1.5M in annual revenue. By the end, you'll have a complete pricing model you can apply to your own business this week.
1 Calculate Your Fully-Loaded Labor Cost per Hour
This is the foundation of every price you'll ever quote. Your tech's wage is just the starting point. The fully-loaded cost includes everything it takes to put that person in a truck and send them to a job site.
| Cost Component | Annual Cost | Per Hour (2,080 hrs) | Notes |
|---|---|---|---|
| Base Wages | $58,240 | $28.00 | $28/hr x 2,080 hours |
| Payroll Taxes (FICA) | $4,455 | $2.14 | 7.65% of wages |
| Workers Compensation | $5,240 | $2.52 | 9% for plumbing (varies by state and trade) |
| Health Insurance | $7,200 | $3.46 | Employer contribution |
| Vehicle / Truck Costs | $9,600 | $4.62 | Payment, fuel, insurance, maintenance |
| Tools, Phone, Uniforms | $3,600 | $1.73 | ~$300/month |
| FULLY-LOADED LABOR COST | $88,335 | $42.47 | 1.52x the base wage |
Your "$28/hour plumber" actually costs $42.47/hour. That's a 52% premium over the base wage. This number is your cost floor for labor. Any price that doesn't cover this amount on the labor component is losing money before materials, overhead, or profit are even considered.
Workers comp rates differ significantly: plumbing runs 8% to 12%, electrical 4% to 8%, HVAC 6% to 10%, roofing 15% to 30%, and construction labor 10% to 25%. Your fully-loaded multiplier will be different. The process is the same. We break down trade-specific margin benchmarks in our guides for HVAC, plumbing, and electrical contractors.
2 Calculate Your Overhead Allocation per Billable Hour
This is the step most business owners skip entirely, and it's the reason their prices are too low even when they think they've accounted for costs. Overhead is everything it takes to run the business beyond the direct cost of labor and materials: rent, office staff, insurance, marketing, software, your own salary, professional fees, and everything else that doesn't tie to a specific job.
The calculation:
Two things to note here. First, billable hours are not the same as paid hours. A plumber who works 2,080 hours per year (40 hrs/week x 52 weeks) typically bills 1,500 to 1,700 of those hours. The rest is drive time, paperwork, training, meetings, lunch, and time between calls. Using 2,080 hours instead of actual billable hours is one of the most common pricing errors. It understates your overhead allocation by 20% to 30% and makes every price you quote too low.
Second, your own salary must be included in overhead. If you pay yourself $120,000/year, that's part of the $390,000 in overhead. If you don't include your compensation, your pricing model is built on the assumption that your labor is free. It isn't. We cover how to set owner pay at every revenue level in our owner compensation guide.
Now add your fully-loaded labor cost and overhead allocation together:
Read that number carefully. Before you've added a single dollar of materials and before you've added a single dollar of profit, every hour of billable work costs your business $103.41. If you're charging $85/hour, you are losing $18.41 on every single hour of labor before materials even enter the equation. You're not "making $57/hour." You're losing money.
This is the moment that changes how every trades business owner thinks about pricing. The gap between what they thought the work cost and what it actually costs is usually $20 to $40 per hour. Across 6,400 billable hours per year, a $25/hour pricing gap is $160,000 in annual margin that was never captured. That's not a rounding error. That's the owner's entire take-home pay.
3 Set Your Materials and Parts Markup
Materials should never be billed at cost. You're purchasing them, storing them, transporting them, managing inventory, and absorbing the risk of returns and waste. That service has a value, and the standard practice is a markup of 25% to 50% depending on the category.
| Material Category | Typical Markup | Example |
|---|---|---|
| Common parts and fittings | 40-50% | $12 part billed at $17-$18 |
| Equipment (water heaters, units, panels) | 25-35% | $900 water heater billed at $1,125-$1,215 |
| Specialty or custom-order materials | 30-40% | $250 fixture billed at $325-$350 |
| Consumable supplies | Built into flat rate | Solder, tape, fittings, connectors |
A quick clarification on markup vs. margin, because these are frequently confused. A 40% markup on a $100 part means you charge $140. But your gross margin on that part is 28.6% ($40 profit / $140 price), not 40%. Markup is calculated on cost. Margin is calculated on price. When we talk about target margins elsewhere in this post, we mean margin (profit as a percentage of price), not markup (profit as a percentage of cost).
In a flat-rate pricing model, materials are bundled into the job price. The customer sees one number: "$2,800 for the water heater replacement." They don't see "$900 for the unit, $180 in parts, and $1,720 in labor." This is better for the customer (predictable price, no surprises) and better for you (your markup is invisible, your margin is protected, and you're not negotiating the cost of every fitting). If you're still billing time and materials on service work, transitioning to flat rate is the single most impactful pricing change you can make.
4 Add Your Target Profit Margin
This is the step where most pricing guides stop at "charge what you're worth." That's not a number. Here's the number.
Your target net profit margin (after all costs including owner salary) should be 15% to 20% for a well-run trades or service business. That margin is what funds your cash reserves, your growth investments, your tax obligations, and your financial cushion against slow quarters.
To build profit into your price, you need to adjust the total cost by your target margin. The formula:
The reason you divide by (1 minus margin) instead of multiplying by (1 plus margin) is that margin is a percentage of the selling price, not the cost. If your cost is $100 and you want an 18% margin, the price is $100 / 0.82 = $121.95. If you just add 18% to $100, you get $118, which produces a 15.3% margin, not 18%. It's a small difference on one job. Over thousands of jobs per year, it compounds into tens of thousands of dollars in missed profit.
If 18% feels aggressive for your current position, start at 12% and work up. The point is to choose a specific number, build it into every price, and track whether you're actually achieving it. Most businesses have never made this choice intentionally. They price based on competition and hope the margin works out. It usually doesn't, which is why the average net margin in most trades businesses is 5% to 8% instead of 15% to 20%.
Want Help Building Your Price Book from Real Numbers?
We'll calculate your fully-loaded labor cost, your overhead allocation, and your true cost per billable hour together. Then we'll build pricing that actually produces the margin you need.
→ Book My Free Cash Flow CallNo sales pressure · Just an honest look at your numbers
5 Build the Flat-Rate Price (The Complete Example)
Let's put all four layers together on a real job: a water heater replacement for our $1.5M plumbing company.
| Cost Layer | Calculation | Amount |
|---|---|---|
| Labor (2.5 hours x $42.47) | Fully-loaded labor rate x estimated job time | $106.18 |
| Overhead Allocation (2.5 hours x $60.94) | Overhead per billable hour x estimated job time | $152.35 |
| Water Heater Unit | $900 cost x 1.30 markup | $1,170.00 |
| Parts and Fittings | $85 cost x 1.45 markup | $123.25 |
| Total Cost Base | $1,551.78 | |
| Price at 18% Target Margin | $1,551.78 / 0.82 | $1,892.41 |
| Flat-Rate Price (rounded) | $1,895.00 |
Now compare that to what many plumbing companies would charge using the old method:
The gap between the old price ($1,197.50) and the cost-based price ($1,895) is $697.50 per job. That's not padding. That's the real cost of overhead and profit that the old pricing method completely ignores. If this company does 200 water heater replacements per year, that pricing gap is $139,500 in annual revenue left on the table. And the owner wonders why they can't take home more than $65,000.
"But my customers won't pay $1,895 for a water heater replacement."
Some won't. And that's okay. The customers who choose the cheapest option are usually the hardest to work with, the slowest to pay, and the least likely to become repeat customers. The customers who value quality, reliability, and professionalism will pay $1,895 without hesitation because they're paying for the complete experience: a licensed plumber, a quality unit, a warranty, and the peace of mind that it's done right. If you're losing 10% to 15% of bids because of price, your pricing is probably right. If you're winning every bid, you're almost certainly too cheap.
The Pricing Math Cheat Sheet
Here's the complete framework in one table so you can apply it to any job in your price book.
| Layer | Formula | Where to Find the Numbers |
|---|---|---|
| 1. Fully-Loaded Labor | Wage + payroll tax + workers comp + insurance + vehicle + tools | Your payroll records, insurance policies, and vehicle expense tracking |
| 2. Overhead Allocation | Total annual overhead / total annual billable hours | Your P&L statement (operating expenses section) and your billable hours report |
| 3. Materials Markup | Material cost x markup multiplier (1.25 to 1.50) | Your supplier invoices and inventory records |
| 4. Profit Margin | Total cost base / (1 - target margin) | Your strategic decision: 12% to 20% net margin target |
| = Your Price | All four layers combined | Defensible, profitable, built from your actual costs |
When to Update Your Prices
Your cost base changes constantly. Wages go up. Insurance premiums increase. Fuel costs fluctuate. Materials prices shift. A price book that was accurate 18 months ago is almost certainly underpriced today.
Update your price book at least annually
Recalculate your fully-loaded labor cost every January (or whenever raises take effect). Recalculate your overhead allocation whenever you add a significant new expense (new truck, new employee, new office). Update your materials markup whenever your supplier costs change by more than 5%. Run the complete pricing framework once per year and adjust every job in your price book.
Track your actual margins monthly to validate your pricing
Your price book is a model. Reality is messier. Jobs take longer than estimated. Materials cost more than planned. Callbacks and warranty work eat into margins. The only way to know if your pricing is actually working is to track your realized gross margin by service type every month and compare it to what the pricing model predicted. If your model says you should be at 52% gross margin on service calls but you're actually running at 44%, either the model inputs are wrong (jobs are taking longer) or the execution is off (techs are using more materials than estimated). Either way, you can't fix what you can't see.
This is one of the five financial KPIs we recommend tracking every week: gross margin by service type. It's the feedback loop that tells you whether your pricing is doing its job.
The 4 Most Common Pricing Mistakes
1. Using paid hours instead of billable hours for overhead allocation
If your tech works 2,080 paid hours but only bills 1,600, using 2,080 in your overhead calculation understates your cost per billable hour by 23%. That error flows into every price in your book, and every job is underpriced by the same 23%. Use actual billable hours. Track them. If your billable hours ratio is below 75%, that's a dispatch efficiency problem worth solving, but the pricing model needs to reflect reality, not the ideal.
2. Not including owner salary in overhead
If you pay yourself $120,000/year and don't include it in overhead, your pricing model assumes your labor is free. Every price you calculate will be too low by the amount of your compensation spread across billable hours. That's roughly $18.75/hour on 6,400 billable hours. Include your salary. You work in the business. Your time has a cost. Price accordingly.
3. Pricing materials at cost
This is money left on the table on every single job. You're buying, storing, transporting, and managing those materials. A 30% to 45% markup on materials is standard practice and expected by customers. The company that charges $900 for a water heater they bought for $900 is subsidizing the customer's equipment with their own cash. The customer doesn't know what you paid for it. They care about the total job price and whether the result is good.
4. Setting prices once and never updating them
If your last price book update was 2 years ago, your labor costs have likely increased 4% to 8% (raises, insurance premium increases), your materials costs have increased 5% to 15%, and your overhead has crept up with new software, new vehicles, and new hires. A 2-year-old price book on a $1.5M company is typically underpriced by $75,000 to $150,000 in annual revenue. That's not a rounding error. That's your financial cushion, your cash reserves, and a significant portion of your owner pay.
The Bottom Line on Pricing
Pricing is not a marketing decision. It's not a competitive decision. It's a financial decision. And the only way to make it correctly is to start with your actual costs and build up, not start with the market and work down.
- Your "$28/hour tech" actually costs $40 to $45/hour once you add payroll taxes, workers comp, insurance, vehicle costs, and tools. That's your cost floor for labor, and any price that doesn't cover it is losing money.
- Your overhead allocation per billable hour is the number most owners have never calculated. For most trades businesses doing $1M to $3M, it's $45 to $75 per billable hour. That cost exists whether you include it in your pricing or not. If you don't include it, you're just choosing not to cover it.
- Materials should be marked up 25% to 50%. You're providing a service by purchasing, storing, and installing them. Billing at cost means you're absorbing that service for free.
- Target a specific net profit margin (15% to 20%) and build it into every price. If you don't choose your margin intentionally, the market will choose it for you. The market's default is 5% to 8%.
- Update your price book annually. A price book that's 18+ months old is almost certainly underpriced. Materials, insurance, and wages have all increased. Your prices need to keep up.
That's exactly the kind of analysis we do with business owners at CEO Finance Academy. In our coaching program, we calculate your fully-loaded labor cost, your overhead allocation per billable hour, and your true cost base together, then rebuild your pricing from the ground up to produce the margins your business needs. For companies doing $3M+, our fractional CFO services include ongoing pricing audits, margin tracking by service type, and the financial modeling that connects your pricing decisions to your overall business performance.
Want to Find Out What Your Services Should Actually Cost?
Book a free Cash Flow Call. We'll calculate your fully-loaded labor cost, your overhead per billable hour, and show you exactly how much you're leaving on the table with your current pricing.
→ Book My Free Cash Flow CallFree call · No sales pressure · Just an honest look at your numbers
