Markup vs Margin in Construction: A Pricing Sheet Built With AI

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Markup vs Margin in Construction: A Pricing Sheet Built With AI.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Markup vs Margin in Construction: A Pricing Sheet Built With AI.

You need a 25% markup on cost. Price is cost divided by 0.8 (one minus the margin), not cost times 1.2, because a 20% markup earns only a 16.7% margin. In a quote, total the job's direct costs, divide by 0.8 and recheck the margin from price and cost. That 20% must cover overhead as well as profit.

Markup is profit as a share of cost; margin is profit as a share of price. Use one when you mean the other and every job earns less than planned, by a gap that widens as the target rises. The two convert both ways: margin equals markup divided by one plus markup, and markup equals margin divided by one minus margin.

Follow me on Instagram@sagnikteaches

The figures from here on belong to an illustrative six-person building firm, made up but consistent from a single job to the year's accounts. When ChatGPT or Excel's Copilot builds the sheet, expect the first error to be the markup formula sitting under a margin label; a six-row test catches it in a minute.

Connect on LinkedInSagnik Bhattacharya

Why a 20% markup is not a 20% margin

Start with $100 of cost. Add 20% and the price is $120, so the profit is $20. But $20 is only 16.7% of $120, which is the margin. To earn $20 for every $100 of price, the price must be $100 divided by 0.8, which is $125. The profit is then $25 on a $100 cost: a 25% markup. Margin divides by the bigger number (price), so the same profit looks smaller as a margin than as a markup.

Subscribe on YouTube@sagnikteaches
Target marginMarkup needed on costPrice from $10,000 of cost
10%11.1%$11,111
15%17.6%$11,765
20%25.0%$12,500
25%33.3%$13,333
30%42.9%$14,286
35%53.8%$15,385
40%66.7%$16,667
50%100%$20,000

Read it from the bottom to see the damage. A firm that "adds 50%" to every cost earns a 33.3% margin, not 50%. Adding 30% earns 23.1%, adding 40% earns 28.6%, and adding 15% earns 13.0%. The gap grows with the number, which is why the mistake hides on small jobs and bites on large ones.

The Complete Excel Course with AI Integration thumbnail

The Complete Excel Course with AI Integration

From formulas and pivot tables to Power Query, DAX, VBA and AI with Copilot, ChatGPT and Claude — hands-on from the first lesson.

By Sagnik Bhattacharya and Virginia Thorn, Primetime Emmy Award winner

Buy now

One kitchen extension priced both ways

Here is a job for the illustrative firm: a rear kitchen extension with these direct costs, meaning costs that belong to this job alone.

Direct cost lineAmount
Own labour (crew wages including payroll costs)$18,400
Materials$21,300
Subcontractors (electrics and plumbing)$9,600
Skip hire, plant and permits$1,700
Direct cost$51,000

Priced for a 20% margin, the quote is $51,000 divided by 0.8, which is $63,750. Gross profit is $12,750, and that is a 25% markup on cost. Priced by multiplying cost by 1.20, the quote is $61,200. Gross profit is $10,200, and the margin is 16.7%. The shortfall is $2,550 on one job, from a quote that looks like a 20% job to everyone who reads it.

The next section shows that this job carries $7,650 of the firm's overhead. After it, the correct price leaves $5,100 of net profit and the wrong price leaves $2,550. A rounding-looking mistake just halved the profit on the job.

Overhead: what a 20% margin has to pay for

Overhead is every cost that belongs to the business rather than one job: office and storage, vehicles and insurance, software, admin wages, tools, and your own time when you are not on site. Pay yourself a fair wage for site hours as labour on the jobs, not as profit, or your margin target will quietly be covering your salary.

Take the illustrative firm's year. Revenue was $900,000 and direct costs across all jobs were $720,000, so gross profit was $180,000, which is 20% of revenue. Overhead was $108,000, which is 12% of revenue and 15% of direct cost. That leaves $72,000 of net profit, or 8%. The rule that follows is short: the gross margin you must quote equals overhead as a share of revenue plus the net profit you want.

Overhead (share of revenue)Net profit targetGross margin to quoteMarkup on direct cost
10%8%18%22.0%
12%8%20%25.0%
15%8%23%29.9%
18%10%28%38.9%
22%10%32%47.1%

