Writing

Why Your Mobile Development Quote Came In Low - and What the Final Invoice Will Say

Low quotes are a pattern, not an accident. Five structural reasons mobile development quotes come in below the real cost, and what the final invoice typically includes that was never in the original number.

Ali HafizjiAli Hafizji · CEO & Co-founder, Wednesday Solutions
9 min read·Published Mar 16, 2026·Updated Mar 16, 2026
4xfaster with AI
2xfewer crashes
10xmore work, same cost
4.8on Clutch

Trusted by teams at

American Express
Visa
Discover
EY
Smarsh
Kalshi
BuildOps
Kunai
American Express
Visa
Discover
EY
Smarsh
Kalshi
BuildOps
Kunai
American Express
Visa
Discover
EY
Smarsh
Kalshi
BuildOps
Kunai

In a Wednesday analysis of 30 enterprise mobile contracts where the buyer came to us after a disappointing engagement, the final invoice exceeded the original quote by an average of 67%. In every case, the gap was visible in the original quote for someone who knew where to look. This article identifies the five structural patterns that produce the gap, and shows you what to check before you sign.

Key findings

The average final invoice on a mobile development engagement exceeds the original quote by 67%, based on Wednesday's analysis of 30 enterprise contracts reviewed after the buyer switched vendors.

Four contract patterns account for nearly all of the gap: scope assumptions, staffing switches, change order pricing, and milestone definitions that favor billing over delivery.

Most of the gap is visible in the original quote before signing. The tell is not what the quote includes but what it leaves undefined.

A quote that wins on price almost always recovers its margin through change orders. The lower the quoted number, the more aggressively this pattern plays out.

The low quote is not a mistake

The low quote is the strategy. Mobile development vendors compete on quoted price because buyers use price as the primary filter in vendor selection. A vendor who quotes accurately for a well-scoped project loses deals to vendors who quote for a narrower interpretation of the same scope. The winning vendor then expands scope during the build through change orders priced at a premium rate.

This is not unique to mobile development. It appears in construction, consulting, and software broadly. But mobile development has specific characteristics that make the pattern particularly easy to execute. Integration complexity is hard to assess before the build starts. Device-specific behavior is unpredictable until the app runs on real hardware. Third-party API behavior at the integration layer frequently differs from the published documentation. Each of these is a legitimate source of scope expansion - and each can be used to justify a change order whether or not the expansion was truly unforeseeable.

The vendor is not necessarily acting in bad faith. Many genuinely believe the optimistic scope when they write it. But the structural incentive - win the deal, generate margin through scope expansion - produces the same outcome regardless of intent. You need to recognize the pattern in the quote before you sign, because you will not be able to renegotiate from a position of strength once the build has started and switching cost is high.

Reason 1: Scope assumptions that will expand

The most reliable indicator of a low quote is vague integration language. Most quotes list the systems your app needs to connect to. Few quotes define what "integrate with" means for each system. That gap is where the first change orders come from.

A quote that says "integration with your ERP system" has assumed the best-case interpretation: a documented REST API, stable authentication, a sandbox environment for testing, and data structures that match what the app needs. If the ERP uses a legacy SOAP interface, requires a middleware layer, or returns data that needs significant transformation before the mobile layer can use it, each of those conditions is a scope expansion in the vendor's accounting even if none of them were surprises to anyone who had looked at the system.

The second common scope assumption involves QA coverage. Most quotes include QA as a line item but do not define what it covers. "QA" in a low quote typically means happy-path testing on the two or three device configurations the QA team owns. It does not include error-state testing, offline behavior, performance under poor network conditions, or accessibility compliance. When those requirements surface - and for enterprise apps they always do - they generate change orders.

The third assumption involves design revision rounds. Quotes typically include one or two rounds of design revisions. When the internal stakeholder review surfaces feedback from a department head who was not in the original requirements conversations, that is a scope change. Every round beyond the contracted number bills at change order rates.

What to look for: Any integration described with the word "basic" or "standard" is an assumption about the best case. Ask the vendor to define what happens if the integration is not basic or standard, and require that definition to be in the contract with a cost ceiling.

Reason 2: Staffing assumptions that shift when the engagement starts

