How much does custom software cost? What drives the price
Custom software costs what it costs to remove uncertainty, not what it costs to type a feature list. Two apps with the same screens can differ widely in price because one has three kinds of user, six integrations and ten years of messy data, and the other has none of that. This article explains the drivers, what a quote should and should not contain, how fixed price and time-and-materials fail, the costs that arrive after launch, how to get quotes you can compare, and how to spend less without building something worse. Skofi sells this work, so we say where our range sits and where this advice may flatter us.
By Saveez IrfanUpdated
In short
- Most Skofi projects land between $5,000 and $10,000 (US dollars) and larger systems cost more than $10,000. That is a typical range, not a quote: we quote after a discovery conversation, once we have seen the process, its exceptions and the systems involved.
- Price follows uncertainty more than features. The drivers that move it most are unclear scope, the number of user roles and permission rules, integrations with systems you do not control, and data that has to be migrated.
- A quote is only comparable if it lists what is included, what is excluded and what would change the price. A single number with no assumptions is a guess you cannot check.
- Fixed price suits a defined first release with testable acceptance criteria. Time-and-materials suits work that cannot be defined yet, but only with visible increments and a ceiling you set.
- The cost does not end at launch: maintenance, hosting, third-party and API usage, and change requests all continue. Ask for them in the first conversation, not after go-live.
- The safe way to spend less is a smaller first release and reusing platforms where they fit. The unsafe way is cutting permissions testing, backups, an audit trail or handover.
How much does custom software cost?
It depends on how much has to be discovered, decided and connected, not on how many screens there are. For Skofi's own work, the owner-stated position is that most projects land between $5,000 and $10,000 (US dollars), and larger systems cost more than $10,000. That is a typical range for our projects, not a market benchmark and not a quote. We quote after a discovery conversation, once we have seen the process, its exceptions and the systems involved, and the quote says what is included and what is not.
We do not publish day rates, hourly rates, market averages or per-feature prices, and you should be suspicious of any article that does. Averages across the whole industry mix a form on a database with a regulated multi-country platform, and the number that results describes neither. What is useful, and what the rest of this article gives you, is the list of things that move the price and a way to check a quote against them.
If you are not yet sure that custom is the right route, read our build-or-buy article first: it covers the arithmetic of licence drift, integration tax and workaround cost. Our article on custom software, no-code and AI-built apps compares the routes. This one assumes you have decided to build and want to understand the bill.
What drives the price of custom software?
Ten things account for most of the difference between one quote and another. None of them is a number you can look up; each is something you can assess for your own project before you speak to anyone.
| Driver | What makes it expensive | How to lower it |
|---|---|---|
| Scope clarity | A brief that describes outcomes but not exceptions. Every unwritten rule becomes a decision during the build, and decisions cost more than typing | Write the process as it actually runs, including what people handle by hand. Name one person who can decide |
| User roles and permissions | Several kinds of user, each allowed to see and change different things, with rules enforced in the database and not only in the screens, and each combination tested | Start with the fewest roles that are genuinely different. Add finer rules when someone can say why they are needed |
| Integrations | Each system you must read from or write to is a standing cost, largest when the other side has a poor API, rate limits or two systems both claim to own the same data | Decide which system is the source of truth for each fact. Integrate the one or two that matter first |
| Data migration | Years of history that must be extracted, cleaned, matched and proven correct. Sometimes the source has no usable export at all | Migrate less history, or leave it readable in the old system. Provide real samples early |
| Reporting | Reports that need numbers reconciled across several tables, exports in specific formats, or figures that must match the accounts exactly | List the five reports people actually open. Defer the rest until real use shows which are needed |
| Compliance | Audit trails, retention rules, consent records, regulated data. Sometimes the audit requirement is most of the product | Name the specific obligation up front. Where it is regulated, get specialist advice, because no studio can make you compliant by building |
| Design polish | Bespoke visual design, animation, many breakpoints, a design system, accessibility work beyond the basics | A clean, consistent interface on a proven component set is cheaper than a custom one and usually enough for internal tools |
| Who maintains it | A build designed for a team that does not exist yet needs more documentation, tests and handover. A build nobody can maintain costs more later | Say who will own it, by name. If it is you, say what you can and cannot maintain |
| Hosting and licences | Hosting, database, email, error monitoring and any paid third-party service the build depends on. These are recurring, and some scale with use | Ask for the list of services the build will depend on and their current pricing pages, before you sign |
| AI usage | If the software calls a language model, usage is metered and scales with volume, on top of the build. See our article on AI integration cost | Cap spend at the provider, route easy work to a smaller model, and estimate from a pilot rather than a promise |
Scope clarity is the largest driver and the cheapest to fix
Our automation cost article makes the same point for process automation: the happy path is the smallest term. The expensive cases are the order for a product you stopped selling, the customer spelled two ways, the invoice that arrives as a photograph. A team that can say how many items were touched by hand last month, and why, has already written most of the specification. A team that describes the process as designed is describing something that does not run.
Permissions are where simple apps become complicated
'Users can log in' is a day of work. 'A branch manager sees only their branch, a clerk can enter but not approve, an auditor can read everything and change nothing, and a contractor sees only their own jobs' is a design problem, a database design and a test suite. The trading ERP we built has a grid of eighteen modules against five actions, editable per role and overridable per person, and enforces it in the navigation, the routes, the write layer and a database trigger. That is a lot of care, and it is the reason the system can hold the company's books. If your app does not need that, say so and the quote falls.
Data migration is often a project of its own
On the trading ERP the books lived in a single-machine desktop application whose export produced nothing usable, so recovering the history meant writing a decoder before any new module could be built. We describe it as part of the engagement, and in an estimate it would be a separate line. Ask any studio whether migration is in the price, which years, which entities, and who proves that the totals match.
Integrations cost most where you have least control
An integration to a modern system with a documented API and sandbox is routine. An integration to a system with a partial API, strict rate limits or no test environment is not, and neither you nor the studio can fix that. On the fleet order automation the client kept monday.com and we built only the gap: a parser, a portal and an SLA engine. Keeping the platform was cheaper than replacing it, and it is a pattern worth asking about before you commit to a full build.
What is and is not in a custom software quote?
A quote should say, in plain words, what you are getting, what you are not, and what would change the price. Items that are commonly left out are exactly the ones that surprise people later, so ask about each of them by name.
| Usually described | Often missing unless you ask | Question to put to the provider |
|---|---|---|
| The features or workflows to be built | Exceptions and edge cases. What happens to the order that fails halfway | Which exceptions are in scope, and how are new ones handled? |
| Design and development | Testing on money and permission paths, and who writes the expected outcomes | What tests will exist on my project, and can I see them run? |
| Deployment to a live environment | Staging, a rollback path, backups you have tested restoring | Can I try changes before they go live, and what is the way back? |
| Handover or documentation | A runbook, key rotation, a restore procedure and a list of known gaps | Could another engineer take over without calling you? |
| Integration with named systems | Data cleaning and migration, the sandbox for the other system, and third-party fees | Which years and entities migrate, and who proves the totals? |
| A launch date or milestones | Your own time: decisions, sample data, someone who answers questions in a day | What do you need from us, and what happens if it arrives late? |
| Hosting set-up | Ongoing hosting, domains, email sending, monitoring and paid APIs in your accounts | Which services will this depend on, and who pays for each? |
| A price | What is not in the price, what would change it, and how change requests are priced | What are your assumptions, and what happens when one is wrong? |
Also check the practicalities. State the currency. Our range is in US dollars, and for international clients we are paid through Wise, PayPal or Payoneer, so the exchange rate and any transfer fees are worth agreeing at the start. Confirm that the repository and the hosting accounts are in your name from the first commit, which is how we work, and ask every provider the same.
Fixed price or time-and-materials?
Use fixed price for a defined first release whose acceptance criteria you can write down, and time-and-materials with a ceiling for work that genuinely cannot be defined yet. Avoid both extremes: a fixed price on a vague brief, and open-ended time-and-materials with no visible output. In each case somebody carries a risk, and the question is whether they have been paid to carry it.
| Fixed price | Time-and-materials | |
|---|---|---|
| Who carries the risk of the unknown | The provider, so the price usually includes a cushion for it. If the cushion is too small, quality or goodwill gets squeezed | You. The bill rises with the unknown, which is honest but uncomfortable |
| Where it works | Scope you can describe, with acceptance criteria a third party could test | Exploration, a rewrite of something poorly understood, or a product whose shape depends on early use |
| Where it breaks | Disputes over what was in scope. Every change becomes a negotiation and the provider is tempted to argue narrowly | No natural stopping point. Without increments you can see working, hours pass and you cannot judge value |
| What to insist on | Written acceptance criteria, a stated process for change requests, and clarity on what counts as a defect | A ceiling you set, deployed increments you can click each week, and a note of what was done and what was not |
| Best used for | The first release | The discovery before it, and the evolution after it |
Many good engagements use both: a short discovery to settle the unknowns, then a fixed price for a defined first release, then time-and-materials or a retainer for what you learn from real use. If a provider will only offer one model for everything, ask why.
What does custom software cost after launch?
Software has running costs that start the day it goes live and do not stop. Ask about each of them before the build, because they decide whether the total cost of owning the system matches what you expected to pay for it.
| Cost | What it is | What drives it |
|---|---|---|
| Maintenance | Fixing defects, updating dependencies, applying security patches, keeping the system working as browsers and platforms change | The size of the system, how many third-party libraries it uses, and whether tests exist to show that an update did not break something |
| Hosting and infrastructure | Where the application runs, the database, file storage, backups, a domain and monitoring | Traffic, data volume, how much history you keep, and the host's current pricing |
| Third-party services | Email sending, SMS, maps, payments, authentication, error monitoring and similar services the build depends on | Usage. Some services bill per message or per user, so cost grows with success |
| API and AI usage | Metered charges from any service the software calls, including language models | Volume and design. Retries, loops and unnecessary calls raise the bill without adding value |
| Change requests | New features, new report formats, a new role, a new integration, a changed process | How well the first release matched the real process, and how the business changes |
| Your own time | Answering questions, testing releases, training staff, keeping reference data current | How many people use it and how often the process changes |
Budget attention for the second year as well as the first. Upstream systems change their fields, credentials expire, and the person who understood the integration moves on. A budget of zero is how software becomes something nobody dares touch. We do not publish a percentage for upkeep, because we have not measured one across our work and any figure we gave would be invented. Ask the provider to state their basis for post-launch work in writing: a retainer, a defect-fix period with time-and-materials afterwards, or something else.
How do you get quotes you can compare?
Give every provider the same written brief and ask each to price the same first release against the same assumptions. Then compare assumptions, exclusions and acceptance criteria before you compare totals. A cheap quote and an expensive one are often quotes for different things.
- 01Write a one-page brief. Our custom software, no-code and AI-built article has a six-item version: the process, the data and who may see it, the systems it touches, how long you expect to use it, who maintains it, and your exit.
- 02Say what the first release is and is not. Name what you are deferring, so nobody prices it by accident.
- 03Ask each provider to list their assumptions and what is excluded, in writing, in the same document as the price.
- 04Ask for acceptance criteria you could test yourself, such as 'a branch manager cannot read another branch's records', not 'a secure system'.
- 05Ask the same ten questions of each, including who reviews the code and what the tests are. Our article on hiring a developer who uses AI coding tools sets them out.
- 06Compare payment terms, currency, ownership of the code and accounts, and the handover contents. These differ more than the totals do.
- 07Talk to the people who will actually do the work. A proposal written by one person and delivered by another is a risk worth naming.
Do not treat the lowest quote as the baseline or the highest as the safe choice. Look instead for the quote whose assumptions match your reality best and whose exclusions you understand. If two quotes differ by a large margin, the useful question is what the cheaper one assumes that the other does not.
What are the red flags in a quote?
- A single number with no assumptions, exclusions or acceptance criteria. You cannot tell what you are buying.
- A price given before anyone has asked about your exceptions, your data or your integrations. It is a guess, however confident the tone.
- No mention of testing, staging, backups or handover. These are the items that get cut when the budget is tight.
- The code, repository or hosting accounts in the provider's name 'for now', or only in an AI tool's own workspace.
- A price that falls sharply when you push back, with no change to the scope. Either the first number had padding in it or the second has a gap.
- Dramatic speed or saving claims from AI tooling with no evidence from comparable work. Use of AI is not a reason for a high price or a low one by itself.
- Open-ended time-and-materials with no ceiling, no increments and no written note of what was done.
- A refusal to say what would make them advise you not to build, or to buy something instead.
- Pressure to sign quickly. Software is a long relationship, and a provider worth having can wait for you to read the assumptions.
How do you reduce the cost without reducing the quality?
Ship a smaller first release, reuse platforms where they fit, settle the unknowns before the build, and protect the parts that are expensive to retrofit. That order matters: the first two save money and the last one is what stops the savings turning into a second bill.
Things that lower the cost safely
- A smaller first release. Build the main flow and make the rare exceptions visible instead of automatic. Real use will tell you which exceptions matter, and it is cheaper to add them then.
- Reuse platforms where they fit. Keep the work platform, the accounting package or the CRM and build only what does not exist, as we did on the fleet order automation. Our build-or-buy article calls this the middle option, and it is usually the cheapest route to something that works.
- Buy the commodity parts. Authentication, payments and email sending are services you rent, not features you should write.
- One person who can decide, and an agreed system of record. A question that takes several meetings to answer is often the largest hidden cost on a small project.
- Real samples of every document and record on day one, creased ones included. A clean sample makes a build look cheap and then late.
- Migrate less history, or leave it readable in the old system.
- A clean, consistent interface on proven components. Bespoke visual design is a choice, not a requirement, for an internal tool.
- Fix the intake upstream. Many exception paths disappear if the form or the process that feeds the system is fixed first.
Things that look like savings and are not
- Skipping tests on money, permissions and deletion. A wrong answer in those places looks like a right answer until it is expensive.
- Enforcing permissions in the screens only. Retrofitting database-level rules later costs more than doing them at the start.
- No audit trail. If you will need to say who changed a figure, add it from the start, because it cannot be reconstructed afterwards.
- No backup you have restored, no staging, no rollback path.
- No handover. A build nobody else can maintain moves the cost to the day the builder is unavailable.
- Accepting AI-generated code unread because it was quick. Our vibe-coding-to-production article covers what review of such code finds.
Where does this advice break?
- Qualitative advice is not a budget. If you need a number for a funding round or an internal approval, you need a discovery conversation, and even then it is a range until scope is settled.
- Our range is ours. It describes Skofi's projects, from a small studio run from Pakistan, and says nothing about what an agency in another market will charge. Compare quotes, do not compare a range with a quote.
- Settling scope up front is not always possible. Some products only reveal their shape through use, and for those the honest model is small funded steps, not a detailed specification.
- Regulated data, such as health or payment data, needs specialist assessment whichever route you take. Nothing here makes software compliant, and none of it is legal advice.
- 'Smaller first release' can be a trap if the missing piece is what makes the system useful. Cut exceptions and polish, not the core of the process.
Common questions
Most of our projects land between $5,000 and $10,000 (US dollars), and larger systems cost more than $10,000. That is a typical range for Skofi, not a market benchmark and not a quote. We quote after a discovery conversation, once we have seen the process, its exceptions and the systems involved, and the quote says what is included and what is not.
Because a feature list does not show the things that set the price: the exceptions, the number of user roles and permission rules, the systems it must connect to, and the data that must move. Two projects with the same list can differ widely on those. A price given without them is a guess, so ask what the guess assumes.
Only when the scope is defined well enough to fix. A fixed price on a vague brief tends to produce padding or arguments over what was included. Fixed price suits a defined first release with testable acceptance criteria. Time-and-materials suits uncertain work, but only with a ceiling you set and increments you can see working.
Maintenance, hosting, third-party services such as email or payments, any metered API or AI usage, change requests, and your own time to test and train. Some of these scale with use. Ask each provider to state in writing how post-launch work is charged, and what the services the build depends on will cost, using the vendors' current pricing pages.
Not automatically, and we will not put a figure on it. Drafting code may be quicker, but design, business rules, review, testing and handover remain. Compare quotes on scope, acceptance criteria and evidence of review, not on hours. Our article on hiring a developer who uses AI coding tools sets out the questions to ask.
Release a smaller first version, keep the platforms that already do their job and build only the missing piece, name one decision-maker, and provide real samples early. Do not cut tests on money and permission logic, database-level access rules, backups, an audit trail or handover. Those are expensive to retrofit.
Drafted with AI assistance (Claude). Published under Saveez Irfan’s name, who is accountable for it. Editorial policy