That is why "20%" cannot be a universal target. A firm with 12% overhead and an 8% net goal needs exactly the 20% in our example. A firm whose overhead is 18% of revenue and wants 10% net needs 28%, and quoting at 20% would leave it with a 2% net profit. Your own overhead share is a number from your accounts, so work it out before you choose the target. Recalculate every quarter: a quiet quarter pushes overhead up as a share of revenue.

There is a second way to reach the same price, and it makes a good cross-check. Add overhead to the direct cost as a share of cost, then add the net profit on the price.

StepCalculationResult
Direct costFrom the cost lines$51,000
Overhead carried by the job15% of direct cost$7,650
Cost including overhead$51,000 + $7,650$58,650
Price for an 8% net margin$58,650 divided by 0.92$63,750

Same price, $63,750, from a different road. If your two routes disagree, one of the percentages was calculated on the wrong base, and that is usually where a margin leak starts. A related trap is the "10 and 10" habit of adding 10% for overhead and then 10% for profit. Compounded, that is 1.10 times 1.10, a 21% markup, which earns a 17.4% margin. Added together as shares of cost, it is a 20% markup, which earns 16.7%. Neither reaches a 20% margin.

The pricing sheet: inputs, cost lines and four checks

A good sheet is boring and hard to break. Keep the inputs at the top, one row per cost line, and checks that recompute margin from the price they produced. Here is a layout that fits on one screen (cell addresses are an example; shift them if your sheet differs).

CellHoldsFormula
B2Overhead as a share of revenue (12%)Typed in
B3Net profit target (8%)Typed in
B4Gross margin to quote=B2+B3
B5Markup that equals it=B4/(1-B4)
C9 to C13Direct cost per lineTyped in
D9 to D13Margin for that line=$B$4 by default; overwrite per line
E9Price for the line=IF(OR(D9<0,D9>=0.6),"Check margin",C9/(1-D9))
F9Margin check=IF(ISNUMBER(E9),(E9-C9)/E9,"")
C14, E14Totals=SUM(C9:C13) and =SUM(E9:E13)
F14, G14Blended margin and markup=(E14-C14)/E14 and =(E14-C14)/C14
B16 to B18Overhead carried, net profit, net margin=E14*B2, =E14-C14-B16, =B17/E14

The four checks are the margin column F, the blended figure in F14, the guard inside E9 that refuses margins below zero or at 60% and over, and the net margin in B18, which should land on your 8%. Round the final price once, at the end, to the nearest $50, and never round individual lines. For the wider job-costing picture, our tutorial on building a job costing sheet in Excel with AI shows how actual costs feed back in.

Asking ChatGPT for the sheet, and the mistake it makes first

A chat assistant is good at writing the formulas and fast at laying out a sheet. ChatGPT Work, on Plus and above, can produce spreadsheet files, though OpenAI's help page says file creation depends on your plan, workspace and file type while it rolls out; an ordinary chat can always write formulas for you to paste. Either way, say which maths you want in plain words, because "price at a 20% margin" is a phrase that invites the wrong formula.

Build an Excel pricing sheet for a small building firm. Use margin, not markup: price = cost / (1 - margin).
Inputs at the top: overhead as a share of revenue, net profit target, and a gross margin to quote equal to the two added together.
Then five cost lines, each with a type, a description, a direct cost and a margin that defaults to the quoted margin but can be overwritten.
For each line show the price. Add a check column that recalculates margin from the price and the cost. Add a guard so a margin below 0% or at 60% or more shows "Check margin" instead of a price.
Totals row with blended margin and the equivalent markup. Below it show overhead carried by the job, net profit and net margin.
Give formulas in A1 notation with the cell each belongs in, and one line explaining each. No named ranges, no macros.

The first answer is usually close. Here is an illustrative extract of the kind of reply that comes back:

B4   Gross margin to quote    =B2+B3         Adds the overhead share and the net target.
B5   Equivalent markup        =B4/(1-B4)     Converts the margin to a markup on cost.
E9   Price at target margin   =C9*(1+D9)     Applies the margin to the line's cost.
F9   Margin check             =(E9-C9)/E9    Recalculates margin from the price.

The failure is in the E9 line: the column is labelled "Price at target margin", but its formula is =C9*(1+D9). That is the markup formula. With D9 at 20% it gives $61,200 on a $51,000 cost and nobody notices unless a check column recomputes the margin and shows 16.7%. The fix is a one-cell change to =C9/(1-D9). It is common because "add 20%" is how people talk, not because the assistant is careless, so always write the formula in the prompt.

