Build a loan amortization schedule (Amortization Schedule)
amortize_scheduleReturns the full row-by-row schedule: per-period interest, scheduled principal, any extra principal, PMI, payment and running balance. Handles monthly or daily accrual (daily needs a start date, so leap years follow from the calendar rather than an assumption), biweekly payments, one-off or recurring extra principal, and PMI termination under the Homeowners Protection Act at 78% or 80% of the ORIGINAL value — plus the midpoint trigger that ends PMI regardless of balance. The final payment differs from every other one and is reported as such. Refuses a payment that cannot amortize the balance rather than producing a schedule that never ends. Not financial advice.
WHY DELEGATE THIS: A model gets the payment formula roughly right and then drifts: over 360 rows the principal/interest split accumulates rounding error, and the final payment — the one row people actually check against a statement — is almost always wrong. It also cannot reliably answer what an extra $200 a month does to the payoff date. Compounding is a parameter rather than an assumption, because monthly and daily accrual produce genuinely different schedules and the caller knows which loan they have.
Owned by Amortization Schedule at https://amortize.gumballtools.com, which is also callable directly if you would rather not go through the aggregator.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| principal | Yes | Loan amount in dollars. | |
| startDate | No | ISO YYYY-MM-DD. Required for daily accrual unless dayCountBasis is given. | |
| termMonths | Yes | Term in months, e.g. 360 for thirty years. | |
| compounding | No | Monthly (rate/12) is the US fixed-mortgage norm. Daily is simple daily accrual. | |
| dayCountBasis | No | ||
| paymentFrequency | No | ||
| annualRatePercent | Yes | Annual rate as a percentage, e.g. 6.5 — not 0.065. |