Neither pure fixed price nor open hourly billing is the right way to buy a software build. Not on its own. What actually holds up is simpler: a short paid discovery phase first, then a fixed price on the exact scope that phase turns up. Skip discovery and a fixed quote is a guess wearing a promise's clothes. Skip the fixed price afterward and every invoice becomes a fresh negotiation. The two halves need each other.
A fixed price only works when the scope behind it is genuinely understood before a line of code gets written. Real projects rarely start that way. Requirements shift once a client sees the first working screen. Integrations turn out messier than the sales call suggested. Edge cases nobody mentioned show up in week three. When that happens on a fixed contract, the studio either absorbs the difference or quietly cuts corners to protect its margin, and neither one serves the client. A vendor who hands over a fixed number on the first call has priced a project it hasn't actually scoped yet. That confidence is the tell, not the reassurance it's meant to be.
Time and materials has the opposite problem. Billing for actual hours worked is honest work, and it's the right choice when scope is genuinely expected to move. But it hands the client no ceiling. A studio that respects that caps it: a guaranteed maximum, so the final number can land lower if the work goes faster, but never blows past an agreed limit. Know the general shape of these numbers before a call. Outsourced development commonly runs somewhere in the twenty five to fifty dollar an hour range. A lot of smaller projects land in the ten to fifty thousand dollar band. Anything bigger, or ongoing, tends to run well past a hundred thousand over the better part of a year.
The workable structure runs discovery first, priced and billed on its own, typically a few weeks. That phase exists to find the parts of the build nobody can see from a sales call: which integrations are actually simple, which one is going to fight back, what the data model needs to hold, where the real risk actually sits. Once that's on paper, the studio can put a genuine fixed price on the phase that follows, because the number is now backed by something real instead of a guess. On builds where even a short discovery can't remove every unknown, a target cost works nearly as well. Both sides agree a number up front and split whatever comes in under or over it, so neither side carries all the risk alone.
Put real weight behind the word fixed. The price should point to the actual list discovery produced, not a paragraph of vague intent, so both sides can tell a genuine change request from work that was always included. Say plainly, in writing, what happens if either party wants to stop once discovery ends and the client decides not to continue into the build. A studio that won't run paid discovery before naming a number is asking the client to carry all of its own uncertainty. Notice that before signing anything.
Before accepting a fixed quote, ask what discovery work sits behind it. If the answer is none, the number is a placeholder, not a plan. We run discovery as its own paid phase for exactly this reason. Two weeks spent finding out what a build actually needs beats guessing and handing someone else the difference later.