---
title: "Amortize a fixed-rate loan"
method: POST
path: "/v1/loan/amortization"
tags: ["Utilities"]
---

# Amortize a fixed-rate loan

`POST /v1/loan/amortization`

## Request

- Base URL: `https://api.numeratica.com`
- URL: `https://api.numeratica.com/v1/loan/amortization`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Computes the level monthly payment, total interest, payoff time, and an optional per-period amortization schedule. Supports an optional extra monthly principal payment, which shortens the term. Deterministic.

## Request body

- LoanRequest
  - `principal` number, required: Amount borrowed (<= 1e12).
  - `annual_rate` number, required: Nominal APR (0–4, i.e. up to 400%).
  - `term_months` integer, required
  - `extra_monthly_payment` number: Extra principal each month; shortens the term.
  - `include_schedule` boolean: Return the full per-period schedule (can be large).

## Response `200`

Amortization result

- LoanResponse
  - `result_id` string
  - `engine_version` string
  - `inputs` LoanRequest
    - `principal` number, required: Amount borrowed (<= 1e12).
    - `annual_rate` number, required: Nominal APR (0–4, i.e. up to 400%).
    - `term_months` integer, required
    - `extra_monthly_payment` number: Extra principal each month; shortens the term.
    - `include_schedule` boolean: Return the full per-period schedule (can be large).
  - `result` object
    - `monthly_payment` number: Level payment actually made (scheduled + extra).
    - `scheduled_payment` number: Level payment for the original term, no extra.
    - `number_of_payments` integer: Actual payments to payoff (<= term if extra paid).
    - `total_interest` number
    - `total_paid` number
    - `schedule` object[]: Per-period rows; present only when include_schedule is true.
      - `period` integer
      - `payment` number
      - `principal` number
      - `interest` number
      - `balance` number
  - `disclaimer` string

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid API key.
- `405`: Method not allowed
- `429`: The key's per-minute request budget is exceeded. Retry after the delay in the Retry-After header.
- `503`: A dependency (e.g. the key store) is temporarily unavailable, or the request exceeded its compute deadline. Retryable.

---

[API](https://skmtc.dev/numeratica/apis/numeratica-financial-planning-calculations-api.md) · [All operations](https://skmtc.dev/numeratica/apis/numeratica-financial-planning-calculations-api/llms.txt) · [OpenAPI document](https://skmtc.dev/numeratica/apis/numeratica-financial-planning-calculations-api/revisions/075bcfbd1ebf?raw)
