Most contractors price by adding up the job's costs and putting a percentage on top. That works if the percentage is right. Often it was set years ago, and nobody's checked it against what the office, the insurance and the trucks cost now.
Here's how to find the number your prices actually need to clear.
Find your real overhead rate
Overhead is everything that isn't a cost of a specific job:
- Office staff, and the owner's pay if it isn't charged to jobs
- Insurance not charged to jobs
- Rent, the yard and utilities
- Trucks and equipment that aren't charged to jobs
- Software, phones, accounting and legal
- Marketing
Pull last year's profit and loss statement. Add up the overhead, and divide by last year's revenue.
Overhead rate = total overhead ÷ total revenue
Say you did $2,000,000 in revenue and overhead came to $360,000. Your overhead rate is 18%.
If you've been assuming 12%, every price you've sent has been 6 points thinner than you thought.
Set the margin every job has to clear
Decide what net profit you need the business to make. That's your call. It has to pay for the risk you take, the equipment you'll replace and the bad year you'll eventually have.
Required gross margin = overhead rate + target net profit
With 18% overhead and a 10% target, the margin floor is 28%.
Every job has to reach that on its own direct costs: material, crew labor with burden, equipment, trucking and subs.
Turn cost into price
Price = direct cost ÷ (1 − required margin)
A job with $10,000 of direct cost at a 28% margin: $10,000 ÷ 0.72 = $13,889.
Markup is a different number. Price = cost × (1 + markup) uses markup on cost. To get a 28% margin you need a markup of about 38.9% (28 ÷ 72). Adding "28%" to your costs only gets you a 21.9% margin.
| Margin you need | Markup on cost that gets you there |
|---|---|
| 20% | 25% |
| 25% | 33.3% |
| 30% | 42.9% |
| 35% | 53.8% |
If your estimating tool or spreadsheet asks for a markup, convert first: markup = margin ÷ (1 − margin).
When a price comes in under the floor
Sometimes you'll want the job anyway: to fill a slow week, to get in with a property manager, or because a plant price change squeezed an old proposal. That's a business decision. Make it knowing the number, not by accident.
Watch for these, which quietly push jobs under the floor:
- Labor hours that run over the estimate on the same kind of job, every time
- Material overruns from a waste allowance that's too low
- Change orders not written, or written and never billed
- Equipment transport and setup left off small jobs
Check it every year
- Recalculate the overhead rate from the new P&L each winter.
- Update plant prices, sealer prices and wage rates before the season starts.
- Look at finished jobs against their estimates, by type of work. When the same line runs over on every job of one type, that's the estimate, not bad luck.
Related articles
- How to price sealcoating per square foot
- QuickBooks Online for paving contractors: accounts, jobs and 1099s
- Marketing a paving business: Google, reviews and referrals
Pavr is estimating and job software for paving, sealcoating, striping and concrete contractors. Enter your overhead and profit targets once, and estimates start from the markup they add up to. Try it free →