Skip to content

Answers · in depth

What Markup Should a Contractor Put on Labor, Materials and Subs?

There is no correct markup percentage to copy for labor, materials or subcontractors: the right markup on each is the one that, applied to that cost, pays back the company’s own overhead and leaves the profit the owner has set, and it comes from last year’s books. Public contracts show how far the answer can differ by cost type: on extra road and bridge work paid at cost, Washington State DOT’s 2027 specifications add 29 percent to labor, 21 percent to materials and 7 to 12 percent to subcontracted work; Florida DOT’s FY 2026-27 specifications add 17.5 percent to labor, materials and equipment and 5 to 10 percent to subcontracts. Those are two agencies’ contract terms, not a market rate. This guide shows how to build each figure from the company’s own records and check it after the job.

By , founder of Lumina Business Advisory · Updated · Sources checked · Editorial standards

Markup vs. margin: the same dollars, two percentages

Free self-check · two taps · no email

Hand-off 6 of 6 · Payment → Margin

If deposits stopped today, how many days could cash cover payroll and bills?

Choose the answer that sounds like your business.

Answer it in the Self-Audit

Markup is gross profit as a share of cost; margin is the same dollars as a share of the price. A job that costs $10,000 and sells for $12,500 carries $2,500 of gross profit: a 25 percent markup and a 20 percent margin. Only the number the $2,500 was divided by changed.

Mixing them up costs money because overhead and profit targets are read off the profit and loss statement as shares of revenue, while a markup is applied to cost. Illustrative example: a hypothetical remodeler’s overhead was 18 percent of revenue last year and the owner wants 10 percent profit, so jobs need a 28 percent gross margin. Adding 28 percent to cost yields a margin of about 21.9 percent. On $2 million of work, that is about $437,500 of gross profit instead of the $560,000 planned: the $360,000 of overhead is still paid, and profit falls from $200,000 to about $77,500. A 28 percent margin takes a markup of about 38.9 percent.

The conversion is arithmetic, not a benchmark: markup equals the margin divided by one minus the margin.

  • A 10 percent margin needs a markup of about 11.1 percent.
  • A 20 percent margin needs a 25 percent markup.
  • A 30 percent margin needs a markup of about 42.9 percent.
  • A 40 percent margin needs a markup of about 66.7 percent.
  • A 50 percent margin needs a 100 percent markup, double the cost.

An estimator who marks up by 30 percent and an owner who expects a 30 percent margin are about 7 points of revenue apart on every job. Write down which one the company means.

How to calculate overhead per billable hour from the company’s own books

Overhead is what the company carries whether or not a given job happens: office and dispatch staff, the owner’s salary, rent, software, marketing, accounting, general insurance, and trucks and tools not charged to a job. Direct costs are what a job causes: field labor and its burden, materials, subcontractors, rented equipment, permits and disposal. The overhead rate is the overhead pool divided by a base that measures the work sold, both taken from the last full year of books.

  • Mark each expense line on last fiscal year’s profit and loss statement as direct or overhead, and ask the bookkeeper to split lines that hold both, such as vehicles or insurance.
  • Adjust the pool for what is already known about next year: a new lease, an added dispatcher, a new insurance premium.
  • Count billable hours: field hours that reached a job or a ticket and were charged to a customer, not the hours on payroll.
  • Divide the pool by billable hours. For work that is mostly bought in rather than self-performed, divide by last year’s total direct cost instead, for overhead per dollar of cost.

The base matters more than the decimals. Illustrative example: a hypothetical service company with 16 technicians carries $640,000 of overhead. Its technicians were paid for 33,280 hours, and 24,000 of those reached a ticket, so overhead is about $26.67 per billable hour. Divided by paid hours it looks like $19.23, and prices built on that figure recover about $461,500 of the $640,000, roughly $178,500 short, while every estimate appears to cover overhead.

What a fully burdened labor rate includes

