Duskel Start a project
Blog/Field notes

What custom software actually costs in 2026

Custom software cost is set by unknowns and integration surface, not screen count. Here's how the number is built, why three shops quote one spec 7x apart, and where to cut without buying a rewrite.

Duskel·28 Jul 2026·6 min read

Three shops bid the same fourteen-page spec for a freight brokerage last March: $58k, $190k, $420k. Nobody was lying. The $58k bid priced the feature list. The $420k bid priced the two integrations, the migration out of a 2009 Access database with 340,000 rows, and the twenty minutes in the kickoff call where nobody could say whether the CRM or the dispatch board held the authoritative customer record. That gap isn't margin. It's the cost of absorbing unknowns, and the only question is whether the vendor charged you for it in writing or buried it in a contingency you'll never see itemised.

So build the number from parts: where the hours go, the four variables that swing a total, real 2026 ranges for B2B work, and how to cut the figure without buying a rewrite. One sentence if that's all you read — you pay for discovery once, or you pay contingency on every line forever, and contingency is priced by someone hedging against the version of you who changes their mind.

The hourly rate is the least interesting number in the quote

Blended rates in 2026 run $25–50/hr in South Asia, $50–95 in Eastern Europe and Latin America, $130–220 in the US, UK and Australia. Buyers fixate on this column because it's the only one that compares cleanly across three PDFs, which is why it tells you least. The same portal is 900 hours or 3,000 depending on one decision: whether tenancy is enforced globally on day one, or an `org_id` gets bolted onto forty queries in month five — thirty-seven get fixed, and the other three surface as a support ticket containing another customer's invoice.

Ask for hours per deliverable instead, then look for the line items that come back suspiciously round. "Reporting — 40 hours" against a spec listing fourteen report types means nobody counted the report types. "CSV import — 8 hours" means they have never received a 40,000-row export with merged header cells, three date formats, and a supplier column padded with trailing whitespace that quietly doubles your customer list. A $35/hr team at 3,000 hours costs more than a $110/hr team at 900.

Where the hours actually go

On a typical B2B application, the features on your list are 55–65% of the build. The rest is machinery nobody writes user stories for. Authentication with role-based permissions and org scoping is three to four weeks, not the afternoon everyone budgets, because every query has to respect the tenancy boundary and every new endpoint is a fresh chance to forget. Admin tooling — the screens ops uses at 6pm to unstick an order or fix a mistyped email — is a quarter of the screen count and the first thing a cheap quote silently drops.

Then the environment layer: CI running the suite on every PR, staging restored from a production snapshot, migrations that deploy without downtime, structured logs with a request ID you can grep, error tracking, and a backup someone has actually restored. Call it 15%. Teams cut it to win on price and it works, because the invoice lands before the consequence. The consequence is month six: nobody deploys after Wednesday, every bug report opens with "can you reproduce it," and two engineers spend a third of each release clicking through eleven flows by hand.

The four variables that move the number

Integration surface first. Each third-party system is one to three weeks, and sandbox quality is the tell. Stripe, Shopify and Xero give you a sandbox, versioned docs, and errors that mean what they say. NetSuite, Sage, or an on-prem SOAP endpoint whose WSDL disagrees with what the server actually returns: triple it, and hold working credentials before you sign. "We'll sort out access later" is the standard route from a four-week integration to a four-month one, and the delay is never engineering — it's an integrator who bills your client separately and replies on Tuesdays.

Second, legacy migration, the most underestimated line in this industry. Twenty years of rows hold duplicate customers separated by a middle initial, orphaned foreign keys, prices stored as strings with currency symbols, and a `notes` field three departments used as a status flag. Writing the script takes a week; deciding what the dirty data should become is a month of meetings you don't control. Third, compliance — SOC 2 or HIPAA adds audit logging, access reviews and an auditor, $20–60k on top, mostly process. Fourth, ambiguity: a fixed price against a vague spec carries 25–40% contingency the vendor keeps if the build goes well. That's insurance, not dishonesty. Know you bought it.

Real ranges for real projects

An internal tool replacing a spreadsheet — one workflow, one integration, four roles — lands at $25–60k. A B2B SaaS MVP with billing, tenancy, an admin panel and one real integration is $70–160k. A multi-tenant platform with three or more integrations, permissions that carry legal weight, reporting and a legacy migration runs $180–450k. Native mobile adds $50–120k plus a second permanent release train with app store review in it, which turns a Tuesday hotfix into a Friday one. These are numbers for teams that write tests; you can find all of them for half, and about a third of the time that works out.

Year two is what people forget. Budget 15–25% of build cost annually and treat it as a floor: dependencies age out of support, APIs deprecate on their calendar rather than yours — every payments and auth provider will hand you at least one forced migration — and the requests that arrive once real users touch the thing aren't optional. Hosting is the small number, $200–800 a month for most B2B apps until it isn't, but retrieval workloads break that fast: embedding and re-ranking a few million documents can cost more per month than every server it runs on.

How to spend less without paying for it twice

Buy discovery before you buy a build. One to two weeks, $6–15k, ending in a schema, a clickable flow through the core workflow, a decision log naming who owns each disputed record, and an estimate with hour counts against named features. It converts the vendor's contingency into your knowledge, and it's the cheapest way to learn whether a team can think before you learn whether they can code. A shop that won't sell discovery and insists on a fixed price against your brief is either padding or planning change orders — and you'd be negotiating scope with the only people who understand the codebase.

Then cut in the right places. Ship one integration, not four; the second always exposes what the first assumed. Rent authentication and billing — Clerk, WorkOS, Stripe Billing — because SAML edge cases and proration logic cost more in engineer-weeks than the subscription costs in years. Scope v1 to one workflow that runs end to end for a real user instead of three that each stop at the demo boundary. What not to cut: tests, CI, and the admin panel. Those three read like padding in a proposal and become why your team stops shipping by month eight.

Written by Duskel

A software studio that ships and maintains its own products — KeepChats, Gwora and MoveProof — and builds the same way for clients. Founded and led by codewithumar.

Talk to the studio →
RELATED READING
7 min read

How to hire a full stack developer who owns the seams

7 min read

The custom AI chatbot on your website fails at retrieval, not the model

6 min read

MCP server development in Python, and the four things that break it

Send us your spec and we'll break the cost down feature by feature, with hour counts you can argue with.

Duskel
Duskel
AI AUTOMATIONSOFTWARE

We build software worth keeping — for clients, and for ourselves.

Founded & led by codewithumar

© 2026 Duskel. All rights reserved.DUSKEL SMC-Private Limited · Incorporated 2021 · Lahore, PakistanA codewithumar studioBuilt to last, not to demo.