{
  "id": "pmi",
  "version": "964a5487a90c",
  "status": "published",
  "name": "PMI Calculator",
  "question": "What does mortgage insurance cost?",
  "summary": "Computes the monthly private mortgage insurance on a conventional loan from its yearly rate, and when it can be cancelled at 80% and ends by law at 78% of the home’s original value.",
  "category": "finance",
  "subcategory": "loans",
  "url": "https://www.acalculator.org/finance/pmi-calculator",
  "markdown": "https://www.acalculator.org/finance/pmi-calculator.md",
  "kind": "schedule",
  "method": "PMI a month = yearly rate × loan ÷ 12; it ends with the payment that brings the scheduled balance to 78% of the original value, and never after payment n ÷ 2; you may ask to cancel at 80%.",
  "assumptions": [
    "The loan is a conventional fixed-rate loan with borrower-paid PMI charged monthly as a yearly percent of the original loan.",
    "The original value is the price (or the appraised value, if lower). Dates follow the original schedule, with no extra payments.",
    "The Homeowners Protection Act 78% and midpoint rules apply; you are current on payments.",
    "FHA and VA loans have their own rules; see the FHA and VA loan calculators."
  ],
  "inputs": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "price": {
        "title": "Home price",
        "description": "The price or the appraised value, whichever is lower: the home’s original value.",
        "type": "number",
        "x-unit": "USD",
        "minimum": 1000,
        "maximum": 100000000
      },
      "down": {
        "title": "Down payment",
        "description": "The cash you pay toward the price. PMI is charged when it is under 20%.",
        "type": "number",
        "x-unit": "USD",
        "minimum": 0,
        "maximum": 100000000
      },
      "pmi": {
        "title": "PMI rate (per year)",
        "description": "The yearly PMI premium as a percent of the loan amount, from your lender’s quote.",
        "type": "number",
        "x-unit": "percent",
        "minimum": 0,
        "maximum": 5
      },
      "rate": {
        "title": "Interest rate",
        "description": "The fixed yearly rate on the mortgage. It sets how fast the balance falls.",
        "type": "number",
        "x-unit": "percent",
        "minimum": 0,
        "maximum": 30
      },
      "years": {
        "title": "Loan term (years)",
        "description": "The length of the mortgage, for example 30 or 15 years.",
        "type": "integer",
        "minimum": 1,
        "maximum": 40
      },
      "start": {
        "title": "Loan start date",
        "description": "The day the loan starts. The first payment is one month later.",
        "type": "string",
        "format": "date"
      }
    }
  },
  "outputs": {
    "monthly": {
      "label": "PMI a month",
      "description": "The yearly PMI rate × the loan amount ÷ 12, or 0 with 20% or more down.",
      "format": "money"
    },
    "yearly": {
      "label": "PMI a year",
      "description": "The monthly PMI × 12.",
      "format": "money"
    },
    "months": {
      "label": "Months of PMI",
      "description": "Payments with PMI until it ends automatically at 78% of the value, or at the loan’s midpoint.",
      "format": "integer"
    },
    "total": {
      "label": "Total PMI",
      "description": "The monthly PMI × the months of PMI.",
      "format": "money"
    },
    "request": {
      "label": "Can ask to cancel after payment",
      "description": "The payment after which the scheduled balance reaches 80% of the original value, if PMI is still charged then.",
      "format": "integer"
    },
    "requestDate": {
      "label": "Can ask to cancel from",
      "description": "The month of that payment, when a start date is given.",
      "format": "month-year"
    },
    "endDate": {
      "label": "Last PMI payment",
      "description": "The month of the last payment with PMI, when a start date is given.",
      "format": "month-year"
    },
    "ltv": {
      "label": "Loan-to-value",
      "description": "The loan as a percent of the home price.",
      "format": "percent"
    },
    "pi": {
      "label": "Principal and interest",
      "description": "The level monthly mortgage payment.",
      "format": "money"
    },
    "withPmi": {
      "label": "Payment with PMI",
      "description": "Principal and interest plus the monthly PMI.",
      "format": "money"
    },
    "note": {
      "label": "Note",
      "description": "A note when the down payment is 20% or more, so no PMI is charged.",
      "format": "text"
    }
  },
  "defaultAnswer": {
    "inputs": {
      "price": 400000,
      "down": 40000,
      "pmi": 0.5,
      "rate": 6.5,
      "years": 30,
      "start": "2026-09-30"
    },
    "outputs": {
      "monthly": 150,
      "yearly": 1800,
      "months": 109,
      "total": 16350,
      "request": 95,
      "requestDate": "2034-08-30",
      "endDate": "2035-10-30",
      "ltv": 90,
      "pi": 2275.4448845746697,
      "withPmi": 2425.4448845746697
    },
    "text": "On a $400,000.00 home with $40,000.00 down, PMI at 0.5% a year costs $150.00 a month for 109 months."
  },
  "examples": [
    {
      "given": {
        "price": 300000,
        "down": 30000,
        "pmi": 0.5,
        "rate": 7,
        "years": 30
      },
      "expect": {
        "monthly": 112.5,
        "yearly": 1350,
        "months": 115,
        "total": 12937.5,
        "request": 101,
        "ltv": 90
      },
      "source": "hand calculation in content.mdx (the same inputs as the WP-31 mortgage calculator’s PMI example: 115 months, $12,937.50); Python 3 in docs/progress/WP-48/python/pmi.py"
    },
    {
      "given": {
        "price": 400000,
        "down": 40000,
        "pmi": 0.5,
        "rate": 6.5,
        "years": 30,
        "start": "2026-10-01"
      },
      "expect": {
        "monthly": 150,
        "months": 109,
        "total": 16350,
        "request": 95,
        "requestDate": "2034-09-01",
        "endDate": "2035-11-01"
      },
      "source": "hand calculation in content.mdx; Python 3 in docs/progress/WP-48/python/pmi.py"
    },
    {
      "given": {
        "price": 100000,
        "down": 5000,
        "pmi": 1,
        "rate": 12,
        "years": 30
      },
      "expect": {
        "monthly": 79.16666666666667,
        "months": 180,
        "total": 14250
      },
      "source": "Homeowners Protection Act midpoint rule: at 12% the balance is still above 78% at month 180, so PMI ends at the midpoint"
    },
    {
      "given": {
        "price": 400000,
        "down": 80000,
        "pmi": 0.5,
        "rate": 6.5,
        "years": 30
      },
      "expect": {
        "monthly": 0,
        "months": 0,
        "total": 0,
        "note": "With 20% or more down, a conventional loan needs no PMI."
      },
      "source": "CFPB: PMI is usually required with less than 20% down; 20% down is an 80% loan-to-value"
    }
  ],
  "sources": [
    "12 U.S.C. 4901, Definitions (cancellation date at 80%, termination date at 78% of the original value, midpoint of the amortization period, original value). https://www.law.cornell.edu/uscode/text/12/4901",
    "12 U.S.C. 4902, Termination of private mortgage insurance (borrower request, automatic termination, final termination at the midpoint). https://www.law.cornell.edu/uscode/text/12/4902",
    "Consumer Financial Protection Bureau, When can I remove private mortgage insurance (PMI) from my loan? https://www.consumerfinance.gov/ask-cfpb/when-can-i-remove-private-mortgage-insurance-pmi-from-my-loan-en-202/",
    "Freddie Mac, Breaking down PMI (about $30 to $70 a month per $100,000 borrowed). https://myhome.freddiemac.com/buying/breaking-down-pmi",
    "Amortized loan payment (annuity) formula: S. A. Broverman, Mathematics of Investment and Credit, chapter 3."
  ],
  "related": [
    "mortgage",
    "fha-loan",
    "down-payment",
    "home-affordability"
  ],
  "changelog": []
}
