Don't change how you estimate. Just make it faster. Schedule a demo →

GC Markup vs Fee: What Is the Difference and What Should You Charge?

Find scope gaps before they become your problem.

Every gap a sub leaves out lands on you. BidFlow flags uncovered scope in your estimate so you can budget it before you bid.

Markup is a percentage added to your costs. Fee is a percentage of the total project charged to the owner. A 10% markup on $1M of direct cost adds $100K. A 10% fee on the same project is calculated on the full contract value, yielding a different number. They are not interchangeable, and confusing them is how GCs leave money on the table or overbid.

In practice, many GCs use "markup" and "fee" as if they mean the same thing. Sometimes they're describing the same line item by different names. Sometimes they're compounding two separate calculations incorrectly. The difference matters most at bid time, when the math determines whether you price the work correctly or not.

The Calculations, Side by Side

Starting point: $1,000,000 in direct costs (subcontractor scope, materials, labor, general conditions).

Markup

Markup is applied to cost and added on top. A 15% markup on $1M of direct cost:

  • Direct cost: $1,000,000
  • Markup (15% of cost): $150,000
  • Total contract value: $1,150,000

The markup percentage is calculated as a fraction of cost, not contract value. The $150K represents 15% of $1M in cost, and 13.04% of the $1.15M contract value. If someone asks "what's your markup?" and you answer 15%, they may be calculating it differently than you are.

Fee

Fee is typically expressed as a percentage of the total project value and charged to the owner on that basis. On a cost-plus or CM-at-risk contract, the fee is a fixed percentage of realized costs:

  • Direct cost: $1,000,000
  • Fee (10% on total): The calculation differs by contract type (see below)

The confusion arises because "fee on total" means different things in different contract structures. In a CM-at-risk contract, the fee is typically a percentage applied to direct costs to arrive at the contract value -- which makes it mathematically identical to markup. In a lump sum bid, "fee" is often the profit and overhead margin rolled in at the end, calculated on the total bid, which is a different calculation.

Where the numbers diverge

The key difference is the denominator. Markup uses cost as the base. Fee uses total contract value as the base when expressed that way.

Same $1M of direct cost, different approaches:

Approach Rate Calculated on Dollar amount Contract total
Markup 15% $1M cost $150,000 $1,150,000
Fee (on contract value) 15% $1.176M total $176,471 $1,176,471
Fee (on cost, same as markup) 15% $1M cost $150,000 $1,150,000

If you say "I charge a 15% fee" and your client calculates that as 15% of the total contract value rather than 15% of cost, the gap on a $1M cost project is $26,471. On a $5M cost project, that gap is $132,353. Worth getting clear on which denominator you're both using.

When to Use Markup vs Fee

Use markup language when:

  • You're building a lump-sum bid internally. Markup on line items, divisions, and totals is the natural language of cost-based estimating. Apply markup to costs as you build up; the total is the contract price.
  • The contract is a hard bid with no owner visibility into your cost detail. The distinction between your cost and your price is entirely internal.
  • You're quoting change orders. Change order markup is typically listed explicitly on cost-plus and CM-at-risk contracts and is often a negotiated rate (commonly 10 to 15% on subs, 10 to 20% on self-perform).

Use fee language when:

  • The contract is cost-plus, open-book, or CM-at-risk. In these structures, the owner sees your cost detail and you earn a fee on top. Fee is the agreed-upon compensation for managing the project, separate from your costs.
  • You're discussing your profit structure with an owner or developer who expects to see the fee as a line item. Sophisticated owners on CM projects will ask what your fee is; they're asking about the fee line, not an internal markup percentage.
  • You're comparing bids where one GC uses markup language and another uses fee language. Both translate to dollars added on top of cost -- normalize to dollars before comparing.

Industry Benchmarks by Contract Type

Typical ranges for GC overhead and profit by contract structure in 2026. These are not guarantees -- actual rates depend on market, project complexity, and firm overhead structure. For full project-size and project-type benchmarks, see GC fee benchmarks 2026.

Contract type Typical markup on cost Equivalent fee on total Notes
Lump sum (hard bid) 12 to 22% 10.7 to 18% Includes contingency; GC absorbs cost risk
CM-at-risk (GMP) 6 to 10% 5.7 to 9.1% Fee fixed at GMP; shared savings typical
Cost-plus (open book) 8 to 15% 7.4 to 13% Owner sees all costs; fee is the only margin
Design-build 15 to 25% 13 to 20% Higher rate covers design risk and coordination

The "equivalent fee on total" column shows what the same dollar amount looks like when expressed as a percentage of total contract value rather than cost. This is the math that trips people up in conversations where both sides are using the same percentage but different denominators.

How Estimating Software Handles Markup and Fee

Most estimating platforms apply markup at one of three levels: line item, division/section, or total bid. The implementation matters because it changes where in the calculation chain the percentage gets applied.

Line-item markup (STACK, ProEst, BidFlow)