The quote is presented by a senior engineer or solutions architect. The work is delivered by a different team. This pattern is common enough in mobile development agencies that buyers who have been through it once treat the presentation team and the delivery team as separate questions during vendor selection.

A typical low-quote staffing assumption works as follows. The quote is priced using a blended rate that implies a senior-heavy team composition - perhaps two seniors and one mid-level engineer. When the engagement kicks off, the actual team is one senior (who splits time across multiple accounts) and two or three more junior engineers. The senior engineer owns the architecture decisions and client-facing communication. The junior engineers do most of the build work. The blended rate in the quote supports this composition financially - the implied senior rate was never guaranteed to mean a senior-heavy team.

This matters for two reasons beyond the obvious quality concern. Junior engineers take longer to resolve novel integration problems. When they hit a blocker on a legacy API or an undocumented edge case in a third-party service, the hours accumulate before escalation. On a time-and-materials contract, those hours appear on your invoice. On a fixed-price contract, they appear as pressure on the vendor to cut scope or accelerate timeline in ways that generate technical debt.

The second effect is on the change order conversation. When a scope question arises, you need the person making the judgment call to have the authority and experience to make a fair determination. A junior engineer does not have that authority. The conversation escalates to the senior or the account manager, who has an incentive to classify ambiguous situations as scope changes rather than scope inclusions.

What to look for: Ask the vendor to name the specific engineers who will be on your account, their years of experience, and how many other accounts they are serving simultaneously. Require this information in the contract with a notification clause if the team composition changes.

Reviewing a quote right now and want a second opinion on the scope gaps? A 30-minute call with a Wednesday engineer produces a plain-language read of what the quote includes and what it leaves undefined.

Read more decision guides

Reason 3: Change order pricing that does not appear in the original quote

The original quote does not tell you what expansion work will cost. It tells you what the defined scope costs. The change order rate - the hourly or per-feature price for work outside the defined scope - is often buried in the contract terms, listed as "rates for additional services," or not defined at all and therefore subject to negotiation at the moment when your position is weakest.

Change order rates at mobile development agencies typically run 40 to 80% higher than the blended rate implied by the original quote. The mechanics of why are straightforward: the original quote may be priced competitively to win the deal, while change order work is priced to generate the margin the vendor needs to make the engagement profitable. A quote that implies a $120/hour blended rate often pairs with a $175 to $200/hour change order rate.

The compound effect appears when multiple change orders accumulate. An engagement with six change orders averaging $15,000 each adds $90,000 to a $200,000 original quote. That is a 45% overrun from a sequence of events that each seemed individually reasonable. The integration took longer than expected. The design required an extra revision round. The compliance documentation was out of scope. Each individual change order is defensible. The sum is the 67% average overrun.

A second change order pattern involves the definition of completion for milestone payments. If the contract defines milestone 2 as "design approval," the vendor may deliver designs, receive approval, and invoice milestone 2 - then generate a change order for design revisions requested after approval. If the contract defines milestone 3 as "backend integration complete," the vendor may complete backend integration to their own definition and invoice, then generate a change order for frontend integration work needed to make the backend usable.

What to look for: Require that the contract specify change order rates before you sign, and require that those rates match the blended rate implied by the original quote within a defined tolerance. Any contract that leaves change order rates undefined is a contract that prices expansion work at the vendor's discretion.

Reason 4: Milestones defined to favor the vendor's billing cycle

Milestone definitions in mobile development contracts are often written to align with the vendor's billing preference, not with the buyer's ability to verify delivery. This creates a situation where the vendor invoices for work that is incomplete from the buyer's perspective but complete under the contract definition.

The most common version of this pattern is milestones tied to document delivery rather than working software. "Requirements complete" invoices when a requirements document is delivered, not when the requirements have been validated against what will actually be built. "Design complete" invoices when design files are handed over, not when the designs have been reviewed in a real device context. "Backend integration complete" invoices when the API connection is established, not when the full user flow works end to end.

Each of these milestone definitions is technically auditable - the document exists, the design files exist, the API call returns a 200. But the buyer does not have working software in hand. The real verification work - user acceptance testing, device-specific behavior, edge case handling - happens after all the milestones have been billed, at a point when the vendor has already received most or all of the contracted payment.

