{
  "id": "mortgage-payoff",
  "version": "5e575c292185",
  "status": "published",
  "name": "Mortgage Payoff Calculator",
  "question": "What does mortgage payoff save?",
  "summary": "Computes how much sooner extra monthly, yearly, or lump-sum payments pay off a fixed-rate mortgage, and the interest they save, from the original loan and the payments already made.",
  "category": "finance",
  "subcategory": "loans",
  "url": "https://www.acalculator.org/finance/mortgage-payoff-calculator",
  "markdown": "https://www.acalculator.org/finance/mortgage-payoff-calculator.md",
  "kind": "schedule",
  "method": "payment P = A × r ÷ (1 − (1 + r)^−N); balance today B = A(1 + r)^k − P((1 + r)^k − 1) ÷ r after k payments; from today, each month interest = balance × r and P plus any extra, minus the interest, lowers the balance.",
  "assumptions": [
    "The rate is fixed and every payment so far was made on time, so the balance today is the scheduled balance.",
    "Interest is charged monthly at the rate ÷ 12; the extra goes straight to the balance.",
    "The yearly extra is paid with payments 12, 24, 36, … from now; the lump sum with the next payment.",
    "Taxes, insurance, and mortgage insurance are not included.",
    "Values are not rounded to the cent between months; only the display is rounded."
  ],
  "inputs": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "amount": {
        "title": "Original loan amount",
        "description": "The amount you borrowed when the mortgage started.",
        "type": "number",
        "x-unit": "USD",
        "minimum": 1000,
        "maximum": 100000000
      },
      "rate": {
        "title": "Interest rate",
        "description": "The mortgage’s fixed yearly rate. The monthly rate is this divided by 12.",
        "type": "number",
        "x-unit": "percent",
        "minimum": 0,
        "maximum": 30
      },
      "years": {
        "title": "Original term (years)",
        "description": "The length of the mortgage when it started, for example 30 or 15.",
        "type": "integer",
        "minimum": 1,
        "maximum": 40
      },
      "paid": {
        "title": "Payments made so far",
        "description": "How many monthly payments you have made (12 a year).",
        "type": "integer",
        "minimum": 0,
        "maximum": 479
      },
      "extra": {
        "title": "Extra each month",
        "description": "An extra amount paid with every payment from now on.",
        "type": "number",
        "x-unit": "USD",
        "minimum": 0,
        "maximum": 10000000
      },
      "yearly": {
        "title": "Extra each year",
        "description": "An extra amount paid once a year, with every 12th payment from now.",
        "type": "number",
        "x-unit": "USD",
        "minimum": 0,
        "maximum": 10000000
      },
      "lump": {
        "title": "Lump sum now",
        "description": "A one-time extra amount paid with the next payment.",
        "type": "number",
        "x-unit": "USD",
        "minimum": 0,
        "maximum": 100000000
      },
      "start": {
        "title": "Next payment month",
        "description": "The month of your next payment. It dates the schedule and the payoff month.",
        "type": "string",
        "format": "date"
      }
    }
  },
  "outputs": {
    "sooner": {
      "label": "Paid off sooner by",
      "description": "How much sooner the extra payments pay off the mortgage, in years and months.",
      "format": "duration"
    },
    "saved": {
      "label": "Interest saved",
      "description": "The interest the extra payments save over the rest of the loan.",
      "format": "money"
    },
    "balanceNow": {
      "label": "Balance today",
      "description": "The balance on the original schedule after the payments made so far.",
      "format": "money"
    },
    "payment": {
      "label": "Monthly payment",
      "description": "The original principal and interest payment.",
      "format": "money"
    },
    "monthsLeft": {
      "label": "Payments left with extra",
      "description": "How many payments are left with the extra payments.",
      "format": "integer"
    },
    "originalLeft": {
      "label": "Payments left without extra",
      "description": "How many payments are left on the original schedule.",
      "format": "integer"
    },
    "interest": {
      "label": "Interest left with extra",
      "description": "The interest you will still pay, with the extra payments.",
      "format": "money"
    },
    "interestBefore": {
      "label": "Interest left without extra",
      "description": "The interest you would still pay on the original schedule.",
      "format": "money"
    },
    "payoff": {
      "label": "New payoff month",
      "description": "The month of the last payment with the extra payments.",
      "format": "month-year"
    }
  },
  "defaultAnswer": {
    "inputs": {
      "amount": 300000,
      "rate": 6.5,
      "years": 30,
      "paid": 60,
      "extra": 200,
      "yearly": 0,
      "lump": 0,
      "start": "2026-09-29"
    },
    "outputs": {
      "sooner": {
        "years": 5,
        "months": 0
      },
      "saved": 66943.94388112088,
      "balanceNow": 280832.932324692,
      "payment": 1896.2040704788913,
      "monthsLeft": 240,
      "originalLeft": 300,
      "interest": 221084.34493785445,
      "interestBefore": 288028.2888189753,
      "payoff": "2046-08-29"
    },
    "text": "Paying extra on this $300,000.00 mortgage pays it off 5 years sooner and saves $66,943.94 of interest."
  },
  "examples": [
    {
      "given": {
        "amount": 300000,
        "rate": 6.5,
        "years": 30,
        "paid": 60,
        "extra": 200
      },
      "expect": {
        "payment": 1896.2040704788958,
        "balanceNow": 280832.9323246919,
        "monthsLeft": 240,
        "sooner": {
          "years": 5,
          "months": 0
        },
        "saved": 66943.94388112472
      },
      "source": "hand calculation in content.mdx; Python 3 in docs/progress/WP-31/python/mortgage_payoff.py"
    },
    {
      "given": {
        "amount": 120000,
        "rate": 0,
        "years": 20,
        "paid": 120,
        "extra": 0,
        "lump": 10000,
        "start": "2026-11-01"
      },
      "expect": {
        "balanceNow": 60000,
        "monthsLeft": 100,
        "sooner": {
          "years": 1,
          "months": 8
        },
        "saved": 0,
        "payoff": "2035-02-01"
      },
      "source": "hand calculation in content.mdx: at 0% the balance is 120,000 − 120 × 500"
    },
    {
      "given": {
        "amount": 200000,
        "rate": 5,
        "years": 15,
        "paid": 24,
        "extra": 0,
        "yearly": 2000,
        "lump": 5000
      },
      "expect": {
        "originalLeft": 156,
        "monthsLeft": 132,
        "saved": 12114.654353036109,
        "interest": 53458.42096247102
      },
      "source": "month by month in Python (docs/progress/WP-31/python/mortgage_payoff.py), rule in content.mdx"
    }
  ],
  "sources": [
    "Consumer Financial Protection Bureau, How does paying down a mortgage work? https://www.consumerfinance.gov/ask-cfpb/how-does-paying-down-a-mortgage-work-en-1943/",
    "Consumer Financial Protection Bureau, What is a prepayment penalty? https://www.consumerfinance.gov/ask-cfpb/what-is-a-prepayment-penalty-en-1957/",
    "Outstanding balance by the prospective and retrospective methods: S. A. Broverman, Mathematics of Investment and Credit, chapter 3."
  ],
  "related": [
    "mortgage",
    "amortization",
    "mortgage-recast",
    "loan-payoff"
  ],
  "changelog": []
}
