Calculate PMI removal threshold from home value and loan balance
This PMI removal threshold calculator compares your current mortgage principal with your home's present value.
Run — free
It reports the loan-to-value ratio, identifies the loan balance equal to 80% of that value, and shows how much additional principal you would need to pay to reach that point. The result is a planning estimate rather than a lender decision: mortgage rules, valuation requirements, payment history, seasoning periods, and removal procedures can differ by loan and servicer. Use matching currency units for both inputs.
Start with a consistent home value and principal balance
Enter the home's current value and the unpaid principal balance of the mortgage. Both figures must use the same currency, but no currency symbol is needed because the calculation is a ratio. The home value should reflect the valuation you want to test, such as a recent appraisal, a lender-approved valuation, or a cautious market estimate. The loan balance should be principal only, not the original loan amount, a monthly payoff quote that includes interest, or the sum of future payments. The calculator divides the current balance by the home value to produce loan-to-value, commonly abbreviated LTV. For example, a balance of 340,000 against a value of 400,000 produces an 85% LTV. If the balance is greater than the entered home value, the request is rejected instead of presenting a misleading PMI target. That condition represents an LTV above 100% and falls outside this calculator's stated input contract. Confirm both numbers were captured on reasonably close dates before relying on the comparison.
Understand the 80% threshold calculation
The standard target balance is calculated as 80% of the entered home value. The calculator then subtracts that target from the current loan balance. When the current balance is above the target, the positive difference is the additional principal that must be paid to mathematically reach 80% LTV while the home value remains unchanged. When the balance is already at or below the target, the required amount is zero and the response marks the threshold as reached. This is intentionally a principal calculation: ordinary interest, escrow, taxes, insurance, fees, and prepayment charges do not reduce the loan balance dollar for dollar. Values are rounded consistently for a stable result, while the underlying comparison uses the calculated amounts. The response includes both a decimal LTV ratio and a percentage so it can support software integrations as well as direct reading. It also returns the exact home-value-based target balance, making the arithmetic transparent and easy to compare with a mortgage statement or amortization plan.
Use the result as a planning benchmark
Reaching 80% LTV does not automatically guarantee immediate PMI cancellation. The threshold is a useful planning benchmark, but the applicable process depends on the mortgage, jurisdiction, investor rules, servicer procedures, payment history, and the value the lender accepts. A lender may calculate LTV from the property's original value, require a new appraisal, apply a different threshold for borrower-requested or automatic termination, or impose seasoning and good-payment requirements. Contact the servicer before making a large extra payment solely to remove PMI, and ask which balance, valuation date, documents, fees, and request steps apply. You can rerun the calculator with several plausible home values to see how valuation changes affect the target, or use projected future balances to estimate when regular payments may cross it. Because the algorithm has no network access, it does not retrieve your loan, property estimate, PMI premium, or lender policy. It simply gives a deterministic comparison from the two amounts supplied, which makes it suitable for budgeting tools, mortgage dashboards, and repeatable scenario analysis through the API at $0.002 per request.
What you can do with it
Plan an extra principal payment
Estimate the principal gap between today's mortgage balance and an 80% LTV target before discussing PMI removal with the servicer.
Compare valuation scenarios
Run conservative and optimistic home values to see how an accepted appraisal could change the target loan balance.
Add LTV monitoring to a dashboard
Calculate a consistent LTV percentage and threshold gap from stored property values and current principal balances.
FAQ
What formula does the calculator use?
Current LTV is loan balance divided by home value. The target balance is home value multiplied by 0.80, and principal to pay is the positive difference between the current and target balances.
Does reaching 80% LTV guarantee PMI removal?
No. It identifies a standard mathematical benchmark, but your loan terms, lender-approved value, payment record, local rules, and servicer process determine eligibility.
Which home value should I enter?
Use the value relevant to the scenario you are testing. Ask your servicer whether it uses the original property value, a new appraisal, or another approved valuation.
Should the loan balance include interest and escrow?
No. Enter the unpaid principal balance. Interest, taxes, insurance, escrow, fees, and other payoff items are not part of this LTV principal calculation.
What does an error saying the loan exceeds the home value mean?
The entered balance implies an LTV above 100%. Check the figures and their units; this capability intentionally rejects that case.
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/realestate/pmi-threshold-calc \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"home_value":400000,"loan_balance":340000}'const res = await fetch("https://api.kit.forhosting.com/realestate/pmi-threshold-calc", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"home_value": 400000,
"loan_balance": 340000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/realestate/pmi-threshold-calc",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"home_value": 400000,
"loan_balance": 340000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/realestate/pmi-threshold-calc", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"home_value":400000,"loan_balance":340000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"home_value":400000,"loan_balance":340000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/realestate/pmi-threshold-calc", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"home_value": 400000,
"loan_balance": 340000
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "realestate.pmi_threshold_calc",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |