ForHosting KIT · Finance & money

Annuity payment calculator

Borrow 10,000 at 1% a month over 12 months and exactly one installment clears it: 888.49. Use it to price a loan payment, size withdrawals from a savings pot or check a lease quote. 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
Principal amount
10,000
Rate per period
0.01
Periods
12
You get
Payment
888.49

Use it to price a loan installment, size the withdrawal from a retirement pot or check the lease quote a dealer just handed you — one deterministic call, no spreadsheet, no signup.

What an annuity payment actually is

An annuity is a stream of equal payments made at regular intervals — monthly loan installments, quarterly pension withdrawals, annual lease charges. The payment is the number that makes the whole stream equivalent, at the given interest rate, to the principal today. The formula behind it, payment = principal × r ÷ (1 − (1 + r)^(−n)), is the same one every bank, landlord and pension fund uses, derived from discounting each future payment back to today and solving for the level amount.

Because the rate is expressed per period, the calculation works for any cadence: a monthly rate with monthly periods, an annual rate with annual periods, or any other consistent pair. What matters is consistency — the rate and the period count must describe the same interval. Send a monthly rate with a period count measured in years and the answer will be wrong by construction, and no calculator can rescue mismatched units.

Keep the two aligned and the result is exact, deterministic and reproducible on any machine, which is why the same computation runs identically in your browser and on our edge.

Inputs, units and edge cases

The principal is the present value of the annuity: the loan amount, the pot being drawn down, the price being financed — it must be positive. The periods field is the number of payments and must be a positive integer up to 1200, which comfortably covers a hundred years of monthly payments. Two edge cases are handled deliberately.

And the returned payment is rounded to two decimals — cents — so the response is byte-for-byte stable between runs and between machines. If you need more precision, keep full precision on your side and treat the returned value as the canonical settled amount.

How to use it well and what it does not do

Typical uses fall into three patterns. Lenders and marketplaces call it to quote an installment before running a full underwriting flow, because the payment is the first number a customer asks for. SaaS products embed it behind their own pricing calculators so the math is maintained in one place instead of re-implemented — often incorrectly — in every frontend.

And finance teams use it to reverse-check quotes they receive: if a dealer's monthly figure does not match the formula, something else, a fee or an insurance premium, is hiding in the payment. And it models no fees, taxes, balloons or rate changes. When your case fits the plain annuity model, this is the right tool; when it does not, compute the payment here as a baseline and layer the extras on top in your own code.

Quote a loan installment

Return the monthly payment for a financed amount and rate before the customer commits to a full application.

Size retirement withdrawals

Compute the fixed withdrawal a lump sum can sustain over a chosen number of periods at an expected return.

Reverse-check a dealer quote

Compare the quoted monthly payment against the formula to expose hidden fees or bundled extras.

Is the rate a percentage or a decimal?

A decimal per period: 0.01 means 1% per period. Divide an annual percentage by 100 and then by the number of periods per year.

What happens with a 0% rate?

It is supported: the payment is simply the principal divided by the number of periods, which is the exact limit of the annuity formula at zero interest.

Does it return the full amortization schedule?

No. It returns the payment amount only. The period-by-period schedule is a separate capability.

Is it an annuity due or an ordinary annuity?

An ordinary annuity: payments are assumed at the end of each period. For annuity-due payments, multiply the result accordingly on your side.

How can I check a dealer's monthly payment quote?

Enter the amount financed, the rate per period and the number of payments. If the dealer's monthly figure is higher than the result, something else, such as a fee or an insurance premium, is hiding in the payment.

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/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/annuity \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"principal":10000,"rate_per_period":0.01,"periods":12}'
{
  "principal": 10000,
  "rate_per_period": 0.01,
  "periods": 12
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "fin.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.

max_periods1200
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.

The annuity payment API answers one of the oldest questions in finance: given a sum of money today, an interest rate per period and a number of periods, what fixed payment extinguishes the balance exactly on schedule? It applies the closed-form annuity formula and returns the payment amount, nothing more and nothing less.

What an annuity payment actually is

Borrow 10,000 at 1% per month for 12 months and there is exactly one monthly amount that brings the balance to zero with the last payment: that amount is what this endpoint returns.

Inputs, units and edge cases

The endpoint takes three numbers. The rate per period is a decimal, so 1% per month is 0.01, not 1 and not 0.01% — and it must be non-negative; a negative rate is rejected with an invalid_input error and is never charged. A zero rate is legal and means simple division: with no interest, the payment is exactly the principal split across the periods, which is the correct mathematical limit of the formula as the rate approaches zero, so the endpoint returns it directly rather than failing on a division by zero.

How to use it well and what it does not do

It is worth being clear about what the endpoint deliberately leaves out. It returns the payment only; it does not produce the period-by-period amortization schedule with the split between interest and principal — that is a different capability. It assumes an ordinary annuity, meaning payments land at the end of each period; annuities due, where payments come at the start, differ by one factor of (1 + r). Those omissions are what keep it fast, cheap at $0.002 per request, and exactly predictable.

What does it cost?

$0.002 per request via the API. It is also free to run in your browser on this page.

Why was my negative rate rejected?

A negative interest rate has no meaning for this payment model, so the request fails with invalid_input and is not charged.

Read the full KIT documentation →