Markup applied individually to each line item. Common for self-perform work where markup varies by trade or scope. More granular but requires per-line maintenance if your markup structure changes. BidFlow reads your markup structure from past estimates and applies it at the same level you historically used -- if you've historically applied division-level markup, it carries that forward.

Division-level markup (Sage, STACK, ProEst)

Markup applied to a CSI division or cost category total. Common for GCs who apply different markup rates to self-perform vs. subcontracted work. Clean for bid presentation; requires clear division structure to work correctly.

Fee as a separate bid-total line (CM/cost-plus workflow)

For cost-plus and CM-at-risk work, most platforms support carrying a separate fee line that applies to the sum of direct costs. This is the "fee" model in its clearest form: costs are costs, fee is fee, they don't compound. STACK, ProEst, and Sage all support this. BidFlow reads the fee line from past estimates if it was structured that way, and applies it consistently to new bids in similar project types.

Where compounding errors happen

The most common mistake is applying markup at the line level and then applying a fee on the total that already includes markup. This compounds: $1M in cost with 10% markup becomes $1.1M, and a 10% fee on $1.1M adds another $110K (not $100K). The result is a 21% effective rate, not 20%. On large projects, this compounding can exceed $100K in unintended margin -- or unintended overbid, depending on how your client interprets the number.

Related Tools and Articles

For calculating change order markup specifically, see the change order markup calculator -- it handles the markup vs. fee distinction explicitly and produces a defensible change order breakdown. For GC fee benchmarks by project size and contract type, see GC fee benchmarks 2026. For a broader look at estimating software that handles markup and fee calculations automatically, see the buyer's guide. For the metrics that show whether your markup and fee choices are actually paying off over time, see key metrics construction estimators should track for long-term profitability.

FAQs

What is the difference between GC markup and GC fee?

Markup is a percentage applied to your costs to arrive at your price. Fee is typically a percentage charged to the owner, often expressed on a different base. When markup is expressed as a percentage of cost and fee is expressed as a percentage of total contract value, the same percentage produces different dollar amounts. A 10% markup on $1M in cost = $100K. A 10% fee calculated on the contract total works backward from the total: if costs are $1M and fee is 10% of total, the total is $1M / 0.90 = $1,111,111 and fee is $111,111.

Is markup the same as profit margin?

No. Markup and margin are two different ways of expressing the same spread. A 20% markup on cost ($1M cost, $200K added, $1.2M price) is a 16.7% gross margin ($200K / $1.2M). Neither is "profit" in the net sense -- both include overhead. Net profit on a construction project is typically 1.5 to 3% of contract value after overhead, not the full markup or margin percentage.

What is a typical GC markup percentage in 2026?

On lump-sum commercial work, markup on cost typically runs 12 to 22%, depending on project size, complexity, and market competition. On smaller projects (under $1M), markup often climbs to 20 to 30% to cover fixed project overhead. On larger projects ($15M+), markup compresses to 8 to 15% because the fixed overhead spreads across more volume. For CM-at-risk and cost-plus contracts, the fee line (which is equivalent to markup on cost) typically runs 6 to 10%.

How do I calculate markup on a construction bid?

Multiply your total direct costs by the markup rate. Direct costs ($1,000,000) times 15% markup = $150,000 in markup. Total bid price = $1,150,000. If you want to express this as a percentage of the bid price rather than cost: $150,000 / $1,150,000 = 13.04% margin. Keep track of which base you're using so conversations with owners or subcontractors use the same denominator.

Should I include contingency inside or outside my markup?

On lump-sum bids, contingency is typically built into the markup (the GC carries it and keeps any unused portion). On CM-at-risk and cost-plus contracts, contingency is usually a separate line item that the owner controls -- the fee sits on top of costs, and contingency is disclosed separately. Mixing the two produces confusing numbers when the owner asks to see the breakdown. Keep contingency as its own line on open-book contracts.

Do estimating software tools distinguish between markup and fee?

Most do, but the implementation varies. STACK, ProEst, and Sage support both line-level markup and a separate fee line for CM/cost-plus work. BidFlow reads your markup and fee structure from past estimates and applies it consistently to new bids. The risk in any platform is accidentally applying both markup on costs and a fee on the marked-up total, which compounds the rate unintentionally. Audit how your software applies each layer before sending a bid where the math matters.

What markup should I charge on subcontractor work vs. self-perform?

The spread is meaningful. GC markup on subcontractor scope typically runs 5 to 15% -- lower because the sub carries the execution risk and overhead. GC markup on self-perform work (direct labor, own equipment) typically runs 15 to 30% because the GC carries both the execution risk and the overhead. Applying a flat markup across both categories will either undercharge on self-perform or price yourself out on sub-heavy bids. Most experienced estimators run at least two markup tiers.

Get Your Markup Right Before the Next Bid

The fastest way to check your markup math is to run a past bid through BidFlow and see how the fee and markup structure compares to your actual submitted number. Discrepancies between what you intended and what the math produced are more common than most GCs expect.

Upload a past estimate. 3 free estimates to start. $199/month flat after that.

By BidFlow Editorial