Most engineering, architecture, surveying and consulting firms find out a fixed-fee project lost money at the end because nobody can see burn against budget while the work is happening. Timesheets come in late and aren't tied to stages, extra work isn't recorded as a variation, and subconsultant bills and disbursements land weeks after the work. By the time the final invoice goes out and someone runs the numbers, the fee has been spent twice over and there is nothing left to do but write it off.
It usually goes like this. The project closes, the last invoice is raised, and someone in finance pulls the time report to tidy up the job. The stage that was fee-capped at a design fee has twice the hours anyone expected. Half of them were booked to "general" or "admin" because the stage code wasn't set up. There's a geotech or structural subconsultant invoice that arrived after the client was billed. Nobody can say when it went wrong, because nobody was looking at the right numbers while the job was running.
Signs you have this problem
- Timesheets are filled in on Friday afternoon, or the following Tuesday, from memory and calendar entries.
- Hours are booked to the project, but not to the stage (concept, schematic, design development, documentation, construction phase services).
- Your fee proposal has a budget per stage, but nobody compares hours against it until the stage is invoiced.
- "Can you just have a quick look at..." requests from the client are done and never written up as a variation or change request.
- Subconsultant invoices, travel, printing, survey equipment hire and other disbursements are entered in Xero or MYOB against an expense account, not the project.
- Your WIP and unbilled time report is a spreadsheet someone builds at month end, if at all.
- Project managers ask finance "how are we tracking?" and the honest answer is "I'll know after we invoice".
- Write-offs show up at final invoice, with no record of which stage, which person or which request caused them.
Why it happens
On a fixed-fee job, the fee is set at the start. Everything after that is cost: hours, subconsultants, disbursements. Knowing whether a project is making money means comparing those costs against the fee, stage by stage, while there's still time to do something. That comparison needs information from at least four places, and in most firms those places don't talk to each other.
Time sits in one tool. Staff record hours in a timesheet app or the practice management system. If the project isn't set up with stages and a budget against each, the hours land on the project as one big bucket. You can see total hours, but not whether documentation has burned its budget while design development still has hours left.
The fee and the budget sit in the proposal. The fee proposal, with its stage breakdown and assumptions, often lives as a Word or PDF document. Unless someone types that breakdown into the project system, there's nothing to compare the hours against.
Costs sit in the ledger. Subconsultant invoices and disbursements are processed by the accounts team in Xero or MYOB. If the bill isn't coded to the project (and the project code doesn't match the one in the time system), that cost never reaches the project's numbers. The job looks healthier than it is.
Scope changes sit in email. The client asks for an extra option, an extra round of revisions, a site visit that wasn't in the brief. The engineer or architect does it, because the relationship matters. If it's not recorded as a variation at the time, it's just extra hours against a fixed fee.
This is what happens when the work, the time, the money and the scope each live in a different place. WorkflowMax's shutdown in 2024 made it worse for many firms: some moved to a new system in a hurry and lost stage budgets, cost rates or their WIP report along the way. If that sounds like you, our guide to replacing WorkflowMax covers what to check.
Buying another app rarely fixes it on its own. A new project tool can hold stages and budgets, but only if the fee proposal gets set up in it, staff book time to stages, the accounts team codes bills to projects, and someone records variations. Those are process decisions, not software features.
What it costs you
Margin you can't see. You find out a project lost money when it's too late to change how it's run.
Fees you never bill. Extra work that wasn't recorded as a variation is gone. For example, if a client asks for three extra design options over a few months and each one is a day or two of work, none of it feels worth a variation at the time. Added up at the end, it can be the difference between a profitable stage and a loss.
Cash timing. On jobs billed by stage or percentage complete, late or incomplete timesheets mean invoices go out late or understated. Unbilled time sits in WIP longer, and that's cash you've already paid out in wages.
Bad pricing next time. If you can't see which stages and project types overrun, your next fee proposal is built on the same guesses as the last one. The firm keeps winning work at fees that don't cover the hours.
Key-person dependence. Often one person, a director, a senior PM or the finance manager, carries the real picture in their head or in a personal spreadsheet. When they're away or leave, so does the picture.
What fixing it generally involves
The fix is mostly about agreeing how work should flow, and then making the systems follow it. Start simple.
- Check what your current system already does. Many practice and project management tools for engineers, architects and consultants already support stages, budgets, cost rates and WIP. If yours does, the fix may be setting it up properly and getting staff to use it, not connecting anything. Be honest about this first.
- Set up every fixed-fee project with stages and budgets. Take the fee proposal's stage breakdown and load it as the project's budget: hours and fee per stage. If this is done once, at project setup, every timesheet after that has something to measure against.
- Make timesheets daily, against stages. Weekly from memory is where accuracy goes.
- Record scope changes when they happen. A simple variation or change request register per project, even if the decision is to absorb the work. Recording it is what lets a PM see the pattern and have the conversation with the client.
- Code every bill to a project. Subconsultant invoices and disbursements need the same project code in Xero or MYOB as in the project system. That's a process for the accounts team, helped by a project code list that matches in both places.
- Connect the project system and the ledger. When time, budgets and variations live in the project system and invoices and bills live in Xero or MYOB, joining them on the same project codes gives one view of each job: fee, burn to date, unbilled time, costs and what's left.
- Report burn against budget weekly, not at invoice. A short report per project manager: each active project, each stage, budget against hours and costs to date, and unbilled time. Flag stages past a set point of their budget so someone looks while there's still time to act.
For the practical detail on joining project and accounting data, see our guide to project profitability when projects and accounts live in different systems. The broader pattern, where job profit only shows up after the job is done, is covered on our can't see job profit until it's too late page.
If you'd like help setting this up, our WIP and project accounting for professional services work covers stage budgets, unbilled time and WIP reporting across your project system and Xero or MYOB. You can read more about how we work with professional services firms, and our Xero and MYOB integration guide covers connecting the accounts side.
Frequently asked questions
Why do fixed-fee projects go over budget without anyone noticing?
Because the comparison between hours and fee only happens at invoice time. If timesheets aren't booked to stages and nobody reports burn against each stage budget during the job, the overrun stays invisible until the project is finished.
How do I track project budget against actual hours?
Load the fee proposal's stage budgets into your project system at setup, have staff book time daily against stages, and run a weekly report of hours and costs against each stage budget. Add subconsultant and disbursement costs from Xero or MYOB using the same project codes.
What is unbilled time or WIP in a consulting or engineering firm?
It's time and costs recorded against a project but not yet invoiced. On fixed-fee work it shows how much of the fee you've used compared with what you've billed, which is one of the earliest signs a project is drifting.
Should we stop doing fixed-fee work?
Not necessarily. Fixed fees are what many clients expect. The aim is to see burn against budget early enough to raise a variation, adjust the team or have a conversation with the client before the fee is gone.
Do we need new software to fix this?
Often not. Many firms already have a project tool that supports stages and budgets but isn't set up or used that way. Connecting it properly to Xero or MYOB matters more than changing tools.
If you're finding out about losses at final invoice, book a free initial chat and we'll talk through where your time, fees, costs and variations live today and how to bring them together.