ForHosting KIT · Finance & money

Build or buy software calculator

A team costing 120,000 a year that needs 1.5 years to build spends 180,000, while a 48,000 yearly license kept for 5 years costs 240,000: building saves 60,000. Enter your salaries, build time, fee and years of use. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Salaries
120,000
Build time
1.5
License fees
48,000
Years
5
You get
Build cost
180,000
Buy cost
240,000
Cheaper
build
Cheaper cost
180,000

Choosing whether to build software in house or buy a vendor subscription is a cash decision, not a slogan. Engineering managers and finance partners need the total cost of staffing a team through the build versus paying license fees for a horizon of years, then a clear cheaper option they can take to a budget meeting. This build-or-buy calculator accepts the loaded annual salaries of the in-house team, the calendar years of build effort, the annual license or subscription fee, and the number of years you will keep paying that fee. It multiplies salaries by build time for the in-house total, multiplies license fees by years for the buy total, and names the cheaper path.

What a build-or-buy comparison is and how both totals are formed

A build-or-buy comparison for software asks one cash question: over a stated horizon, is it cheaper to staff an in-house team through the build, or to pay a vendor subscription for the same years of use. The in-house total is the loaded annual salaries of everyone on the build multiplied by the calendar years of design and construction. Loaded means the figure already includes burden such as payroll tax, benefits, and a share of overhead; if you only have a headline salary, raise it before you paste it.

Build time is measured in years, so six months is entered as 0.5 and eighteen months as 1.5; the product is a one-time cash outlay for the construction window, not a forever run-rate. The buy total is the annual license or subscription fee multiplied by the horizon in years. That fee is the amount you actually write on a purchase order for one year of the product you would otherwise build, including the seats you already know you need.

The cheaper option is the path whose total is smaller; when the two totals match after rounding to currency, the result is a tie rather than a fabricated preference. This identity does not add residual maintenance after the build, does not discount cash flows to present value, and does not invent a cost of delay: those belong to a fuller net-present-value model. It answers the honest first cut that a budget meeting actually uses.

Where a build-or-buy software calculator earns its keep

Startup founders choosing between writing an internal tool and subscribing to a vendor can paste loaded salaries, a realistic build window, the published annual fee, and a three-to-five-year horizon, then store cheaper beside the decision log. Agency leads who quote custom software against a SaaS retainer can show a client both totals from the same module the client can re-run after the meeting. Failed validation does not consume balance.

The capability never discounts at a hurdle rate, never adds post-launch maintenance, and never fetches a vendor price list; those belong to a capital-budget model and to a separate catalogue. Keep the four numbers finite, keep years strictly positive, pin cheaper in tests, and you get a reproducible build-or-buy call for widgets, board packs, and edge workers without standing up a full TCO stack of your own.

Internal tool versus vendor subscription

Paste loaded team salaries, months converted to years of build, the annual SaaS fee, and a planning horizon to see which path is cheaper before the sprint is staffed.

Agency quote against a SaaS retainer

Show a client the in-house build total next to the multi-year license total from the same numbers they can re-run after the meeting.

What happens if years is zero or negative?

A comparison horizon must be a positive number of years; a zero or negative horizon would make the subscription total meaningless.

What does loaded salary mean in a build vs buy comparison?

It is the full yearly cost of the people on the build, including payroll tax, benefits and a share of overhead. If you only know the headline salaries, raise them before entering them, or building will look cheaper than it is.

How do I enter a build time of six or eighteen months?

Build time is entered in years, so six months is 0.5 and eighteen months is 1.5. The result is a one-time cost for the construction period, not a yearly running cost.

Does the comparison include maintenance or the time value of money?

No. It leaves out upkeep after the build, does not discount future payments and does not add a cost for waiting. It is the first cash comparison a budget meeting uses; a fuller analysis can add those later.

After how many years does the license cost more than building?

Divide the build cost by the yearly fee. In the example, 180,000 of build cost against a 48,000 yearly license breaks even at 3.75 years; any horizon longer than that favours building.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/fin/build-or-buy

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/fin/build-or-buy \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"salaries":120000,"build_time":1.5,"license_fees":48000,"years":5}'
{
  "salaries": 120000,
  "build_time": 1.5,
  "license_fees": 48000,
  "years": 5
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "fin.build_or_buy",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

When years is not a positive number the task fails with invalid_input instead of inventing a horizon.

What a build-or-buy comparison is and how both totals are formed

Pin cheaper, build_cost, and buy_cost in tests; savings is the absolute gap between those two totals.

Input contract, response shape, and error behaviour

Magnitudes above one trillion are rejected so a single isolate cannot be asked to emit non-finite products. Rounding is half-up so goldens compare byte-for-byte across runtimes. POST a JSON body with four required finite numbers. salaries is the annual loaded payroll of the in-house team in currency units per year; aliases salary, team_salary, and annual_salary are accepted. build_time is the calendar years of design and build effort; aliases build_years, development_years, and effort_years are accepted. license_fees is the annual subscription or license in the same currency; aliases license, subscription, and annual_license are accepted. years is the comparison horizon — how long you will pay the vendor; aliases horizon, years_of_use, and horizon_years are accepted. Each field may arrive as a JSON number or as a numeric string. Missing fields, empty strings, and non-finite values fail with invalid_input naming the field. salaries, build_time, and license_fees may be zero: a volunteer build, an already-finished codebase, or a free product are valid planning cases, not errors. The distinctive failure is a non-positive horizon: if years is zero or negative the task fails rather than returning a buy total of nothing that would always look cheaper than a real build. On success the body echoes the four inputs; build_cost as salaries times build_time; buy_cost as license_fees times years; cheaper as build, buy, or tie; cheaper_cost as the winning total; savings as the absolute gap; savings_percent of the more expensive total; cost_difference as build_cost minus buy_cost; and a formula string. When license_fees is strictly positive, break_even_years is also returned as the years of subscription that equal the in-house total.

Where a build-or-buy software calculator earns its keep

Corporate procurement screens can call the free browser path for a first look and the API for a stored file, guaranteeing that the figure a controller saw on the landing page matches the figure filed after signup.

Procurement first cut for a board pack

Store cheaper, build_cost, and buy_cost beside the decision log so a later question about why you subscribed (or built) has a reproducible answer.

How does the build-or-buy calculator decide which option is cheaper?

It computes build_cost as salaries times build_time and buy_cost as license_fees times years, then returns the path with the smaller total (or tie when they match after rounding).

Is build_time entered in months or in years?

In years. Use a fraction for part of a year: six months is 0.5, nine months is 0.75, eighteen months is 1.5. Salaries and license_fees stay annual.

What does a tie mean, and when is break_even_years omitted?

A tie means the rounded in-house total equals the rounded subscription total. break_even_years is omitted when license_fees is zero, because dividing by a free subscription is not a defined payback.

What does the build-or-buy software calculator cost?

The browser tool is free. API requests use prepaid balance at $0.002 per successful call; invalid input is not billed.

Read the full KIT documentation →