{
  "object": "schema",
  "resource": "https://apis.finance/v1/amortization",
  "sku": "Amortization math",
  "status": "LIVE",
  "callable": true,
  "price": "$0 · keyless",
  "price_note": "Posted, flat, fixed at post. Zero is a posted price and it binds. No key, no registration, no payment rail, no 402.",
  "method": "POST",
  "request_content_type": "application/json",
  "description": "A level-payment amortization schedule computed from the numbers you supply. Pure math: no upstream, no stored input, no Application, no Decision, no advice.",
  "request": {
    "principal": {
      "type": "number",
      "required": true,
      "unit": "currency major units",
      "minimum": 0.01,
      "maximum": 1000000000000,
      "note": "The financed amount. Rounded to cents on receipt."
    },
    "annual_rate_pct": {
      "type": "number",
      "required": true,
      "unit": "percent per year, nominal, compounded monthly",
      "minimum": 0,
      "maximum": 100,
      "note": "6.5 means 6.5%, not 0.065. Zero is accepted and yields a straight-line schedule."
    },
    "term_months": {
      "type": "integer",
      "required": true,
      "minimum": 1,
      "maximum": 600,
      "note": "Number of level payments."
    },
    "start_date": {
      "type": "string",
      "required": false,
      "format": "YYYY-MM-DD",
      "note": "First payment due date. When present, every period carries a due_date; when absent, periods are numbered only. Day-of-month is clamped to the length of each month."
    }
  },
  "response": {
    "object": "amortization.schedule",
    "fields": {
      "payment": "The level payment, in currency major units, as a string with two decimals.",
      "total_interest": "Sum of the interest column.",
      "total_paid": "Sum of the payment column.",
      "schedule": "An array of periods. Each carries period, [due_date], payment, interest, principal, balance. The final period's balance is exactly 0.00."
    }
  },
  "method_note": "Deterministic: identical requests return identical bytes. Money is computed in integer cents; the final period is closed by assignment so the balance lands on zero exactly.",
  "refusals": "A malformed or out-of-range request returns 422 with an errors array naming every offending field and a cure object saying how to clear it. A refusal serves no record and charges nothing.",
  "meter": "No record, no charge. The served schedule is the record. The posted price is $0.",
  "not_advice": "This is arithmetic, not a credit decision, not an offer of credit, and not a term quoted to a Borrower. apis.finance is not a lender and does not decide.",
  "rate_card": "https://apis.finance/rate-card.json"
}