Second mortgage payment calculator
Borrow 50,000 at a fixed 8.5% over 15 years and the monthly payment is 492.37, with 38,626.56 of interest if you keep the loan to the end. Check a second mortgage or home equity loan offer before you sign. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Principal amount
- 50,000
- Annual rate
- 8.5
- Term years
- 15
- Term months
- 180
- Monthly rate
- 0.00708333
- Monthly payment
- 492.37
- Total paid
- 88,626.56
A second mortgage or closed-end home equity loan (HELOAN) sits behind your first lien and is usually repaid with a fixed rate and a fixed term. Before you sign, you need the true monthly installment and the lifetime interest you will pay if you hold the loan to maturity—not a teaser estimate that ignores amortization. This second mortgage payment calculator accepts the principal, the fixed annual rate as a percent, and the term in whole years, then applies the standard fully amortizing annuity formula used by lenders for closed-end second liens.
How the fixed-rate second mortgage payment is calculated
A fixed-rate second mortgage and a closed-end home equity loan share the same payment math as a first mortgage: level monthly payments that fully retire principal and interest by the final period. When the rate is positive, the payment M equals principal times r times (1 plus r) to the n, all divided by ((1 plus r) to the n minus one). When the annual rate is exactly zero, the payment is simply principal divided by n so you never divide by zero.
Total paid is M times n, and total interest is total paid minus principal. That interest figure is what you compare against cash-out alternatives, HELOC interest-only periods, or a cash-out refinance on the first lien. Because second mortgages often carry higher rates than first liens, small differences in rate or term swing total interest sharply—running the formula before you lock is the difference between an informed quote and a surprise payment.
Who checks second mortgage payments
Homeowners comparing a cash-out second mortgage against a HELOC or a cash-out refinance need a reproducible monthly payment and total interest for each fixed quote they receive. Mortgage brokers and loan officers embed the same numbers in pre-approval packets and what-if dashboards so clients see second-lien cost beside first-lien payment without spreadsheet drift. Failed validation does not consume balance.
Keep requests small, pin rounded currency fields in tests, and you get stable second-mortgage payment math for widgets, LMS-style finance lessons, and edge workers without standing up a full LOS or amortization engine of your own.
What you can do with it
Homeowner quote checks
Enter principal, fixed rate, and term from a second-mortgage or HELOAN offer and verify monthly payment and total interest before you sign.
Broker and LO what-if sheets
Show clients side-by-side second-lien payments for different rates and terms next to their first-mortgage payment.
FAQ
Does this work for a home equity loan (HELOAN)?
Yes. Closed-end fixed-rate home equity loans use the same amortization math as a fixed second mortgage. Draw-period HELOCs with variable rates are out of scope.
How is the monthly payment calculated?
With the standard fully amortizing formula lenders use. The annual rate is divided by 12 to get a monthly rate, the years are multiplied by 12, and each level payment covers interest plus part of the principal until the balance reaches zero.
What happens if the rate is 0%?
The payment is simply the amount borrowed divided by the number of months, so nothing is ever divided by zero. Total interest is then zero and the total paid equals the principal.
Does the payment include closing costs, taxes or insurance?
No, it covers principal and interest only. Points, closing costs, taxes, insurance, your first mortgage payment and variable credit-line draws are left out, so add them yourself when you check affordability.
Why look at total interest and not just the monthly payment?
Because second mortgages often carry higher rates than first ones, and small changes in rate or term swing lifetime interest sharply. Total interest is the figure to set against a credit line or a cash-out refinance.
Related tools
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/finance/second-mortgage-payment \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"principal":50000,"annual_rate":8.5,"term_years":15}'const res = await fetch("https://api.kit.forhosting.com/finance/second-mortgage-payment", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"principal": 50000,
"annual_rate": 8.5,
"term_years": 15
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/finance/second-mortgage-payment",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"principal": 50000,
"annual_rate": 8.5,
"term_years": 15
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/finance/second-mortgage-payment", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"principal":50000,"annual_rate":8.5,"term_years":15}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"principal":50000,"annual_rate":8.5,"term_years":15}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/finance/second-mortgage-payment", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"principal": 50000,
"annual_rate": 8.5,
"term_years": 15
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "finance.second_mortgage_payment",
"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. |
Technical notes
How the fixed-rate second mortgage payment is calculated
Convert the annual rate to a monthly rate r equals annual_rate divided by one hundred divided by twelve, and convert the term to n equals term_years times twelve months.
Input contract, response shape, and validation
The calculator does not model points, closing costs, taxes, insurance, first-lien payment stacking, or variable HELOC draws; those belong in separate tools. Pair this result with your own debt-to-income or combined loan-to-value checks when underwriting. POST a JSON body with three required fields. principal is the second-lien loan amount in currency units and must be a finite number greater than zero. annual_rate is the fixed APR as a percent—use 8.5 for eight and a half percent, not 0.085—and must be a finite number greater than or equal to zero. term_years is the whole-year term (typical products are five, ten, fifteen, twenty, or thirty years) and must be a positive integer; the engine multiplies by twelve to obtain term_months. Missing fields, non-finite values, non-positive principal or term, and negative rates fail with invalid_input naming the problem and are not billed. On success the body echoes principal, annual_rate, term_years, and term_months; returns monthly_rate as the decimal per-period rate; monthly_payment as the fully amortizing installment; total_paid as the sum of all installments; total_interest as total_paid minus principal; and a short formula string you can show next to the numbers.
Where a second mortgage payment API earns its keep
Real-estate investors batch many second-lien scenarios through the JSON API when modeling acquisition financing stacked behind a first mortgage.
Integration use cases
Investor stacked-financing models
Batch fixed second-lien payment and interest figures through the API when modeling acquisition debt behind a first mortgage.
Technical questions
How do I calculate a second mortgage monthly payment?
Send principal (loan amount), annual_rate as a percent (e.g. 8.5), and term_years as a whole number. The API returns the fully amortizing monthly_payment, total_paid, and total_interest using the standard fixed-rate annuity formula.
Is annual_rate a percent or a decimal?
A percent. Use 8.5 for 8.5% APR, not 0.085. The engine divides by 100 and then by 12 to get the monthly rate.
What if the interest rate is zero?
The monthly payment is principal divided by the number of months (term_years × 12), and total_interest is zero. No division-by-zero occurs.
What does the second mortgage payment calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.