Six tests to run before the sheet prices a real job

Input costMargin typedPrice should beMargin check should show
$10020%$125.0020.0%
$10025%$133.3325.0%
$10050%$200.0050.0%
$25020%$312.5020.0%
$100100%Check marginblank
$10020 (typed without the percent sign)Check marginblank

The last two rows matter as much as the first four. A margin of 100% would mean dividing by zero, and typing 20 instead of 20% would produce a negative price. The guard turns both into a visible warning. Keep the test table on a second tab so the next person who edits the sheet can rerun it in a minute.

Doing it in Excel with Copilot instead

If your Microsoft 365 plan includes Copilot, the side pane can add the columns itself. Check that the Copilot button is on your ribbon: Microsoft's page says that if you do not see it, it might not be included with your subscription or may be switched off by your organisation's settings. The pane has three modes: Allow editing (the default), Plan, which shows a plan for you to confirm before it acts, and Chat only, which analyses without changing the workbook. Do not build the sheet around the old COPILOT worksheet function: Microsoft retired it on 14 September 2026, and cells that recalculate now show #NAME?.

My routine is to save a copy first, ask in Chat only to explain the formulas already in the sheet, then switch to Allow editing for the change itself.

In the table starting at row 8, add a column called Price that equals Direct cost divided by (1 minus Margin) on each row, and a column called Margin check that recalculates margin as (Price minus Direct cost) divided by Price. Show "Check margin" instead of a price if Margin is below 0 or 0.6 or higher. Do not change any existing column.

Copilot edits the workbook with Excel's own features, so what it produces stays editable and you can read each formula. That is a good reason to prefer it for edits to a sheet you already own, and a chat assistant for drafting a sheet from nothing. The tests above apply to both. Our ChatGPT and Excel guide goes deeper on prompting for formulas.

Different margins for labour, materials and subcontractors

One margin for the whole job is simple, and it is not the only choice. Many firms take more on their own labour, where their skill and scheduling sit, and less on pass-through materials and subcontractors, where the customer can compare prices. Using the extension job:

LineDirect costMarginPrice
Own labour$18,40030%$26,286
Materials$21,30015%$25,059
Subcontractors$9,60010%$10,667
Skip hire, plant and permits$1,70015%$2,000
Total$51,00020.3% blended$64,011

The blended margin is 20.3% (a 25.5% markup on cost), a touch above the single-margin price of $63,750. The method works because each line uses the same divide-by-one-minus formula. A thin margin on a subcontractor you must manage, who may fail or slip, is still your risk, so price a contingency line separately instead of hoping the margin absorbs it. On one big purchase the difference is plain: a $4,200 window package at a 25% margin is $5,600, while a 25% markup gives $5,250, and the $350 gap is a margin leak on a single order. For small purchases, our handyman material markup calculator tutorial uses the same arithmetic on a smaller scale.

Putting the 20% into the quote the client reads

Whether you use one margin or a different one per line, the client never sees cost, markup or margin. They see prices, so the margin has to sit inside each line before anything leaves the sheet. Price every line with its own divide-by formula, round the total once, and copy only the price column into the quote document. With the single 20% margin, the extension's quote reads like this (illustrative):

Quote lineCost on your sheetPrice the client sees
Building work by our own team$18,400$23,000
Materials supplied and fixed$21,300$26,625
Electrical and plumbing work$9,600$12,000
Skip hire, plant and permits$1,700$2,125
Total$51,000$63,750

The middle column stays on your internal tab. Three habits keep the margin intact once the quote is out. Do not add a line called "overhead" or "profit", because a visible line invites the client to negotiate it away; the exception is a cost-plus contract, where the fee is agreed openly. Save the costed sheet under the quote number, so a variation six months later is priced from the same base. And when a client asks for a materials breakdown, give quantities and specifications rather than your supplier prices, because a client who sees $21,300 of materials quoted at $26,625 will ask about the $5,325 gap instead of the kitchen.

Where the margin leaks after the quote

A correct sheet can still lose money in the weeks after it goes out, and three leaks account for most of it.

Discounts. Five per cent off the $63,750 quote is $3,187.50. The new price of $60,562.50 leaves $9,562.50 of gross profit instead of $12,750, so the margin drops to 15.8% and gross profit falls by a quarter. The rule is that a discount removes a share of gross profit equal to the discount divided by the margin: 5% divided by 20% is 25%. At a 10% margin the same 5% discount would remove half. Offer a change of scope, such as dropping an item, before you offer a lower price.