This shifts negotiating power decisively to the vendor for any work that surfaces after the final milestone. If the app crashes on a specific Android version that was not in the test matrix, fixing it is a change order conversation, not a warranty conversation, because all milestones were met under the contract definition.

What to look for: Require that every milestone be defined as working software delivered to a named test environment, verified by the buyer, not as document or artifact delivery. Add a 14-day acceptance window per milestone during which the buyer can raise issues that must be resolved before the milestone payment releases.

How to read a quote before you sign to identify the gaps before they become invoice surprises

The gaps in a mobile development quote are almost always visible before signing. The vendor does not hide them - the quote simply does not address them, and most buyers do not know to look. Four questions, applied to any quote, surface the exposure before you commit.

Question 1: What does "integration" mean for each named system? Ask the vendor to describe the integration approach for every system listed in the quote. If they cannot describe the API type, authentication method, and data transformation requirements for each system, they have not scoped the integrations - they have assumed them. Any integration they cannot describe in detail is a source of future change orders.

Question 2: What is explicitly excluded? A well-scoped quote includes an exclusions list. If the quote does not list what is out of scope, everything is in scope until the vendor says otherwise - and when they say otherwise, it will be in a change order discussion at change order rates. Ask for the exclusions list before signing.

Question 3: Who specifically is on the team, and what is the notification policy if that changes? Get names and experience levels in writing. Require 30 days notice and buyer approval for any team composition change. This does not guarantee the team you saw in the presentation, but it creates accountability and gives you a contractual basis for a conversation if the composition changes without notice.

Question 4: What are the change order rates, and how is scope change defined? Require that change order rates appear in the contract before you sign, and require that the definition of scope change be narrow and specific. A good definition names the systems, integrations, and feature set included in scope, so that any work outside that named list is a scope change and anything inside it is not - regardless of how long it takes.

These questions will not prevent all overruns. Integration complexity is genuinely unpredictable in some cases, and real scope changes happen. But they will eliminate the manufactured overruns - the ones that come from assumptions the vendor made at quoting time that they knew were optimistic.

A quote that cannot answer these four questions is not a fixed-price quote. It is a down-payment on an open-ended time-and-materials engagement with a price ceiling that appears in the contract but not in the final invoice.

Have a quote in hand and want a plain-language review of the scope gaps before you sign? A 30-minute call with a Wednesday engineer covers what the quote includes, what it leaves open, and what the final invoice is likely to say.

Book my 30-min call
4x faster with AI2x fewer crashes100% money back

Frequently asked questions

Not ready for the call yet? Browse cost analyses, vendor comparisons, and contract frameworks for every stage of the buying process.

Read more decision guides

About the author

Ali Hafizji

Ali Hafizji

LinkedIn →

CEO & Co-founder, Wednesday Solutions

Ali has been building mobile apps for 15 years and is the author of two published iOS development books. He has shipped Flutter, iOS, and Android products across travel, gig economy, and ecommerce, and leads enterprise AI enablement across Wednesday engagements. He co-founded Wednesday Solutions and architects the AI-native engineering workflow the team ships with on every engagement.

30 minutes with an engineer. You leave with a squad shape, a monthly cost, and a start date.

Get your start date
4x faster with AI2x fewer crashes100% money back

Shipped for enterprise and growth teams across US, Europe, and Asia

American Express
Visa
Discover
EY
Smarsh
Kalshi
BuildOps
Kunai
Allen Digital
Ninjavan
Kotak Securities
Rapido
PharmEasy
PayU
Simpl
Docon
Nymble
SpotAI
Zalora
Velotio
Capital Float
Buildd
Kalsi
American Express
Visa
Discover
EY
Smarsh
Kalshi
BuildOps
Kunai
Allen Digital
Ninjavan
Kotak Securities
Rapido
PharmEasy
PayU
Simpl
Docon
Nymble
SpotAI
Zalora
Velotio
Capital Float
Buildd
Kalsi
American Express
Visa
Discover
EY
Smarsh
Kalshi
BuildOps
Kunai
Allen Digital
Ninjavan
Kotak Securities
Rapido
PharmEasy
PayU
Simpl
Docon
Nymble
SpotAI
Zalora
Velotio
Capital Float
Buildd
Kalsi