Deferred annuity calculator
Value a stream of equal payments that begins after a wait: 1000 a year for 10 years, starting after a 5-year deferral at 8%, is worth 4566.77 today, against 6710.08 if the payments began right away. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Payment
- 1,000
- Rate percent
- 8
- Deferral periods
- 5
- Payment periods
- 10
- Rate decimal
- 0.08
- Present value
- 4,566.77
- Ordinary present value
- 6,710.08
- Deferral factor
- 0.680583197
A deferred annuity is a level stream of future payments that does not begin until after a waiting period, so its present value is smaller than the present value of an ordinary annuity with the same payment and count. Retirement income that starts years after premiums stop, structured settlements with a gap before installments, and prize or lottery payouts that wait for a deferral window all share that timing. This deferred annuity calculator takes the periodic payment amount, the interest rate per period, the number of deferral periods, and the number of payment periods, then returns the discounted present value of the delayed stream. The closed form is the ordinary-annuity present-value factor times one extra discount for each deferral period, collapsing to payment times payment periods when the rate is zero.
What the present value of a deferred annuity means
An ordinary annuity pays a constant amount at the end of every compounding period starting with period one. A deferred annuity is the same level stream, except the first payment is postponed until after a waiting window of k periods, so cash arrives at the end of periods k plus one through k plus n. That extra wait is the entire reason this calculator exists as its own search intent: an ordinary present-value table overstates what the delayed stream is worth today by ignoring the discount over the deferral.
Algebraically, the present value of n equal payments of PMT at periodic rate r, starting after k periods, is the ordinary annuity factor of one minus (1 plus r) to the minus n, all over r, multiplied by the extra discount (1 plus r) to the minus k. Equivalently, it is the present value of an ordinary annuity of k plus n payments minus the present value of an ordinary annuity of k payments, which cancels the would-be cash during the wait.
When r is exactly zero there is no time value, so every payment simply stacks and the present value collapses to PMT times n regardless of how long the deferral lasts. A textbook check is one thousand at the end of each of ten years after a five-year wait at eight percent per year: the ordinary ten-year factor is about six point seven one, the five-year discount is about zero point six eight one, and the deferred present value is near four thousand five hundred sixty-seven.
Use this identity for a pension that starts after a vesting gap, a structured settlement with a pause, or a lease that holidays the first several periods—not when cash is assumed to start immediately.
When a deferred annuity value is useful
Retirement and pension products often quote a monthly income that does not start until after a vesting or retirement date: feed the monthly payment, the monthly rate (annual nominal divided by twelve, entered as a percent), the month count of the wait, and the month count of the payout window, and you get the present value of that delayed income plus the ordinary counterpart so the cost of waiting is visible.
Structured-settlement desks, lottery administrators, and legal-finance teams discount a level installment schedule that begins after a gap; converting that schedule into a lump-sum offer at a funding rate is the same identity. Classrooms and exam-prep generators need a deterministic oracle that distinguishes deferred from ordinary, handles a zero rate without dividing by zero, and rejects a negative period count instead of returning NaN. Product landing pages that rank for deferred annuity calculator benefit from a free browser path that matches the paid automation path on the same pure module.
Pair it with a future-value or payment solver when the question is how a known deposit stream will grow, not what a delayed payout is worth today.
What you can do with it
Pension income after a vesting gap
Discount a level retirement income that starts after a wait of k periods, and compare it with the ordinary present value of the same stream starting now.
Structured settlements and prize payouts
Turn a delayed installment schedule into a lump-sum present value at a funding rate, then compare that offer with waiting for the cash.
Classroom and exam checks
Verify textbook deferred-annuity present values, including the zero-rate stack PMT times n, without dividing by zero or accepting a negative period count.
FAQ
What is the difference between a deferred annuity and an ordinary annuity?
An ordinary annuity starts paying at the end of the first period. A deferred annuity waits k periods before that stream begins, so its present value is the ordinary present value multiplied by (1+r) to the minus k. When k is zero the two results coincide.
What if the interest rate is zero?
The solver uses that identity instead of dividing by r.
How is the present value of a deferred annuity calculated?
Value the payments as an ordinary annuity, then discount once more for each waiting period. In the example, 6710.08 times a deferral factor of 0.680583197 gives 4566.77.
When does the first payment of a deferred annuity arrive?
At the end of the first period after the wait. With 5 deferral periods, the first payment comes at the end of period 6, and one more follows each period until all 10 are made.
Do the periods have to be years?
No. A period can be a year, a month or any interval, as long as the interest rate you enter is the rate per period and the waiting and payment counts use the same period.
Related tools
For developers — API access
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.
API endpoint
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.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/fin/deferred-annuity \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"payment":1000,"rate_percent":8,"deferral_periods":5,"payment_periods":10}'const res = await fetch("https://api.kit.forhosting.com/fin/deferred-annuity", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"payment": 1000,
"rate_percent": 8,
"deferral_periods": 5,
"payment_periods": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/deferred-annuity",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"payment": 1000,
"rate_percent": 8,
"deferral_periods": 5,
"payment_periods": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/deferred-annuity", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"payment":1000,"rate_percent":8,"deferral_periods":5,"payment_periods":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"payment":1000,"rate_percent":8,"deferral_periods":5,"payment_periods":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/deferred-annuity", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"payment": 1000,
"rate_percent": 8,
"deferral_periods": 5,
"payment_periods": 10
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.deferred_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.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_periods | 1200 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
A negative deferral count or payment count fails with invalid_input instead of a silent NaN.
Input contract, formula, and response fields
Optionally set decimals to an integer from zero to eight for currency-style rounding of money outputs; the default is two. Money-like fields use half-up rounding once from the raw floating-point results so goldens stay byte-stable across runtimes. POST a JSON body with four required finite numbers: payment, the equal cash amount of each installment, which may be any finite number (positive inflows, negative outflows, zero allowed); rate_percent, the interest rate per period expressed as a percent (eight means eight percent per period, not a decimal fraction), which must be greater than negative one hundred so that one plus r stays positive; deferral_periods, a whole number of waiting periods from zero through one thousand two hundred; and payment_periods, a whole number of subsequent payments in the same range. Negative deferral_periods or payment_periods fail with invalid_input naming the field—those failures are not billed. The engine forms the decimal rate r as rate_percent over one hundred, then computes the ordinary present value as payment times (one minus (1 plus r) to the minus n) over r when r is not zero, or payment times n when r is zero, and multiplies by (1 plus r) to the minus k to obtain the deferred present value. total_payments is payment times payment_periods; ordinary_present_value is the same stream as if it started immediately; deferral_factor is the extra discount (1 plus r) to the minus k. The response echoes payment (rounded), rate_percent, deferral_periods, payment_periods, rate_decimal, present_value, ordinary_present_value, deferral_factor, total_payments, and a short formula string. Missing fields, empty strings, non-finite values, non-integer or out-of-range period counts, rate at or below negative one hundred, and out-of-range decimals also fail with invalid_input. Example: payment one thousand, rate_percent eight, deferral_periods five, payment_periods ten yields a deferred present value near four thousand five hundred sixty-six point seven seven at two decimals.
Where a deferred annuity present-value API earns its keep
Sweep rate_percent or the two period counts from your own code to build present-value tables; pin present_value and deferral_factor in tests; keep requests small. This tool does not grow a future-value annuity due, amortize a loan, or model changing payments or rates—only the fixed-rate present value of a delayed level ordinary annuity.
Technical questions
How is the present value of a deferred annuity calculated?
With a periodic rate r = rate_percent/100: present_value = payment × [(1 − (1+r)^(−payment_periods))/r] × (1+r)^(−deferral_periods). When the rate is zero, present_value = payment × payment_periods. The API also returns ordinary_present_value, deferral_factor, and total_payments.
What happens if a period count is negative?
The task fails with invalid_input. deferral_periods and payment_periods must be whole numbers from 0 through 1200; a negative count is not a waiting window or a payment count and is not billed.
What does the deferred annuity calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.