Variations priced from the wrong formula. A client adds an en-suite that costs you $2,400 more. At the 25% markup that gives a 20% margin, the variation is priced at $3,000. Multiply by 1.20 instead and it comes out at $2,880, which is $120 short. Twenty variations a year at that gap is $2,400 of profit gone with no argument from anyone. Use the same sheet for variations as for the main quote; our tutorial on pricing variations and change orders with AI shows how to draft the paperwork.

Rounded and padded numbers. Rounding every line up looks harmless but hides the margin you think you are earning. Round the final price once, and keep any contingency as a labelled line with its own margin, so you can tell later whether it was used.

Checking last year's jobs against the sheet

Before you trust the sheet for the next quote, run last year's closed jobs through the margin formula. The aim is to find out what your old method really earned.

  1. Pull ten closed jobs with the quoted price and the final direct cost (labour, materials, subcontractors, plant).
  2. For each, calculate the margin as price minus cost, divided by price. An assistant can add the column in a minute; check two rows by hand.
  3. Mark every job below your target and note the trade, the size and who the customer was.
  4. Look for the pattern, such as jobs where subcontractors were over 40% of cost, or quotes written in a hurry.
  5. Adjust margins by cost type in the sheet, not by pushing the whole target up.

Here is how three of them might read (illustrative).

JobPriceFinal direct costMargin earnedAgainst a 20% target
Loft conversion$48,000$40,30016.0%Short by 4.0 points
Bathroom refit$14,500$11,10023.4%Ahead by 3.4 points
Garage rebuild$27,800$23,60015.1%Short by 4.9 points
All three$90,300$75,00016.9%Short by 3.1 points

If the loft and garage quotes were both built by "adding 20%", the formula alone explains most of the gap: a 20% markup earns 16.7% even when costs hold, and these two came in at 16.0% and 15.1%, so costs ran a little over as well. The bathroom, quoted with a different habit, beat the target. That kind of split tells you which part of the old method to keep. For a full walk-through of profit by job, see our tutorial on finding which construction jobs actually made money, and for a trade-specific version of this check, the HVAC markup and margin check on past jobs.

Four rules to pin above the sheet

  1. Say "margin" or "markup" every time, in the quote notes and out loud. If a colleague says "add 20", ask which.
  2. For margin, divide by one minus the margin. Multiplying is for markup.
  3. Take overhead as a share of revenue from your own accounts, and refresh it each quarter.
  4. Keep the test table on its own tab and rerun it after every edit, whether you or an assistant made it.

Markup, margin and overhead questions from builders

Is a 20% margin enough for a construction business?

It depends on your overhead. The margin you need is overhead as a share of revenue plus the net profit you want. At 12% overhead and an 8% net target that is 20%, but at 18% overhead the same target needs 26%. Treat 20% as a number to test against your own books, not a standard to copy.

What are the formulas to convert margin and markup?

Markup equals margin divided by one minus margin, so 20% margin is 25% markup. Margin equals markup divided by one plus markup, so a 25% markup is a 20% margin. Price from cost and margin is cost divided by one minus margin. In Excel, with cost in C9 and margin in D9, price is C9/(1-D9).

Should sales tax sit inside my margin calculation?

No. Work out margin on the price before any sales tax or similar tax, because that tax is collected for the tax authority and is not income to you. Add it as a separate line at the bottom of the quote so it never distorts the margin check column or the overhead share.

Can I trust ChatGPT or Copilot to do the arithmetic?

Trust them to write formulas, not to be the calculator. Ask for formulas you can see in cells, then test the sheet with three cases whose answers you know, such as $100 of cost at 20%, 25% and 50% margin. Assistants often reach for the markup formula when you say margin, and the check column catches it.

Further reads

Sources: Microsoft Support pages for Copilot in Excel (modes) and the retirement of the COPILOT function, OpenAI notes on ChatGPT Work producing spreadsheets, read in early November 2026. Margin and markup arithmetic is standard; every dollar figure in the worked examples is illustrative.

Want your pricing sheet checked against real jobs?

On a 1:1 call we can take your last ten closed jobs, work out the margin each really earned, and build a sheet your estimators can use without re-learning the formulas every time.

Book a 1:1 call with me