The Hourly Rate Is the Smallest Part of What an App Costs
Two quotes can differ fourfold for the same brief and both be honest. What moves the number is rarely the rate: it is how much is undecided, how many times the thing has to change, and who absorbs the risk.
By NinjaNext TechnologiesPublished 4 min read
Key takeaways
- A low rate multiplied by rework is more expensive than a higher rate that gets it right the second time.
- Most cost overruns come from decisions that were never made, not from work that was quoted badly.
- Integrations and permissions drive cost more than screen count, and neither is visible in a design.
- Ask what a quote assumes. The assumptions are where the money actually is.
If you have gathered quotes for the same app, you have probably seen a spread wide enough to be unsettling. The instinct is to assume someone is overcharging, or that the cheap one knows a trick. Usually neither is true. The quotes differ because they are describing different amounts of work, and the brief did not contain enough information to tell them apart.
This article is about where that money actually goes, so you can read a quote properly and ask the questions that change it.
Why the rate tells you so little
A rate is a price per hour. What you care about is the total, which is the rate multiplied by the hours, plus the hours nobody quoted. The second term is the one that varies wildly.
Work that is done twice costs twice, whatever the rate. Work built on a misunderstanding costs the build, the discussion, and the rebuild. A team that charges more per hour and asks three uncomfortable questions before starting can easily come in cheaper than a team that starts immediately and discovers the same questions in week five, except by then the answers are expensive because code already depends on them.
This is also why the cheapest quote is often the one with the least detail. A quote that has not thought about your edge cases is not cheaper. It is less complete, and the difference arrives later as a change request.
What is still undecided
The single biggest driver of cost is how much of your product is genuinely decided. Not sketched, decided.
An app where you know exactly who the users are, what each can do, what happens when they do the wrong thing, and what the business rules are, is a construction job. An app where half of that will be worked out as you go is a research project with a construction job inside it. Both are legitimate. They do not cost the same, and the second cannot be quoted as though it were the first.
When a quote comes with a long list of assumptions, that is a good sign. The assumptions are the supplier telling you which version they priced. Read them carefully, because every one you disagree with is a cost you have not yet paid for. Our piece on scoping an MVP is about making those decisions before they become invoices.
Integrations, permissions and the invisible middle
Clients tend to estimate effort by counting screens, because screens are the part you can see. Screens are rarely the expensive part.
What costs is everything behind them. Every external system you connect to brings its own rules, its own failures and its own test accounts, and the work is not the connection but what happens when it misbehaves. Payments are the clearest example: taking a card is a day, and handling refunds, partial failures, retries and reconciliation is weeks. We built flight booking with live supplier search, card payments, ticketing and refunds for FreeToGo, and the visible booking flow was a small fraction of it.
Permissions are the other invisible multiplier. An app where everyone sees the same things is far simpler than one with roles, and each role multiplies what has to be built and checked. A workshop system like SwiftFix Auto needs different views for the person booking, the mechanic and the manager, and each of those needs its own answer to every question the app can be asked.
Who carries the risk
A fixed price is not a discount. It is the supplier taking on the risk that the work is larger than it looked, and sensible suppliers price that risk into the number. A time-based arrangement moves that risk to you, which is cheaper when the brief is clear and more expensive when it is not.
Neither is wrong. What matters is that you know which one you are buying, and that the choice matches how settled your requirements actually are. Fixed price on an unsettled brief produces change requests and friction. Time and materials on a settled brief usually just works out cheaper.
The part almost nobody budgets
Software is not finished at launch, and the costs that follow are real: platform rule changes that force an update, dependencies that need upgrading, hosting, and the fixes that come from real users doing things nobody predicted. Mobile is stricter here than web, because stores enforce their own deadlines regardless of your roadmap.
A budget that spends everything on the build and nothing on the year after it tends to produce an app that quietly stops working. Setting aside a portion for the first twelve months is not pessimism; it is the actual shape of owning software.
Questions that change the number
- What does this quote assume I have already decided, and what happens to the price if I change my mind about each one?
- Which parts are you least certain about, and what would make you more certain before we start?
- What is not included that I am likely to need within six months?
- Who owns the code and the accounts at the end?
- What does it cost to keep this running for a year after launch?
The answers are usually more informative than the number at the bottom. A supplier who answers the second question honestly is telling you where the risk is, which is the most useful thing a quote can contain.
If what you have is a half-built app rather than a blank page, the drivers are different again, and what decides the cost of finishing a half-built AI app covers that case directly.
If you would rather skip the guesswork, tell us what you are building and we will come back with the questions above answered for your project, free, before anyone discusses a price.