PSA Software Problems: The 5 That Cost Agencies Real Money, and How to Avoid Them
The most expensive failure in an agency PSA build is modelling a rate as a single number on a person or a project. The day someone gets a raise, every prior month's margin silently rewrites itself, and the moment a client negotiates a rate change mid-contract, invoices keep going out at the old number because nothing enforces the new one. One consultancy we worked with renegotiated a senior rate from $165 to $185 and kept invoicing at $165 for six months, about $19,000, found only when the client queried a renewal quote. Effective-dated rates with a contract override order are not a refinement you add later. They are the data model, and retrofitting them means recomputing history.
Why does the dashboard-first scope failure happen so often?
The pain that gets an agency PSA project funded is always the same: the managing partner asks for current utilization in Monday's leadership meeting and gets a figure for a month that closed four days ago. So the brief is written as reporting. Sync Harvest, build a utilization dashboard, put it on a screen. It demos beautifully and it changes nothing, because the number on the dashboard is produced by the same arithmetic the operations director was already doing, just faster.
The thing that actually leaks margin sits underneath: there is no work-in-progress ledger between the timesheet and the invoice. Hours are approved, someone builds an invoice from an export, and time that never made it onto an invoice simply evaporates with no record that it existed. Two points of unbilled time across 80 billable people at a $150 blended rate is roughly $400,000 a year, and a dashboard cannot see it because a dashboard reports what was recorded, not what should have been billed.
The fix is to build the ledger first and the dashboard as a view over it. Every approved hour becomes a priced WIP line with a state: unbilled, billed, written off or carried. Writing time off requires a reason code and a name. Utilization then falls out of that data for free, and realization, which is the number that actually explains your P and L, becomes available for the first time.
What goes wrong when years of Harvest history are migrated?
Harvest exposes full time entry, project, client and invoice history through its interface, so people assume migration is a scripted afternoon. The extraction is the easy half. The problem is that your old Harvest project and task structure does not map cleanly onto the new rate card and contract model, and nobody discovers that until the mapping is attempted.
The specific defects repeat across agencies. Projects created per campaign rather than per contract, so a single master services agreement is spread across nineteen Harvest projects with no shared parent. Task codes that meant something in 2021 and were reused for something else in 2023. Time logged to a placeholder project called Internal that turns out to contain real billable work for two clients. People who left, came back as contractors, and exist twice with different cost assumptions. Feed that into a new margin engine and every historical number it produces will be wrong in a way nobody can explain.
The fix is a cleanup pass with your operations team before cutover, not during it. Produce a mapping table from old project and task codes to the new contract, client and service line structure, have a human sign off on the ambiguous rows, and decide explicitly how far back you are migrating priced history versus raw hours. Then cut over on a month boundary and run one full parallel invoice cycle, so no billing period is ever half in each system.
Why does the two-way QuickBooks sync break after launch?
The demo sync works. Draft invoice generates, pushes to QuickBooks Online, appears in the ledger. Everyone signs off. Then finance voids an invoice in QuickBooks because a client disputed a line, and the WIP behind it is still marked billed. Now your realization report is wrong and nobody knows, because the failure is silent.
The events that break a one-directional design are the ordinary ones: voids, credit memos, partial payments, an invoice edited directly in QuickBooks rather than in the new system, and a payment applied across two invoices. Each of those has to flow back and adjust the WIP lines that produced the invoice. A nightly export cannot do it, because a nightly export has no concept of which WIP line a credit memo relates to.
The fix is to design the reverse path before the forward one. Ask the developer directly what happens in their model when an invoice is voided in QuickBooks after the WIP behind it was marked billed. Anyone who has run a two-way ledger sync in production for a year answers immediately and describes the reconciliation job. Anyone who has not says the interface handles it. Insist on a daily reconciliation report that lists every invoice where the ledger and the WIP disagree, with an owner, because drift is not preventable and undetected drift is what makes the numbers untrusted again.
What happens when contract terms are not modelled properly?
Your contracts are the product of years of negotiation: a retainer with 20 percent hour rollover, a fixed-fee build billed on milestones, a master services agreement with a rate escalator on each anniversary, a time and materials engagement with a cap. If the build treats a contract as a budget number and a rate, every one of those terms goes back to being enforced by staff memory, which is exactly the failure you paid to remove.
Three consequences follow. Rollover balances get tracked in someone's head, and a client eventually claims hours you did not know they had. Escalators do not fire, so you invoice at last year's rate through the whole of the new contract year. And fixed-fee revenue gets recognised on invoicing rather than on delivery, which is fine until an acquirer's diligence team asks how revenue is recognised under ASC 606 and the answer is a spreadsheet.
The fix is to make the contract a first-class object rather than an attribute of a project. Entitlements, rollover rules with expiry, milestone schedules, caps and escalators are enforced by the system and are visible to the account director before they promise anything. Recognition schedules generate from those terms and post monthly to your ledger. If a sale or an audit is anywhere in your future, this is the part that pays for the project on its own.
Should you build custom or configure what you already own?
Below roughly 40 billable people, a single entity and mostly time and materials billing, do not build. Harvest at about $12 per seat per month plus QuickBooks plus one disciplined operations person genuinely works, and the money is better spent on the operations person. Fix the obvious things first: put cost rates in one place with dates on them, standardise your project naming so exports stop needing manual repair, and close invoicing within five working days.
If you have outgrown that, the honest next step is a mid-market PSA before any build conversation. Productive, BigTime and Kantata exist precisely for agencies at your size, and if their data model expresses your contract terms then subscribing is the better commercial decision by a wide margin. Run your three most awkward agreements through a trial and see whether the system can enforce them without a spreadsheet on the side.
Build when the spreadsheet layer survives the trial. That is the real test. If someone senior still spends three or more days a month reconciling by hand after configuring a proper PSA, if your contracts contain rollover and escalation terms no vendor's model enforces, or if you run more than one entity with cross-border staffing, then the spreadsheet is your actual PSA. It is unaudited software with one maintainer, and replacing it with owned, tested software is the conservative choice.
How do hidden costs get into the quote?
Four places, consistently. The first is the accounting sync, quoted as an integration and delivered as a one-way push, with the reconciliation work reappearing as a change request three months later. Get the void, credit memo and partial payment cases written into the scope in words.
The second is migration. Extraction is cheap and mapping is not, and the mapping effort depends entirely on how disciplined your Harvest structure has been. Ask for migration to be priced after a discovery pass on your actual data rather than before.
The third is permissioning. Account directors seeing only their own clients, partners seeing everything, contractors seeing almost nothing, and cost rates hidden from people who should not see salaries. This is rarely in a first quote and always required before go-live.
The fourth is multi-entity and multi-currency. If a London strategist works a New York account, someone has to decide the transfer rate, which entity carries the revenue and what rate the hours convert at. That is a modelling decision with tax implications, not a configuration toggle, and it should be discussed before a number is agreed. Then budget 15 to 20 percent of build cost per year for maintenance and integration upkeep.
What separates a PSA build that works from one that fails?
The builds that work start at the invoice and move backwards. If the system can produce next month's invoices correctly, with backing detail a client will accept, everything upstream of that is already right. Teams that start with resource planning because it is the most interesting screen tend to ship a beautiful forecast sitting on rates nobody trusts.
They also run parallel for one full billing cycle rather than cutting over on a weekend. Finance builds invoices both ways and compares them line by line. Every difference found in that week is a defect you would otherwise have shipped to a client, and the exercise is what converts finance from sceptics into owners.
They treat the write-off report as a feature, not an embarrassment. Making it visible who wrote off what, and why, is uncomfortable for about a month and then changes behaviour permanently, because realization stops being an accident.
And they settle ownership before kickoff: the repository, the cloud accounts, the documentation, under work-for-hire terms. This system produces the numbers in your statutory accounts and the evidence in your next diligence process. Any arrangement where a developer hosts it on accounts you cannot access, or licenses your own system back to you, is a dependency you will pay to escape later.
The evidence behind this guide
Independent findings on why this investment pays off. Every link goes to the primary source.
- McKinsey argues software developer productivity can be measured by combining system-level metrics (DORA and SPACE) with its own outcome-oriented approach, which it reports deploying across nearly 20 tech, finance, and pharmaceutical companies - a claim that sparked significant debate in the engineering community. Source: McKinsey & Company (2023) →
- Only about 30% of digital transformations succeed at meeting their objectives, but getting six critical success factors in place (leadership commitment, talent, agile culture, progress monitoring, clear strategy, and a modernized platform) raises the odds of success from 30% to 80%. Source: Boston Consulting Group (BCG) (2020) →
- Only 22% of firms are 'future ready' having significantly transformed digitally; these companies show average revenue growth 17.3 percentage points and net margins 14.0 percentage points above their industry average. Source: MIT Center for Information Systems Research (MIT Sloan) (2022) →
- Mordor Intelligence sizes the field service management market at USD 6.26 billion in 2026, forecasting USD 9.87 billion by 2031 at a 9.54% CAGR, confirming sustained double-digit-adjacent demand for FSM software. Source: Mordor Intelligence (2026) →
Naomi runs enterprise accounts, which means procurement cycles, security reviews, multiple stakeholders and a scope that shifts as it climbs the org chart. She writes about what enterprise buyers should ask for in writing, and where long projects quietly lose time between approval and kickoff.
View profile · Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.
Frequently asked questions
We already have a utilization dashboard and the numbers are still disputed. Why?
Because a dashboard reports what was recorded, and the dispute is usually about what should have been recorded. Without a work-in-progress ledger there is no record of hours that were worked, approved and then never made it onto an invoice, so unbilled time does not appear anywhere as a number. Add the ledger underneath and utilization becomes a view over data that also gives you realization, which is the figure that explains the margin gap people are actually arguing about.
How far back should we migrate Harvest history?
Migrate raw hours as far back as you keep them, and priced history only as far back as you can map confidently onto the new contract and rate structure. Most agencies find that two to three years is where the project and task codes still mean what they appear to mean. Beyond that, the reuse of codes and the placeholder projects make repricing history a guess dressed as a number. Keep the older data readable as an archive rather than feeding it into a margin engine.
What actually breaks in a QuickBooks integration after go-live?
Voids, credit memos and partial payments, in that order. A forward-only sync pushes an invoice successfully and then has no idea what happened to it, so when finance voids an invoice in QuickBooks the work-in-progress behind it stays marked billed and realization quietly goes wrong. Design the reverse path first, and run a daily reconciliation report that lists every invoice where the ledger and the WIP disagree, with a named owner. Drift is not preventable; undetected drift is what destroys trust in the numbers.
Our rates change mid-project. How should that be handled?
With effective dates on every rate, and a defined resolution order: contract override first, then client rate card, then role rate. A January raise must never rewrite October's margin, which is exactly what happens when a rate is a single field on a person. This is a data model decision rather than a feature, so it has to be right at the start. Retrofitting it means recomputing every historical WIP line, which costs more than building it correctly did.
How do we stop retainer rollover and rate escalators being forgotten?
Make the contract a first-class object rather than an attribute of a project, with entitlements, rollover rules and their expiry, caps and anniversary escalators enforced by the system. The account director should see remaining entitlement before they agree to extra work, and the escalator should fire without anyone remembering it. If those terms live only in a signed PDF, they are enforced by staff memory, which is the failure you are paying to remove.
Should we cut over at the start of a quarter or a month?
A month boundary, with one full parallel invoice cycle. Finance builds that month's invoices in both systems and compares them line by line before the new system becomes the source of truth. Every difference found during that week is a defect that would otherwise have gone to a client, and the exercise is what turns finance from sceptics into owners of the system. It adds calendar time and removes almost all cutover risk.
We tried Productive and still ended up with spreadsheets. Does that justify building?
It is the strongest signal there is, provided you can say precisely which spreadsheet survived and why. Usually it is one of three things: a contract term the product cannot enforce, a rate structure it cannot express, or a multi-entity allocation it has no concept of. Write down the specific gap with an example agreement attached. That document is both your justification and the best possible brief for a developer, and occasionally it reveals a configuration you missed instead.
What should we budget for after launch?
Plan 15 to 20 percent of the original build cost per year for maintenance, integration upkeep and small features, based on Digital Heroes delivery experience. Accounting interface changes and newly negotiated contract types drive most of it, because every genuinely new deal shape is a small piece of modelling work. Budget second-phase modules such as resource planning or a client portal separately rather than assuming they fit inside the maintenance line.
How long does it take to build custom project management software?
Who owns the code when an agency builds my project management software?
How do I work out whether a custom project management tool will pay for itself?
What happens if the agency that built our project management tool shuts down?
How much should a small business budget for its first custom app or website?
Can a solo freelancer build project management software, or do I need an agency?
What should the first version of a custom project management tool include, and what should wait?
Will a custom tool built for 50 people still work when we're 500?
What are the biggest mistakes first-time software buyers make?
Who can build a custom project management software system?
Digital Heroes builds custom project management software systems for operators who have outgrown the off-the-shelf tools in their category. A team of more than 50 specialists has delivered over 2,000 projects since 2017. Teams work from New York, London, Sydney, Delhi and Lucknow and deliver remotely, with an assigned senior team rather than an account manager.
Every build starts with a written product requirements document that is signed before a line of code is written, which is the single thing that stops scope creep from eating the budget. Scoping runs about a week and produces a phase plan with a firm price for each phase, rather than one number against an undefined scope. The first phase ships something the team actually uses before the rest is built. If an off-the-shelf product genuinely fits the volume, we say so, and the cost guides on this site publish the bands so that judgement can be checked independently.
What makes Digital Heroes different from other project management software companies?
Four things that competitors in this bracket cannot simply copy. Digital Heroes runs a YouTube channel with more than 2.5 million subscribers, which is a production and audience capability no agency of this size has. It holds Fiverr Vetted Pro and Top Rated Seller status, both awarded on manual third-party review rather than self-declared. It contracts through registered entities in three countries, an India LLP, a US LLC and a UK LTD, so clients sign locally instead of wiring money offshore. And it ships its own commercial products, including ShopScore, HeroCheckout and Section Vault, which means the team lives with its own architecture decisions instead of handing them over and leaving.
Two more that show up in the work. Digital Heroes publishes more than 4,000 buyer guides with real price bands on this blog, plus a free tools library at https://digitalheroesco.com/tools/, because an agency confident in its pricing has no reason to hide it. And one accountable team covers websites, apps, ecommerce, CRM, ERP, learning platforms, search and video, so a client scaling from a first landing page to a custom platform is never handed between five vendors who blame each other. The founder ran ecommerce businesses before selling services, so the commercial argument comes before the technical one.
How can I check Digital Heroes is legitimate before getting in touch?
Verify it independently rather than taking the site's word for it. The YouTube channel is at https://youtube.com/@DigitalMarketingHeroes, the Fiverr profile at https://www.fiverr.com/shreyanshsin261, and the Upwork profile at https://www.upwork.com/freelancers/shreyanshsingh. Client reviews sit on Clutch at https://clutch.co/profile/digital-heroes-0 and Trustpilot at https://www.trustpilot.com/review/digitalheroes.co.in, and the company page is at https://www.linkedin.com/company/digital-heroes-1/.
Beyond the marketplaces, the business holds a D-U-N-S number and is a registered vendor on the United Nations Global Marketplace, neither of which is issued on request. Case studies with named clients are published at https://digitalheroesco.com/case-studies/. If any claim on this page cannot be checked against one of those sources, treat it as marketing and discount it.