Home › Finance › Amortization Schedule Calculator
Amortization Schedule Calculator
Builds the amortization schedule of a fixed-rate loan: the level monthly payment, a year-by-year summary of principal, interest and balance, the first 12 monthly rows, and the interest and time saved by a fixed extra monthly payment.
When to use
You need to see how each payment splits into principal and interest over the life of a mortgage or loan, the balance at the end of each year, or the effect of paying extra every month.
Do not use when: You only need the payment amount (use loan-payment or mortgage-payment), or you know the payment and want the payoff time of a revolving balance (use debt-payoff).
Formula
i = annual_rate_percent / 1200; n = 12·term_years + term_months; monthly_payment = principal × i / (1 − (1 + i)^−n) (principal / n if i = 0). Each month: interest = balance × i; principal_paid = monthly_payment + extra_monthly_payment − interest (capped at the balance); balance −= principal_paid, until the balance is 0.
Standard monthly amortization with end-of-month payments and the extra amount applied to principal from the first month; the final payment is reduced to what remains. Lenders round payments to cents, so real schedules can differ by a few cents.
Inputs
| Parameter | Type | Unit | Required | Description |
|---|---|---|---|---|
principal | number | yes | Amount borrowed. Range: > 0, ≤ 1000000000000 | |
annual_rate_percent | number | % | yes | Fixed nominal annual rate in percent; the monthly rate is this / 12. Range: ≥ 0, ≤ 100 |
term_years | number | years | no | Loan term in years; added to term_months when both are given. Total term is limited to 40 years. Range: ≥ 0, ≤ 40 |
term_months | integer | months | default 0 | Additional months of term (e.g. term_months=60 alone for a five-year loan). Range: ≥ 0, ≤ 480 |
extra_monthly_payment | number | default 0 | Optional fixed amount paid on top of the scheduled payment every month, applied to principal. Range: ≥ 0, ≤ 1000000000000 | |
start_date | date | no | Optional loan origination date (YYYY-MM-DD); the first payment is due one month later and payoff_date is reported. |
Outputs
| Output | Type | Unit | Description |
|---|---|---|---|
monthly_payment | number | Level payment from the annuity formula (before any extra payment). | |
number_of_payments | integer | 12 × term_years + term_months. | |
payoff_months | integer | months | Actual number of payments including the extra payment (equals number_of_payments without one). |
payoff_time | string | payoff_months in years and months. | |
payoff_date | date | start_date plus payoff_months (only when start_date is given). | |
total_interest | number | Interest paid over the actual schedule (with extra payments). | |
total_paid | number | principal + total_interest. | |
scheduled_total_interest | number | monthly_payment × number_of_payments − principal. | |
interest_saved | number | scheduled_total_interest − total_interest. | |
months_saved | integer | months | number_of_payments − payoff_months. |
first_month_interest | number | principal × annual_rate_percent / 1200. | |
first_month_principal | number | monthly_payment + extra_monthly_payment − first_month_interest. | |
yearly_summary | list | One row per loan year: year, principal_paid, interest_paid, ending_balance (at most 40 rows). | |
first_12_months | list | Rows for months 1–12: month, payment, principal, interest, balance. |
Example
200,000 at 6 % for 30 years: {"principal":200000,"annual_rate_percent":6,"term_years":30} → {"monthly_payment":1199.1,"number_of_payments":360,"payoff_months":360,"payoff_time":"30 years","total_interest":231676.38,"total_paid":431676.38,"scheduled_total_interest":231676.38,"interest_saved":0,"months_saved":0,"first_month_interest":1000,"first_month_principal":199.1}
300,000 at 5 % for 15 years with 300 extra per month from 2026-01-01: {"principal":300000,"annual_rate_percent":5,"term_years":15,"extra_monthly_payment":300,"start_date":"2026-01-01"} → {"monthly_payment":2372.38,"number_of_payments":180,"payoff_months":152,"payoff_time":"12 years 8 months","payoff_date":"2038-09-01","total_interest":105316.26,"scheduled_total_interest":127028.56,"interest_saved":21712.3,"months_saved":28}
GET https://tttkmbb.com/api/v1/calculate/amortization-schedule?principal=200000&annual_rate_percent=6&term_years=30
Machine access
- API:
GET https://tttkmbb.com/api/v1/calculate/amortization-schedule(query parameters) orPOSTwith a JSON body{"inputs": {...}} - Schema: https://tttkmbb.com/api/v1/calculators/amortization-schedule · Markdown: https://tttkmbb.com/finance/amortization-schedule.md · JSON definition: https://tttkmbb.com/finance/amortization-schedule.json
- MCP: server
https://tttkmbb.com/mcp, toolcalculate_amortization_schedule - OpenAPI operationId:
calculate_amortization_schedule - Freshness:
static. Authentication: none. Rate limit: fair use (see rate limits).
Sources
FAQ
Why is the first payment mostly interest?
Interest is charged on the outstanding balance, which is largest at the start: 200,000 × 6 % / 12 = 1,000 of the first 1,199.10 payment is interest and only 199.10 reduces the balance. The split reverses as the balance falls.
How is the extra payment applied?
It is added to every scheduled payment and goes entirely to principal, which shortens the term and lowers total interest; the scheduled payment itself does not change.
Why only a yearly summary and 12 months?
A 30-year loan has 360 rows; the yearly totals plus the first year give the shape of the schedule. Any single month's balance follows from balance = P(1+i)^k − PMT((1+i)^k − 1)/i.
Related calculators
- Loan Payment Calculator — Payment and totals without the schedule.
- Mortgage Payment Calculator — Full housing payment including taxes and insurance.
- Debt Payoff Calculator — Payoff time for a chosen payment on a revolving balance.