You billed a client $2,475 for a project. Did you make money on it?
Let’s Find Out
Most people answer this with revenue, because revenue is the number that’s easy to find. But a project’s profit depends on what it cost you to deliver, and almost nobody has that number sitting anywhere convenient. Here’s the method.
The formula
Profit = Revenue − Cost
Margin = Profit ÷ Revenue
Simple. The difficulty is entirely in getting an honest Cost.
Step 1: Find your fully-loaded cost rate
An employee costs more than their salary. The real figure adds payroll taxes, benefits, equipment, software, and a share of overhead like rent and admin time. A common rule of thumb is salary plus 25–40%, depending on how much overhead you allocate.
Say a developer earns $110,000. Add $38,500 in taxes, benefits, and allocated overhead, and the fully-loaded cost is $148,500/year.
Now divide by available hours rather than calendar hours. A year has 2,080 working hours; subtract holidays and PTO and you’re realistically at 1,920.
$148,500 ÷ 1,920 = $77.34/hour
Call it $77. That’s the cost rate: every hour this person works costs you $77, whether or not you bill it. (The examples below round to the dollar.)
Step 2: Count all the hours, billable or otherwise
This is where most calculations go wrong.
Suppose the project took 20 hours total, of which 16.5 were billable. The other 3.5 went to scoping calls, a scrapped revision, and writing the handoff doc. Real work on the project, done for free.
If you cost only the billable hours you get roughly $1,270, and a margin that looks great. But you paid for all 20:
Cost = 20 × $77 = $1,540
Unbilled time still costs you. It comes straight out of the project’s margin.
Step 3: Do the math
Revenue 16.5 hours × $150/hr = $2,475
Cost 20 hours × $77/hr = −$1,540
─────────────────────────────────────────
Profit $935
Margin $935 ÷ $2,475 = 38%
Now hold the billable hours at 16.5 and let the total climb to 26. The client is invoiced exactly the same $2,475, but cost rises to $2,002 and margin falls to 19%. Same invoice, roughly half the profit. The invoice looks identical either way, which is exactly why this is worth measuring.
Is 38% good?
It depends entirely on what you put in the cost rate, which is why published industry benchmarks help so little here: you have no idea what the other company loaded into theirs.
Work out your own floor instead. Add up the annual costs that stayed outside the cost rate: unallocated rent, software, admin salaries, sales time, your own unbilled hours. Divide by expected annual revenue:
Unallocated overhead $60,000 ÷ expected revenue $500,000 = 12%
That 12% is your break-even margin. A project below it loses money once the company’s real costs are counted, however healthy the project margin looks in isolation. At 38%, this project clears the floor by 26 points. At 19% it clears it by 7, which is thinner than it sounds once a single project runs over.
Run this once a year and you’ll have a floor that fits your business instead of someone else’s.
Doing this in a spreadsheet
For a handful of projects, a spreadsheet works. Set up these columns and fill in A–E by hand:
| A | B | C | D | E | F | G | H | |
|---|---|---|---|---|---|---|---|---|
| 1 | Project | Billable hrs | Rate | Total hrs | Cost rate | Revenue | Cost | Margin |
| 2 | Meridian Rebrand | 16.5 | 150 | 20 | 77 |
Then paste these into F2, G2 and H2 and fill down:
F2: =B2*C2
G2: =D2*E2
H2: =IF(F2=0, "", (F2-G2)/F2)
Format column H as a percentage. The IF guard keeps the sheet clean on rows
still waiting for data.
The cases the simple version misses
More than one person on the project. Cost rates differ by salary, so you have to split the hours by person and sum. Same project, two people:
Senior 12 hours × $77 = $924
Junior 8 hours × $52 = $416
──────────────────────────────────
Cost 20 hours $1,340
Same 20 hours, same $2,475 invoice, but margin is 46% instead of 38%, purely from who did the work. A single blended rate hides your best and worst projects for exactly this reason.
Contractors. Their cost rate is simply what you pay them per hour. Skip the loading for taxes, benefits, and PTO. Add overhead only if you allocate some to them.
Fixed-fee projects. Revenue is the agreed fee, full stop. Cost is still total hours × cost rate, so margin falls with every hour you spend, and the invoice stays the same however long the work takes. Fixed-fee work is where hour-counting matters most and gets done least.
When the spreadsheet stops working
The calculation is easy. Keeping it current is the work, because it depends on timesheet data that changes daily.
For hourly work, that’s what Fini does. It keeps a cost rate for each person alongside the project’s billing rate, costs every hour logged (billable or otherwise), and counts revenue only on the billable ones. That’s Steps 1 through 3 exactly, applied continuously, with profit and margin broken out by project, client, and person instead of by spreadsheet row. Fixed-fee projects work differently: the fee is billed through invoicing rather than derived from hours.
Everything’s included at one flat per-seat price, with a 14-day money-back guarantee — see pricing.
The bottom line
The math takes a minute in any spreadsheet. Try it on your last three projects. One of them usually surprises people.
