ForHosting KIT · Finance & money

Savings plan calculator

A plan of 1,000 up front and 100 a month at 5% for 10 years ends at 17,175.24, of which 4,175.24 is interest on the 13,000 you deposit. Any positive number of years works, fractions included. 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
Amount
1,000
Monthly deposit
100
Interest rate
5
Years
10
You get
Months
120
Monthly rate
0.0041666667
Final balance
17,175.24
Total deposited
13,000

A savings plan is the household product of an opening amount plus a standing monthly deposit that compounds at a stated annual interest rate for a chosen number of years. This savings plan calculator accepts those four numbers—initial amount, monthly deposit, annual interest as a percent, and a positive horizon in years—and returns the final balance after monthly compounding. It does not invert a target into the monthly amount you would need, convert currencies, or project a mutual-fund SIP under a different name.

What a savings plan grows and how the closed form works

A savings plan in this calculator has two cash-flow shapes that compound under the same nominal annual interest rate for a strictly positive horizon. The initial amount is a single deposit credited at the start of the plan. The monthly deposit is a constant amount credited at the end of every month for the whole horizon.

Convert the annual percent to a monthly rate i by dividing by one hundred and then by twelve. The number of months n is twelve times the horizon in years. The opening amount grows as P times one plus i to the n, which is ordinary monthly compounding of a principal.

The monthly deposits are treated as an ordinary end-of-month annuity: PMT times the quantity one plus i to the n, minus one, divided by i. When the annual rate is zero the monthly rate is zero and that annuity ratio is undefined, so the deposit future value collapses to PMT times n, which is simply the cash you put in each month. The final balance is the sum of the two pieces.

Total deposited is the opening amount plus PMT times n, and interest is the final balance minus that cash. This landing is not a lumpsum-only compound-interest page, not a beginning-of-period annuity-due identity, and not a months-to-goal inverter: those queries already have their own calculators. A savings plan also refuses a zero-year horizon: without a positive number of years there is no plan to compound, only a snapshot of cash you already hold, so the contract fails rather than returning the opening amount dressed up as growth.

Emergency-fund and house-deposit plans

Project the combined balance of an opening amount invested today together with a fixed monthly deposit at a stated annual interest rate over a positive horizon.

Classroom and coaching oracles

Generate reproducible savings-plan answer keys that split the final balance into cash deposited and interest earned so learners can check each piece.

How is the savings plan final balance calculated?

The opening amount grows as P×(1+i)^n. Monthly deposits are an ordinary end-of-month annuity PMT×[((1+i)^n−1)/i], or PMT×n when i is zero. The final balance is the sum of those two pieces.

Must the horizon in years be positive?

Yes. years must be a finite number greater than zero and at most eighty.

Is the annual interest rate a percent or a decimal?

A percent. Send 5 for five percent per year. Sending 0.05 would be treated as five hundredths of a percent, not five percent.

Are monthly deposits credited at the start or the end of each month?

At the end of each month (ordinary annuity). Beginning-of-month annuity-due identities are a different contract.

Can a plan use only monthly deposits, with no opening amount?

Yes. Either part can be zero: set the opening amount to zero for a plan built only on monthly deposits, or set the monthly deposit to zero to watch a single sum grow over the years.

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/savings-plan

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/savings-plan \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"amount":1000,"monthly_deposit":100,"rate":5,"years":10}'
{
  "amount": 1000,
  "monthly_deposit": 100,
  "rate": 5,
  "years": 10
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "fin.savings_plan",
  "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.

A horizon that is zero or negative is not a plan: years must be positive, and a non-positive period fails with invalid_input.

Input contract, response shape, and error behaviour

Example: one thousand opening amount, one hundred monthly deposit, five percent, and ten years is one hundred twenty months at a five-twelfths percent monthly rate. Failed validation does not consume balance. POST a JSON body with four required finite numbers. amount is the opening cash in one currency; aliases initial, initial_amount, deposit, principal, and starting_balance are accepted so spreadsheets can keep familiar column names, and the value must sit between zero and one trillion inclusive. monthly_deposit is the recurring plan contribution in the same units, with aliases monthly, contribution, pmt, and monthly_contribution, also from zero through one trillion. Either cash-flow may be zero so you can project a pure opening amount or a pure monthly plan on the same contract. rate is the nominal annual interest as a percent—five means five percent per year, not a decimal 0.05 unless you truly intend five hundredths of a percent; aliases annual_rate, interest_rate, and annual_percent map to the same field. rate must be from zero through one hundred. A negative rate fails with invalid_input naming rate; that is a contracted error and it is not billed. years is the plan horizon, a finite positive number greater than zero and at most eighty; fractional years such as two point five are allowed, and aliases t, time, period, and duration are accepted. If years is zero or negative, the task fails with invalid_input naming years, because a savings plan without a positive horizon is not a plan. Each field may arrive as a JSON number or a numeric string. On success the body echoes amount, monthly_deposit, rate, and years, reports months as twelve times years and monthly_rate as the decimal i, and returns final_balance, total_deposited, and interest rounded half-up to two decimal places for stable currency-style goldens, plus a formula string restating the closed form.

Where a savings plan calculator API earns its keep

Households use a savings plan calculator when an emergency fund, a house deposit, or a rainy-day account sits beside a standing monthly transfer and they need one number for the combined horizon. Personal-finance coaches need a deterministic oracle that rejects a non-positive period instead of silently showing the opening cash as if a plan had run. When you later need beginning-of-month annuity-due deposits or annual rather than monthly contributions, switch to those identities rather than stretching this four-field savings-plan contract. Product teams wire the same contract into onboarding demos so a user who types an initial amount, a monthly deposit, an annual percent, and a duration sees the identical final_balance the API will later return in production tests. Keep requests small, pin rounded final_balance, total_deposited, and interest in tests, and you get reproducible savings-plan figures for worksheets, LMS plugins, and edge workers without standing up a spreadsheet service of your own.

Product demos and CI fixtures

Seed banking apps and automated tests with deterministic final_balance, total_deposited, and interest that match the free browser widget byte-for-byte.

What does the savings plan calculator cost?

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

Read the full KIT documentation →