A fully burdened labor rate is what one billable hour of a field employee costs the company: the wage plus everything the company pays because that person is on payroll, divided by the hours that reach a customer. Some definitions fold overhead in as well; keeping it out lets the burden be checked against payroll and the overhead against the profit and loss statement.

Public owners list the same pieces when they pay for extra work at cost. Florida DOT’s Table 4-1 limits payment for burden to FICA and FUTA/SUTA at the rates established by law, medical insurance, holiday, sick and vacation benefits, retirement benefits, workers’ compensation “adjusted by Contractor’s actual experience modification factor,” per diem and general liability insurance. Washington State DOT’s labor list asks for much the same, including the company’s present Medical Aid and Industrial Insurance premiums, Washington’s workers’ compensation.

On federal payroll taxes, IRS Publication 15 for 2026 sets the employer’s Social Security tax at 6.2 percent of wages up to that year’s wage base, and Medicare at 1.45 percent with no wage base limit. Federal unemployment tax is 6.0 percent of the first $7,000 of each employee’s wages, less a credit of up to 5.4 percent for state unemployment tax paid in full and on time, which leaves 0.6 percent; the Department of Labor puts that at a maximum of $42 per employee per year where no credit reduction applies. Each state sets its own unemployment tax rate and wage base, and the payroll provider or CPA confirms the company’s rates. Build the figure once a year for each crew position:

  • Annual wages, including overtime premium and paid holidays, vacation and sick time.
  • Employer Social Security, Medicare and unemployment taxes, from the payroll register.
  • Workers’ compensation at the policy’s class-code rates and experience modification.
  • Health coverage, retirement contributions, per diem and any allowances the company pays.
  • Billable hours for the same year: paid hours minus paid leave, shop time, training, meetings, drive time that never reached a ticket, and return trips billed at zero.

Illustrative example: a hypothetical technician earns $32 an hour for 2,080 paid hours, or $66,560. Employer Social Security adds $4,126.72 and Medicare $965.12; federal unemployment after the full credit adds $42; a hypothetical state unemployment rate adds $400; workers’ compensation adds $3,900, health coverage $8,400 and a 3 percent retirement match $1,996.80. The year costs $86,390.64. Of the 2,080 paid hours, 1,500 reached a ticket. The burdened cost is about $57.59 per billable hour, about 1.8 times the wage, and the $26.67 of overhead from the section above brings the company’s cost to about $84.26 per billable hour before any profit.

Should materials and subcontractors carry the same markup as labor?

Not by default, because each cost type uses overhead differently. Field labor is what the trucks, tools, supervisors and dispatch exist to support. Materials use purchasing time, storage, returns and the cash tied up between the supplier’s invoice and the customer’s payment. A subcontractor’s price already carries the sub’s own overhead and profit; what the sub’s work uses is scheduling and coordination.

Both public owners above mark up subcontracted work separately from the contractor’s own labor and materials, and both pay a lower markup on a subcontract as it grows. Washington State DOT pays 12 percent on a subcontractor’s amounts up to and including $50,000, 10 percent between $50,000 and $200,000 and 7 percent at $200,000 and above, figured separately for each subcontractor on each force account item. Florida DOT pays 10 percent on the first $50,000 of a subcontract and 5 percent on any amount over it, and its clause allows the greater of the 17.5 percent mark-up or a daily overhead formula that counts only the calendar days of time extension beyond the first ten. Both are written for public road and bridge work and show a structure, not the number for a kitchen remodel or a furnace replacement. This is a plain reading of the specifications, not legal advice.

For a private company, the structure comes from its own overhead. If overhead follows field hours, as it does in the hourly figure above, one markup on total cost overcharges material-heavy work and under-recovers on labor-heavy work. Illustrative example, with the figures above rounded to $58 of burdened labor and $27 of overhead per billable hour, and a hypothetical flat 40 percent markup on all cost:

  • Job A, mostly equipment: 20 hours of labor ($1,160) and $8,000 of materials, $9,160 of cost. The markup adds $3,664. The overhead those 20 hours use is $540, leaving $3,124 for profit, on a price a competitor who marks materials up less can beat.
  • Job B, mostly labor: 80 hours ($4,640) and $1,000 of materials, $5,640 of cost. The markup adds $2,256. The overhead those 80 hours use is $2,160, leaving $96.

