Why project profit is wrong when scope and billing live in different systems
A project margin is only meaningful when the agreed scope, the recorded work, and the invoice are three readings of one record. A worked example with invented numbers, the four places the three records diverge, what a correct margin needs, and the honest cases where none of this applies.
Project profit is a subtraction, and the subtraction is the easy part. Take the money that came in for the project, take the cost of doing the work, and the difference is profit. Every agency can produce that number, and most of them can produce it for any project on request. Far fewer can defend it, because the two figures being subtracted are usually pulled from systems that were never asked to describe the same project.
The problem is not the arithmetic. It is comparability. The thing you agreed to do, the thing your people actually did, and the thing you invoiced are three separate descriptions held in three separate places, and the margin figure is the residue of forcing them together. Force three unrelated datasets into one subtraction and you will always get a number. The number will not mean anything, and — this is the part that hurts — it will not be obviously wrong. It will sit in a report looking like a modest, believable margin, and it will survive review precisely because nobody can point at the step where it went bad.

What 'project profit' actually computes when the three systems disagree
Take the common agency arrangement. The quote was raised in one tool, by a salesperson, as a set of line items with rates. The time was recorded in another, by the people who did the work, days later and approximately. The invoice was raised from a third, and the hour count behind it came from whoever was assembling the invoice that week. The cost per hour is a single blended number someone typed into a report.
None of these is a lie. Each answers a different question well. The failure is that they are being asked to answer a fifth question — what did this project actually make — and they have no shared referent. There is no key that ties a line on the quote to a block of hours to a line on an invoice, so nobody can ask the only question that matters: is the work I billed for the work I agreed to do?
Three systems, three descriptions of one project (structural comparison — no measured outcomes)
| The question | Where the answer usually lives | What it is actually counting |
|---|---|---|
| What did we agree to do, and at what rate? | The quoting tool | Line items, quantities, rates, and tax treatment — a plan, frozen at one moment, and only if the quote was raised as a record at all |
| What did people actually do? | A timesheet app or a notebook | Hours entered by whoever remembered, usually late, against a project code picked from a dropdown |
| What did we bill for it? | The billing tool or a register | Documents raised — sometimes with a discount applied at the counter, occasionally for a quantity nobody can match back to work done |
| What did it cost? | A blended rate typed into a report | One hourly figure multiplied by whichever hour total was nearest to hand at the time |
The four places the three records come apart
Divergence is not rare and it is not usually dramatic. It enters at four specific moments, and once you know them you can see them in almost any agency's numbers.
The four divergence points (structural, not measured behaviour)
| Where it enters | What the records show afterwards |
|---|---|
| An addition nobody quoted | Hours recorded against the project with no quoted line behind them, and an invoice that quietly omits them — work delivered, value not claimed |
| A re-quote that was never raised | The original quote left untouched at its original total, extra work done in good faith, and a second agreement that exists only as a conversation |
| A discount given at the counter | Invoiced total below quoted total, with no approval record and nobody later reading the gap because revenue is read from invoices and invoices are the only thing that was reduced |
| A change in the cost rate | An hour count multiplied by a rate chosen at report time rather than the rate the work was sold at, so the margin moves when the cost base moves for reasons that have nothing to do with the project |
A worked example: one project, and the two margins it produces
Every figure below is invented, for illustration. Nothing here is drawn from a real engagement, a real agency, or real people. What it demonstrates is the shape of the error, which is what makes it useful.
An agency quotes a build project at a flat hourly rate, and the quote is raised properly as a structured record with items, rates, tax treatment, and terms. That is the agreed baseline: 328 hours at ₹2,400 an hour, a quoted value of ₹7,87,200. The agency's fully loaded internal cost rate is ₹1,450 an hour, which includes salary, overhead, tools, and the management time that is easy to leave out. At those two numbers the plan is 39.6% gross margin, and the project is priced correctly.
Now the three systems produce three different accounts of the same twelve weeks. The timesheet app holds 372 hours — 44 more than were agreed, and 31 of those 44 traceable to work the quote never described. The invoice register holds ₹7,47,840, because the agency invoiced the 328 agreed hours and applied a 5% goodwill discount to one part of the invoice without asking anyone who could approve it. The cost report multiplies 372 by ₹1,450 and calls the result the project cost.
The same project read three ways (all figures invented, ex-GST)
| Read | How it is calculated | Margin it produces |
|---|---|---|
| Quote tool | 328 hours at the agreed rate of ₹2,400 | A baseline of ₹7,87,200 and a planned margin of ₹3,11,600 — 39.6% |
| Timesheet app | 372 hours recorded by the people who did the work | 44 hours of activity the quote never described |
| Invoice register | 328 hours invoiced at ₹2,400, less a 5% discount on one part | ₹7,47,840 received for ₹7,87,200 of agreement |
| Cost report | 372 hours at the loaded rate of ₹1,450 | ₹5,39,400 of cost — ₹63,800 above the ₹4,75,600 the baseline allowed |
Now the two margins. The first is the one an agency actually reports. It takes the invoice total, subtracts the cost the timesheet app implies, and announces 27.9% — ₹2,08,440 on ₹7,47,840 of billed revenue. That is the number that goes in the deck, and on its own terms it is entirely defensible arithmetic applied to two unrelated datasets. It is also wrong in two separate ways, and neither wrongness is visible in the result.
The second margin is built on the agreement rather than on the invoice. Agreed value was ₹7,87,200 for 328 hours. Actual cost was ₹5,39,400 for 372 hours. So the engagement genuinely earned ₹2,47,800, or 31.5% of what was agreed. Then the two silent losses get counted. The 44 hours of work that were never re-quoted and never invoiced removed ₹1,05,600 of value at the rate it should have been sold at. The 5% discount removed a further ₹39,360. Realised margin on the engagement is ₹1,02,840 — 15.9% of what actually came in, against a plan of 39.6%.
The most useful line in that example is the last one. Had the 44 hours been re-quoted as a new quote attached to the same project and accepted, and had the discount not been given away, the revenue would have been 372 hours at ₹2,400 — ₹8,92,800 — and the margin ₹3,53,400, which is 39.6%. Exactly the planned margin. The rate was never wrong. The estimating was not wrong. The delivery team did not run over on skill. The entire gap between 39.6% and 15.9% is a records failure, and every rupee of it is recoverable on the next project of the same kind.
The three things a correct project margin needs
Baseline, actual, variance
An agreed baseline
A structured quote, raised as a record with items, quantities, rates, tax treatment, and a send state. Not a proposal PDF, not a message thread, and not a rate in an email. Without a baseline there is no denominator, and a margin with no denominator is a feeling.
Actual cost against that baseline
What the work actually consumed, at a rate you can defend, plus the costs that are easy to omit: rework, chasing, and the management time nobody bills. The honest difficulty is that this is largely manual, and NoxOrigin does not record delivery timesheets — that manual entry is exactly the friction this article is about.
The variance, and what it names
Actual against baseline, decomposed. Hours over or under, cost rate drift, unbilled scope, discounts given. A variance that can be named is a pricing decision for the next quote. A variance that can only be totalled is a feeling again.
The decomposition is the whole value. "37% margin" tells a team nothing about what to change next quarter. "Six per-cent of margin went to hours that were worked and never invoiced" tells them exactly which habit to install, and it is an installable habit rather than a talent problem. This is the same argument our piece on scope drift makes from the delivery side: the gap between agreed and invoiced is only useful if both ends of it are structured records you can put side by side.
Why the fix is a new quote, not an edit to the old one
The instinct when work was added is to go back and add it to the original quote so the total looks right. Do not. The original is what the client accepted and very often the copy they still hold, and editing it means your two versions differ — which is a harder conversation than the one you were avoiding. It also destroys the only evidence that you under-quoted that type of work, and a revised total tells the delivery team nothing about which part of the job is now being paid for.
Raise a new quote for the additional scope, with its own items, tax treatment, and terms. Get it accepted. Attach it to the same project so the project's economics show both pieces. That single move is what converts the 44 hours in the example above from a loss into revenue, because the addition becomes an agreement rather than an act of charity. The mechanics of the comparison are in our article on why agreed scope and invoiced scope diverge; the reason the second quote is a new record rather than an amendment is a data-integrity point, and it is worth being blunt about what NoxOrigin does and does not have.
What the record has to look like for the margin to mean anything
- The quote exists as a structured record with line items, rates, tax treatment, terms, and a send state — not as a proposal document
- Every addition is a second quote attached to the same project, and the original is left exactly as it was accepted
- Invoices are raised against the project, so invoiced value can be read per project rather than per counter
- Time and any other cost inputs are recorded deliberately, with the rate used for costing stated rather than assumed
- Discounts carry an approval, so revenue given away appears as a variance instead of disappearing
- Actual hours are compared against agreed hours, and the difference is either invoiced as a new quote or written off as a deliberate decision
- The report names its 'as of' moment and its definitions, so two months of it can be compared
Where this argument does not apply, and we would rather say so
This is not universal, and presenting it as universal would be its own kind of dishonesty. Two cases genuinely fall outside it.
Fixed-fee work with no time recording. If you price a ₹40,000 build at a flat fee, deliberately accept the risk, and do not attempt to measure effort at all, then there is no hour count to reconcile and the entire problem above dissolves. What you have chosen is a different business: you are selling an outcome and absorbing variance as a matter of policy. That is a legitimate way to work, and the argument in this article simply does not apply to it. Be clear with yourself about which one you are in, because the failure mode is drifting into fee-for-time while believing you are still selling a fixed outcome.
Very small jobs. A two-hour support visit or a single-day studio booking carries less total variance than the cost of measuring it. Instrumentation has a fixed overhead, and below some size the measurement costs more than the error it would catch. Below that threshold, judge the work by whether you would quote it the same way again, and skip the margin report entirely.
There is also a case where the argument cannot rescue you: a cost base you have never written down. If nobody knows what an hour of senior time costs all-in, no record structure will help, because there is nothing to compare the quote against. Fixing that is a piece of arithmetic, not a software decision, and it is a precondition for everything above.
The terms this article keeps separate
- Agreed baseline
- The structured, accepted quote: items, quantities, rates, tax treatment, and terms. The denominator of the margin.
- Actual cost
- What the work consumed, at a rate you can defend, including the costs that are easy to omit.
- Variance
- Actual against baseline, decomposed into named steps rather than totalled into one percentage.
- Unpriced scope
- Work that was done, was not in any quote, and was therefore never invoiced. It is the most commonly missed loss in the chain.
What we have not measured
To be explicit about the limits of this article: every figure in it is invented for illustration. We have no measured drift rate, no measured distribution of billed against quoted, no measured cost base, no data on how often agencies apply unapproved discounts, and no customer data whatsoever. Nothing here reports what agencies actually do or how much margin they lose. The example is arithmetic constructed to make a structural argument visible, not a measurement of a behaviour.
If a number about margin leakage is offered to you as a benchmark, ask which records produced it, over what period, how cost was defined, and whether the cost side was complete. A margin statistic built on an unrecorded cost base is a guess with a decimal point, and it will sound more authoritative than anything in this article.
The related failure is that the margin is right and the attribution is wrong. why a client profitability number gets calculated the wrong way
Frequently asked questions
Isn't project profit just revenue minus cost? Why is that wrong?
The arithmetic is right; the inputs are the problem. Revenue read from the invoice register and cost read from a timesheet app describe two different things, because the invoice may cover a different number of hours than the timesheet recorded, and it may carry a discount nobody approved. Subtracting them produces a real number that answers no question in particular. The result is a margin percentage that points the team at delivery cost overruns when the actual loss was work that was done and never invoiced.
What do I have to record for a project margin to mean anything?
Three things: a structured quote raised as a record rather than a proposal document, so there is a baseline with items, rates, tax treatment, and terms; the actual effort and cost against that baseline, entered deliberately rather than estimated at report time; and the variance between them decomposed into named steps. If the quote was never a record, there is no denominator and the question cannot be answered from your systems — that is a process fix to make first, not a reporting problem to solve later.
We do not track time at all. Does any of this apply to us?
Possibly not, and this is worth saying plainly. If you price fixed fees, deliberately absorb variance, and never attempt to measure effort, then there are no three datasets to reconcile and this entire problem does not apply to you — you have chosen to sell an outcome rather than sell hours. The failure mode to watch for is drifting into billing by time while still believing you sell a fixed outcome. Below roughly the size of a small support visit, the cost of measuring exceeds the value of the measurement.
My team says they spent more hours than the quote covered. Is that their problem?
It is a pricing problem, not a discipline problem, and the distinction matters. If the extra hours are work the quote never described, the correct response is to price it and claim it — raise a new quote for the added scope, get it accepted, and attach it to the same project. If they are hours spent on the quoted scope being quoted, that is a rate or an estimating issue and belongs in the next quote. Either way the answer is a commercial decision, and it is made by reading the record, not by asking whose turn it is to be disappointed.
Should extra work be invoiced after the fact or re-quoted before it is done?
Raise a new quote for the additional scope, get it accepted, and attach it to the same project, rather than editing the original or quietly billing over the agreed total at the end. The original quote is what the client accepted and often the copy they still hold, so editing it means your two versions differ. There is no change-request record, no milestone record, and no contract editor or e-signature in NoxOrigin — a new quote on the same project is the supported pattern, and a signed change order for a buyer who requires one belongs in a contract-lifecycle tool.
Does NoxOrigin record delivery time so it can cost my projects automatically?
No, and it would be misleading to imply otherwise. There is no delivery timesheet and no payroll module. Projects carry status, dates, and members, and tasks carry an owner, a due date, and a priority, which tells you who was accountable and what completed — not how many hours anyone spent. Shift time tracking exists for counter staff and is not cost-capturing delivery time. Manual time entry is the friction this article is about, and if automatic billable-time capture is what you are buying, say so early, because that is a different requirement.
How is this different from the cost accounting my accountant does?
Quoted value against billed value per project is a commercial view of your own work, and it is what NoxOrigin reads. Cost accounting allocates cost to products and services under an accounting framework, and statutory treatment is your accountant's, not a software feature. The practical difference that matters to you: noxorigin does not file GST returns or any statutory return, and a margin read is only as good as the cost base you actually recorded against it.
Sources and further reading
- Activity-based costing: assigning overhead to activities rather than spreading it on a single volume basis
- Cost accounting: tracing costs that follow a product directly, and allocating costs that do not
- GST Council — official GST policy and rate information
- Nox-Billings documentation: make a sale
- NoxOrigin: project profitability