---
title: "Computes a full loan amortization schedule given principal, annual interest rate, and term in months. Returns the fixed monthly payment, total interest, total payments, and a month-by-month breakdown of principal vs interest. Supports optional extra monthly payments — shows months saved and interest saved. Works for mortgages (30yr/15yr), auto loans, personal loans, and student loans. All currency-agnostic. Use with /run?page=1&page_size=12 to paginate the schedule array for context-friendly agent consumption."
method: POST
path: "/api/loan_amortization"
tags: ["general"]
---

# Computes a full loan amortization schedule given principal, annual interest rate, and term in months. Returns the fixed monthly payment, total interest, total payments, and a month-by-month breakdown of principal vs interest. Supports optional extra monthly payments — shows months saved and interest saved. Works for mortgages (30yr/15yr), auto loans, personal loans, and student loans. All currency-agnostic. Use with /run?page=1&page_size=12 to paginate the schedule array for context-friendly agent consumption.

`POST /api/loan_amortization`

## Request

- Base URL: `https://calc.engineer`
- URL: `https://calc.engineer/api/loan_amortization`
- Auth: none declared

## Request body

- object
  - `principal` number, required: Loan principal amount in dollars (or any currency unit).
  - `annual_rate_pct` number, required: Annual interest rate as a percentage (e.g., 6.5 for 6.5%).
  - `term_months` number, required: Loan term in months. Max 600 (50 years). Common values: 360 (30yr), 180 (15yr), 60 (5yr auto).
  - `extra_payment` number: Optional fixed extra monthly payment toward principal. Defaults to 0.

## Response `200`

Computed result for loan_amortization

- object
  - `result` object, required
    - `monthly_payment` number, required: Fixed monthly payment (excluding extra payments).
    - `total_payments` number, required: Sum of all payments over the life of the loan.
    - `total_interest` number, required: Total interest paid over the life of the loan.
    - `total_extra_paid` number, required: Total extra payments made.
    - `payoff_months` number, required: Actual number of months to pay off (may be less than term with extra payments).
    - `interest_saved` number, required: Interest saved by extra payments vs. full term. 0 if no extra payments.
    - `schedule` object[], required: Month-by-month amortization schedule.
      - `month` number, required: Payment number (1-based).
      - `payment` number, required: Total payment this month.
      - `principal_paid` number, required: Portion of payment applied to principal.
      - `interest_paid` number, required: Portion of payment applied to interest.
      - `extra_paid` number, required: Extra payment applied this month.
      - `remaining_balance` number, required: Outstanding balance after this payment.
  - `tool` string, required
  - `version` string, required
  - `computed_at` string, date-time, required
  - `chain` object, required
    - `feeds` unknown[]
      - unknown
    - `accepts_from` unknown[]
      - unknown

## Other responses

- `400`: Validation error or invalid JSON
- `404`: Tool not found

---

[API](https://skmtc.dev/calc/apis/calc-engineer-api.md) · [All operations](https://skmtc.dev/calc/apis/calc-engineer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/calc/apis/calc-engineer-api/revisions/8830480ec488?raw)