The fix is to split the pool: costs that follow field hours go into the hourly rate, and the costs of buying, storing and coordinating, such as a purchasing clerk, the warehouse and project coordination time, go into a separate handling rate on materials and subcontracts, figured from last year’s spend on them. FAR 31.203, written for government contracts and quoted here only as a checklist, asks for indirect costs accumulated “by logical cost groupings,” each allocated “on the basis of the benefits accruing” to the work, and notes that the method may need revision after a significant change in “the extent of subcontracting.” Whatever the split, write each markup into the contract before the job starts, so a change order or an allowance overage is priced by a rule the customer has already signed.

How a flat-rate price book builds overhead into each task

A flat-rate price book sells each task at a set price, and overhead is inside the price because every task carries hours. A task’s price is its book hours times the cost of a billable hour, burden and overhead together, plus its material list at cost, divided by one minus the target profit margin. Because the burdened rate spreads a full year’s pay over billable hours only, the paid hours that never reach a ticket are already inside each task. Time and materials, the other way to charge, needs the same two hourly figures behind its posted rate.

Illustrative example: a hypothetical task takes 1.5 hours by the company’s own tickets and uses $140 of materials. At $85 per billable hour, the $58 and $27 above, labor and overhead come to $127.50, for a cost of $267.50. Priced for a 15 percent profit margin, the task sells for $267.50 divided by 0.85, about $315. Any separate markup on materials is a pricing choice the owner writes into the book next to the hourly figures.

Starting one takes no new software. A spreadsheet holds the first version:

  • Compute burdened labor cost and overhead per billable hour from last year.
  • List the tasks that appear most often on last year’s invoices, most frequent first. They are the first pages of the book.
  • For each task, take the hours from the company’s own tickets, the middle of the range rather than the fastest technician’s time, and a material list at the supplier’s current cost.
  • Apply the formula, and keep the hours and costs behind each price on its row, so the price can be rebuilt when an input moves.
  • Review material costs when supplier prices change, and the hourly figures once a year or when wages, insurance or headcount change.
  • Put the task code on every ticket, so actual hours can be read against book hours.

A task whose material list is shorter than what the job uses gives parts away on every ticket, and a task whose book hours are short under-recovers overhead every time it is sold. Both show up only in the check after the job.

How to check after the job whether the markup held

The markup held if two things are true: each job earned the margin it was priced for, and the company sold enough billable hours to recover the overhead the rate assumed. The first is read job by job; the second only month by month.

  • At close, whoever invoices the job fills one row: price billed with signed change orders, estimated and actual labor hours, materials and subcontract cost, and the planned and realized gross margin.
  • Each week, the estimator or service manager reads the jobs that landed more than a set number of points under plan, a threshold the owner picks once, and writes the reason next to each: hours over, materials over, sub price changed, extra work not billed, or a return trip.
  • Each month, the bookkeeper multiplies billable hours sold by the overhead rate and sets that figure next to the overhead actually booked.
  • Once a year, and after a change in headcount, wages, insurance or the share of work subcontracted, recompute both hourly figures and the handling rate.

Illustrative example: the hypothetical company above plans 2,000 billable hours a month, which at $26.67 recovers about $53,340 against roughly $53,333 of monthly overhead. In a month with 1,650 billable hours, its prices recover about $44,006, about $9,300 short, even if every job closed at its planned margin. No job row shows that gap. Return trips nobody prices and extra work agreed on site without a change order show up in the job rows instead, as margin that slipped between the estimate and the invoice.

When raising the markup is not the fix, and where the Review fits

