← All posts Operations

Your gross margin is probably wrong, and the total will still add up

If you sell your team's time, gross margin is the number that tells you whether the work is worth doing. It decides what you charge, which projects you take again, and when you can afford the next hire. In most service businesses I have looked at, it is wrong in the same direction, for the same boring reason, and nothing in the accounts flags it.

The reason is that payroll gets filed under overheads.

Why the mistake is invisible

A profit and loss statement splits costs in two. Cost of delivery is what it took to do the work you sold. Operating expense is what it took to be a company at all: rent, marketing, the accountant, the founder's own time on sales. Revenue minus delivery cost is gross profit. Subtract overheads and you get operating profit.

Move a cost from one line to the other and the bottom line does not change by a cent. Operating profit is identical either way, so the accounts balance, the bank matches, and nobody goes looking. Only the middle of the statement moves, and the middle is the part you make decisions with.

A wrong gross margin does not look like an error. It looks like a healthy business.

In a software company, filing salaries under overheads is roughly right: engineers build a product that sells many times. In an agency, a studio, a consultancy or an implementation partner, it is the opposite. The people are the delivery. Their salaries are the single largest cost of the thing you sold, usually by a wide margin.

What it does to the number

Ordelume ships with a demo ledger so the finance module has something real to render. I ran the numbers on it while writing this post, using exactly the rule the product uses. One year, 126 rows, 88 of them expenses, revenue of $423,000, and payroll of $188,850, which is the largest cost in the file by a factor of three.

The same year, three ways of filing the same costs
79%Guessed from namesnothing classified
48%Classified by handpart of payroll is delivery
33%All payroll as deliverythe other extreme
Gross margin, same ledger. Operating profit is $63,830 in all three columns, to the cent, which is exactly why the error survives.

Thirty-one points between the guess and the truth, on the same money, with the same bank balance. A business that prices from 79% and actually runs at 48% is not being slightly optimistic, it is working from a different business.

The third column matters too. Dumping every payroll row into delivery gives 33%, and that is just as wrong in the other direction, because your admin and your own sales time are not delivery. The real answer sits between, and finding it is a judgement about how your team spends its week.

This is the part no software can work out for you. Some of that payroll is client work and belongs in delivery. Some of it is management, admin and sales, and belongs in overheads. Only you know the split, and it is a judgement about how your business runs, not a fact that can be read off a category name.

Where the guess comes from

Until a row says which kind of cost it is, something has to decide, and the only thing available is the category name. Ordelume's guess is a plain list of words, and I am putting it here because a guess you cannot see is worse than one you can:

implement, cloud, contractor, data, engineer, infrastructure, hosting, server, delivery, support, onboarding, integration, tooling

Read it again and notice what is missing. Payroll. Salaries. Wages. The largest delivery cost in a services business does not match, so it falls to overheads, and gross margin comes out too high. Every tool that guesses from a name has this hole. The difference is whether it tells you.

So the product does two things instead of guessing quietly. Every expense row has a Delivery or Operating field you can set. And the finance board shows a banner counting the rows that have not been set yet, which opens a screen that groups them by category, biggest money first, so you can classify a whole category in one click. Where the answer is obvious it is pre-selected: cloud and contractors as delivery, rent and marketing as operating.

Payroll arrives with nothing pre-selected and a warning that it splits. That is deliberate. It is the one group where a helpful default would quietly put words in your mouth.

Check yours

You do not need the product for this. You need your revenue, your payroll, and an honest guess at how much of that payroll is client-facing. The numbers below start on the demo ledger; replace them with yours.

What is your gross margin, really

Everything is per year, and any currency works as long as you use one. Operating profit does not move as you drag the slider, and that is the whole point.

At 66% you are looking at the demo ledger as it actually ships: 48%. At 100% it is 33%. Drag it to 0, meaning not one hour of payroll counted as delivery, and it reads 78%, within a point of the 79% a pure category guess produces on the same file. Whatever you drag, the operating profit line does not move.

--gross margin
--operating margin, unchanged by the split
--points between filing all payroll as overheads and all as delivery

Cash basis, before tax, like the module itself. Nothing here deducts tax, interest, depreciation or owner draws, so it is what the business earned from trading, not what is left at the end.

What this changes on Monday

Three decisions get better the moment the number is real.

DecisionOn a margin that is too highOn the real one
PricingDiscounts feel affordable, because the cushion looks bigger than it isYou know the floor below which the work costs you money
Which projects to repeatEverything looks profitable, so you optimise nothingThe two or three shapes of work that actually pay stand out
HiringFeels affordable right up to the month it is notYou know what a new person has to bill to be worth it

Ordelume also does this per project, which is where it becomes operational rather than historical: revenue for a project comes from the money actually recorded against it, and the delivery cost is estimated from the hours booked on its tasks against the salaries of the people doing them. That estimate is only as good as the hours, and the product says so on the screen rather than presenting it as measured fact.

What the finance module is not

This matters more than the feature list, because the fastest way to lose a customer is to let them believe something that is not there.

What it does do is the part that decides how you run: what came in, what it cost to deliver, what each project and each client is really worth, and where the number is a guess rather than a measurement.

Ordelume is in private beta, and free while it lasts.

If you run a services business and your gross margin has never been split by hand, it is worth two minutes with the calculator above whether or not you ever use the product.

Join the Waitlist
Share LinkedIn X