ForHosting KIT · Finance & money

Growing annuity calculator

A first payment of 100 growing 3% a period, discounted at 8% over 5 periods, is worth 422.03508855 today and 620.108005 at the last payment. Value a rising salary, pension or lease stream in one step. 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
Payment
100
Growth rate
3
Discount rate
8
Periods
5
You get
Growth rate decimal
0.03
Discount rate decimal
0.08
Present value
422.03508855
Future value
620.108005

A growing annuity is a finite stream of end-of-period payments that increase at a constant rate. Searchers who already know the first payment, the growth rate, the discount rate, and how many periods the stream lasts type growing annuity calculator when they want both the present value and the future value, not a lump-sum compounder and not a perpetual Gordon model. This calculator takes those four numbers, treats both rates as percent points so three means three percent, requires periods to be a positive integer, and returns the ordinary growing-annuity present value together with the future value of the same stream.

What a growing annuity is and how present and future value are formed

A growing annuity is a finite sequence of end-of-period cash flows in which the first payment arrives at the end of period one and each later payment is the previous payment multiplied by one plus a constant growth rate. That is a different object from a lump-sum future-value problem, which compounds a single present amount, and from a growing perpetuity, which never stops.

If the first payment is PMT, the growth rate as a decimal is g, and the discount rate as a decimal is r, the n cash flows are PMT, then PMT times one plus g, and so on up to PMT times one plus g to the power n minus one. When they are equal the geometric ratio is one and the present value collapses to PMT times n over one plus r.

The future value of the same stream, measured at the date of the last payment, is the present value grown at r for n periods, or equivalently PMT times the difference of one plus r to the n and one plus g to the n, divided by r minus g.

A worked case of one hundred growing at three percent and discounted at eight percent for five periods is the canonical classroom check: the first cash flow is one hundred, the fifth is one hundred times 1.03 to the fourth, and both reported values are deterministic functions of those four inputs. The implementation does not look up a market yield, does not switch from ordinary to due timing, and does not extend the stream to infinity; those are other searches.

Salary and pension streams that grow on a fixed schedule

Turn a first payment, a contractual raise rate, a discount rate, and an integer horizon into present value and future value for offer letters, pension illustrations, and landing-page widgets.

Rent and lease escalators

Value a lease whose rent steps up at a constant percent each period, and report both the discounted present cost and the accumulated future worth at the last payment date.

Classroom time-value-of-money checks

Let students submit payment, growth, discount rate, and periods and verify both closed forms, including the equal-rate special case and the hard fail when the period count is not a positive integer.

How are the present and future value of a growing annuity calculated?

For an ordinary growing annuity the cash flows are payment, then payment times (1+g), up to n payments. Both results are rounded half-up to eight decimals.

What happens if the number of periods is not a positive integer?

Zero, negative, and fractional horizons are not accepted; enter a whole number of payment periods, one or more. Failed validation is not billed.

Are the growth and discount rates percents or decimal fractions?

Enter both as percent points per period, not as decimal fractions — three means three percent per period, not 0.03. The engine divides each rate by one hundred before applying the closed form.

What happens when the growth rate equals the discount rate?

The usual formula would divide by zero, so a simpler one applies: the present value is the first payment times the number of periods, divided by one plus the rate. The result stays exact instead of failing.

Are the payments at the end or the start of each period?

At the end. The first payment arrives at the end of period one and each later one grows from it. Payments made at the start of each period need a different calculation, so adjust before comparing.

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/growing-annuity

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/growing-annuity \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"payment":100,"growth_rate":3,"discount_rate":8,"periods":5}'
{
  "payment": 100,
  "growth_rate": 3,
  "discount_rate": 8,
  "periods": 5
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "fin.growing_annuity",
  "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 zero, negative, or non-integer period count fails with invalid_input instead of inventing a fractional-period or reverse-time story.

What a growing annuity is and how present and future value are formed

Discounting each flow at r and summing produces the closed form present_value equals PMT times one minus the ratio of one plus g over one plus r raised to n, all divided by r minus g, when the two rates differ. This calculator accepts both rates as percent points, so a typed three means three percent, and it returns both present_value and future_value after half-up rounding to eight decimals.

Input contract, response shape, and error behaviour

Pair the result with your own contribution schedule if you need beginning-of-period due timing; start here when the product question is a transparent ordinary growing annuity for a page, a worksheet, or a batch of scenarios that already share one growth path and one integer horizon. POST a JSON body with four required finite numbers: payment (the first end-of-period cash flow; aliases pmt, p, amount, first_payment), growth_rate (the constant growth of later payments as a percent such as three for three percent; aliases g, growth, growth_percent), discount_rate (the interest rate per period as a percent; aliases r, rate, interest_rate, i), and periods (the count n of payments, a positive integer; aliases n, nper, number_of_periods). Each field may arrive as a JSON number or as a numeric string. Missing fields, empty strings, booleans, and non-finite values fail with invalid_input naming the field and are not billed. If either rate is less than or equal to negative one hundred percent, one plus the decimal rate is not positive and the power is not a useful real factor, so that case is invalid_input as well. On success the body echoes payment, growth_rate, discount_rate and periods; reports growth_rate_decimal and discount_rate_decimal rounded half-up to eight decimals; sets rates_equal when the two percent inputs match; returns present_value and future_value rounded the same way; and includes a short formula string restating the closed form that was used.

Where a growing annuity calculator earns its keep

Educators teaching the time value of money can seed classroom examples that show one hundred growing at three percent and discounted at eight percent for five periods versus the equal-rate special case, and can demonstrate the hard fail when someone types a zero, negative, or fractional period count. Failed validation does not consume balance. Compensation and lease teams reconciling a salary or rent that escalates on a fixed schedule can post the same four numbers the product already stores and quote a stable present_value with an eight-decimal contract, then read future_value as the accumulated worth of that stream at the last payment date. Because the implementation is tier A parse, every successful call costs the published $0.002 base price with no model tokens and no outbound network. Keep both rates above negative one hundred percent, keep periods a positive integer, pin the rounded present_value and future_value in tests, and you get reproducible growing-annuity results for widgets, CMS embeds, and edge workers without standing up a spreadsheet service of your own.

What happens when the growth rate equals the discount rate?

The general formula would divide by zero, so the engine switches to the equal-rate identities: present_value equals payment times periods over one plus r, and future_value equals payment times periods times (1+r) to the periods minus one. The response sets rates_equal to true in that case.

What does the growing annuity 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 →