A higher markup does not close a leak that sits after the price: extra work built without a signed change order, hours past the estimate, parts that never reach the ticket, return trips nobody bills. Those take the same dollars at any markup. If the books do not separate direct costs from overhead, start with the bookkeeper or CPA, not the price list. The markup itself stays the owner’s pricing decision, and the company’s own win rate on quotes says more about what the market will pay than any published figure.

For a company at $1 million a year and up, where the estimator, the field and the office are different people, the Revenue Review counts this under the Payment → Margin hand-off. From read-only exports of the profit and loss statement, payroll, the job or dispatch records, supplier and subcontractor invoices and the invoice register, it rebuilds overhead per billable hour, the burdened labor cost, and planned against realized margin by kind of work where the records support it, and ends in a written report that prices each gap as a monthly dollar figure. It sets no prices and contacts no customer. It takes two weeks.

The arithmetic above can be done in-house in an afternoon with last year’s books, and for a company whose rows already line up, that is the whole job. If not, the next step is a free 20-minute call, where we say whether the Review is worth it for this company, including when it is not.

Before any next step

What should you do next?

Fix it yourselves.
If the cause is clear, it lives inside one process, and one person can own it — take the play from this page and run it. That outcome is fine with us; it is why the play is published in full.
Order one bounded build.
If the fix is known but needs configuration or integration inside your stack — a cadence wired into your own system, an alert, a handoff — scope that one build, with us or with anyone you trust. The six systems we build show what bounded looks like.
Start with the Review.
If the causes are debatable, the problem crosses departments or systems, or the economics are unclear — diagnose before anyone builds. The Revenue Review: $4,500 fixed, two weeks, computed from your own records. Read a sample finding before you decide — free, no email.

Asked right after

What markup should a general contractor put on subcontractors and materials?
There is no neutral published figure for private work; the defensible markup is the one built from the company’s own overhead and profit target and written into the contract before the job. For comparison, on extra road and bridge work paid at cost, Washington State DOT pays 21 percent on materials and 7 to 12 percent on each subcontractor’s work depending on its size, and Florida DOT pays 17.5 percent on materials and 10 percent on the first $50,000 of a subcontract, 5 percent above it. Those are contract terms for public work, not market rates.
How do I add overhead to each job’s price?
Divide last year’s overhead by last year’s billable hours, the hours that reached a customer rather than the hours on payroll, and add that figure to every hour priced. For work that is mostly materials or subcontracts, add a separate handling rate on those costs instead of relying on hours alone. Then turn cost into price with the margin formula: price equals cost divided by one minus the profit margin.
How do you calculate a fully burdened labor rate?
Add up one employee’s year: wages including paid leave, employer Social Security and Medicare, federal and state unemployment tax, workers’ compensation, health coverage, retirement and any per diem. Divide by that employee’s billable hours for the same year. For 2026, IRS Publication 15 sets the employer’s Social Security rate at 6.2 percent of wages up to the wage base and Medicare at 1.45 percent.
How do I start an HVAC price book that actually covers overhead?
Compute burdened labor cost and overhead per billable hour from last year’s books, list the tasks that appear most often on last year’s invoices, and price each one as its book hours times both hourly figures, plus its material list at cost, divided by one minus the target profit margin. Put task codes on tickets so book hours can be checked against actual hours.
What should a plumbing company’s gross margin on labor be after overhead?
High enough to cover the company’s own overhead as a share of labor revenue plus the profit the owner wants; we found no government or other primary source that publishes a target. For example, a hypothetical company whose overhead equals 30 percent of its labor revenue and that wants 10 percent profit needs a 40 percent gross margin on labor, which takes a markup of about 66.7 percent on burdened labor cost.

Sources

The next step

Bring us the process that keeps getting stuck.

A 20-minute conversation about the workflow, the teams and the systems involved — and a straight answer on whether The Revenue Review is the right next step. If it is not, we say that on the call.

A real person answers or calls you back the same business day.

Free self-check · 2 taps