ForHosting KIT · Finance & money

Amortization schedule calculator

Borrow 1,200 at 12% for 12 months and you pay 106.62 a month and 79.42 in interest, yet the first payment puts only 94.62 toward the debt. The table shows that split for every month, down to a zero balance. 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
1,200
Annual rate
12
Term months
12
You get
Monthly payment
106.62
Total payment
1,279.42
Total interest
79.42

principal and interest per payment

What an amortization schedule tells you

A fixed-rate loan looks simple from the outside — the same payment every month until it is gone — but the inside of that payment changes constantly. In the early months most of the money services the interest and only a small slice reduces the debt; as the balance falls, the interest shrinks and the principal share grows. The amortization schedule calculator makes that visible row by row.

You send three numbers: the principal, the annual rate in percent and the term in months. You get back the monthly payment, the total you will pay, the total interest, and a schedule with one entry per period showing the payment, its interest part, its principal part and the balance after it. That is the table a bank prints on page two of a loan contract, produced deterministically by the standard annuity formula, with the final payment adjusted so the balance ends at exactly zero instead of a rounding artifact.

How the numbers are computed

The monthly payment uses the classic annuity formula: principal times the monthly rate, divided by one minus one plus the monthly rate raised to the negative number of months. With a zero percent rate the payment is simply the principal divided by the term. Each period's interest is the outstanding balance times the monthly rate, rounded to cents, and the principal part is whatever remains of the payment.

Everything is rounded to two decimals as it is computed, which is exactly why the last row is special: it is set to the remaining balance plus its interest, guaranteeing the schedule closes at zero. There is also an upper bound of 1200 periods, a hundred years, to keep responses bounded.

Ways to put the schedule to work

Another is planning prepayments — look at how much interest is still packed into the early rows and you can see what an extra payment saves. Accounting teams use the schedule to split each booked payment between interest expense and principal repayment, and support teams use it to reconcile a customer's statement against the contract. Nothing is stored: the computation is pure arithmetic over your three inputs, performed and discarded.

Split booked payments in accounting

Use each period's interest and principal parts to post interest expense and debt reduction separately.

Plan a prepayment

See how much of the remaining interest sits in the early periods and estimate what an extra payment saves.

What inputs does it need?

Three: the principal (loan amount), the annual interest rate in percent, and the term in months.

What happens if the term is not a whole number?

The term must be a positive integer number of months, and invalid input is never charged.

Why is the last payment different from the others?

Each row is rounded to cents, so the final payment is adjusted to clear the exact remaining balance and close the schedule at zero.

Does it support a zero percent loan?

Yes. With an annual rate of 0 the payment is simply the principal divided by the number of months, and every row's interest is zero.

Is my loan data stored?

No. The schedule is computed from your input and discarded; nothing is persisted.

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/amortization

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/amortization \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"principal":20000,"annual_rate":7.5,"term_months":60}'
{
  "principal": 20000,
  "annual_rate": 7.5,
  "term_months": 60
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "fin.amortization",
  "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 amortization schedule API takes a loan's principal, annual interest rate and term in months and returns the complete repayment plan: the fixed monthly payment and, for every single period, how much of that payment goes to interest, how much reduces the principal, and the balance that remains. It also returns the total paid and the total interest over the life of the loan, so you can compare offers, plan prepayments or reconcile a lender's statement without opening a spreadsheet.

How the numbers are computed

Input validation is strict — the principal must be positive, the rate non-negative, and the term must be a positive whole number of months; a fractional term like 36.5 is rejected with an invalid_input error and is never charged.

Ways to put the schedule to work

The most common use is comparing offers: two loans with the same monthly payment can cost very different totals, and the total_interest field answers that in one glance. Because the same code runs free in your browser on this page and as the paid API at $0.002 per request, you can prototype interactively and then automate the identical calculation in your pipeline, knowing the numbers will match to the cent.

Compare two loan offers

Run both sets of terms and compare total_interest: the cheaper loan is not always the one with the lower monthly payment.

What does it cost?

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

Read the full KIT documentation →