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

- Calculator id: `amortization-schedule` · Category: Finance (`finance`) · Tool name: `calculate_amortization_schedule`
- Canonical page: https://tttkmbb.com/finance/amortization-schedule · This document: https://tttkmbb.com/finance/amortization-schedule.md · JSON definition: https://tttkmbb.com/finance/amortization-schedule.json

## Purpose

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.

**Use when:** 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).

## Input

| Parameter | Type | Unit | Required | Description |
| --- | --- | --- | --- | --- |
| `principal` | number |  | required | Amount borrowed. (> 0, max 1000000000000) |
| `annual_rate_percent` | number | % | required | Fixed nominal annual rate in percent; the monthly rate is this / 12. (min 0, max 100) |
| `term_years` | number | years | optional | Loan term in years; added to term_months when both are given. Total term is limited to 40 years. (min 0, max 40) |
| `term_months` | integer | months | optional, default 0 | Additional months of term (e.g. term_months=60 alone for a five-year loan). (min 0, max 480) |
| `extra_monthly_payment` | number |  | optional, default 0 | Optional fixed amount paid on top of the scheduled payment every month, applied to principal. (min 0, max 1000000000000) |
| `start_date` | date |  | optional | Optional loan origination date (YYYY-MM-DD); the first payment is due one month later and payoff_date is reported. |

## Output

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

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

## Data Sources

- Wikipedia – Amortization calculator (annuity payment formula) — https://en.wikipedia.org/wiki/Amortization_calculator (reference, retrieved 2026-09-24)
- Investopedia – Amortization Schedule: Definition, Formula and Example — https://www.investopedia.com/terms/a/amortization_schedule.asp (reference, retrieved 2026-09-24)
- CFPB – Owning a Home: loan costs and monthly payment components — https://www.consumerfinance.gov/owning-a-home/ (government, retrieved 2026-09-24)

Data freshness: `static`. Deterministic formula with fixed constants; results never go stale. Inputs supplied by the caller determine the output.

## API

- `GET https://tttkmbb.com/api/v1/calculate/amortization-schedule?principal=…&annual_rate_percent=…`
- `POST https://tttkmbb.com/api/v1/calculate/amortization-schedule` with JSON body `{"inputs": {…}}`
- Response: unified envelope (`success`, `request`, `result.values`, `result.units`, `sources`, `freshness`, `timestamp`, `next_actions`, `links`); see https://tttkmbb.com/docs/response-format.md
- Schema: https://tttkmbb.com/api/v1/calculators/amortization-schedule · OpenAPI operationId `calculate_amortization_schedule` in https://tttkmbb.com/openapi.json
- Authentication: none. Rate limit: fair use, see https://tttkmbb.com/docs/rate-limits.md.

## MCP

- Server: `https://tttkmbb.com/mcp` (Streamable HTTP, JSON-RPC 2.0, no auth)
- Tool: `calculate_amortization_schedule` (dedicated) or `run_calculator` with `{"calculator_id": "amortization-schedule", "inputs": {…}}`

## Example

- 200,000 at 6 % for 30 years: inputs `{"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: inputs `{"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
```

## Limitations

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). 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. All values are computed from the formula above; no measurement or live data is involved.

## 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

- [Loan Payment Calculator](https://tttkmbb.com/finance/loan-payment.md) — Payment and totals without the schedule.
- [Mortgage Payment Calculator](https://tttkmbb.com/finance/mortgage-payment.md) — Full housing payment including taxes and insurance.
- [Debt Payoff Calculator](https://tttkmbb.com/finance/debt-payoff.md) — Payoff time for a chosen payment on a revolving balance.
