ForHosting KIT · Finance & money

Home loan calculator

A 300,000 home loan at 6.5% over 30 years means 360 equal monthly payments that add up to 682,632, of which 382,632 is interest. See the real monthly commitment and the full cost before you lock a rate. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Principal amount
300,000
Annual rate
6.5
Term years
30
You get
Term months
360
Monthly rate
0.0054166667
Monthly payment
1,896.2
Total repayment
682,632

A fixed-rate home loan is judged by the cash that leaves the account every month for as long as the note lasts, not by the headline annual rate alone. Splitting principal by the number of months ignores compound interest on a reducing balance and understates the true monthly commitment. This home loan calculator accepts a positive principal, an annual nominal interest rate as a percent, and a term as a whole number of years, applies the standard amortizing installment formula used for conventional mortgages, and returns the monthly payment together with total repayment and total interest.

How a fixed-rate home loan payment is worked out

A fixed-rate home loan is repaid in equal monthly installments until the balance reaches zero. The yearly rate is turned into a monthly one by dividing it by twelve and by one hundred, and the term in years is multiplied by twelve to get the number of payments: 30 years means 360 of them. Each payment first covers the interest on the balance still owed, and the rest reduces that balance. That is why the interest share of each payment shrinks over time while the principal share grows, even though the amount you pay never changes. If the rate is zero, the payment is simply the principal divided by the number of months.

What the result includes, and what it leaves out

You get three figures: the monthly payment, the total you will repay over the whole term and the total interest, which is that total minus the principal. With 300,000 at 6.5% over 30 years, interest alone comes to 382,632, more than the amount borrowed. Property taxes, homeowner insurance, discount points and origination fees are not added. If a fee is financed into the loan, include it in the principal; otherwise leave it out. The term must be a whole number of years, from one to 50. Comparing two quotes on total interest, not only on the monthly payment, shows which one really costs less.

Compare fixed-rate quotes

Turn principal, annual rate, and term in years into monthly payment, total repayment, and total interest before locking a conventional home loan.

Buyer landing pages

Let visitors enter a requested amount, published rate, and term in years to see the monthly home-loan payment next to each product card.

How is the home loan monthly payment calculated?

If the rate is zero, the payment is principal/n.

What happens if the term is not a positive integer?

Fractions, zero, booleans, and non-numeric values are rejected and not billed.

Does a 0% seller-financed note work?

Total interest is then zero aside from rounding.

Are taxes, insurance, points, and origination fees included?

No. Add any financed fees to principal if they go into the note; otherwise leave them out. Property tax and homeowner insurance are not part of this installment.

Why not just divide the loan by the number of months?

Because that ignores the interest charged every month on the balance still owed. Dividing 300,000 by 360 months leaves out the interest entirely, so it understates what actually leaves your account each month.

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.

POSThttps://api.kit.forhosting.com/fin/home-loan

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.

curl -X POST https://api.kit.forhosting.com/fin/home-loan \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"principal":300000,"annual_rate":6.5,"term_years":30}'
{
  "principal": 300000,
  "annual_rate": 6.5,
  "term_years": 30
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "fin.home_loan",
  "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.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

max_term_years50
HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

A term that is not a positive integer fails with invalid_input instead of inventing a schedule.

What a fixed-rate home loan monthly payment means and how the amortizing formula works

A fixed-rate home-loan monthly payment is the constant installment a borrower sends so that a principal P at annual nominal rate i percent is fully amortised in n months on a reducing-balance schedule. Money fields round to two decimal places so they match currency. Origination fees, discount points, property taxes, and homeowner insurance are not invented: add financed fees to principal if they go into the note, otherwise leave them out of the principal. The monthly rate r is the annual percent divided by twelve hundred: r equals annual_rate divided by twelve divided by one hundred. The number of payments n is term_years times twelve, because a home loan is quoted in years but repaid monthly. When r is greater than zero the closed form is monthly_payment equals P times r times (1 plus r) to the n, divided by (1 plus r) to the n minus one. That identity is the standard amortizing installment lenders publish for conventional mortgages: each installment covers interest on the outstanding principal first, then reduces the balance, so the interest share falls and the principal share rises even though the cash payment never changes. When the annual rate is zero the denominator would be zero, so the calculator switches to the honest special case monthly_payment equals P divided by n, which is how genuine interest-free notes are billed. The response also reports total_repayment, which is monthly_payment times term_months, and total_interest, which is total_repayment minus principal, so a buyer can see the true extra cost of stretching a fifteen-year note to thirty years.

Input contract, the positive-integer term rule, and the response shape

POST a JSON body with three required fields: principal, the financed amount as a finite number strictly greater than zero (aliases amount and loan_amount); annual_rate, the annual nominal interest as a percent such as 6.5 for six and a half percent per year, finite and at least zero (aliases rate and interest_rate); and term_years, the term as a positive integer number of years from one through fifty (aliases term and years). Each numeric field may arrive as a JSON number or as a numeric string. Missing fields, empty strings, non-finite values, a non-positive principal, and a negative annual_rate fail with invalid_input naming the field and are not billed. The distinctive product rule is the term: term_years must be a positive integer. Zero, a fraction such as thirty point five, a boolean, or a non-numeric string never produce a fake schedule, because a mortgage term that is not a whole number of years is not a valid fixed-rate home loan. On success the body echoes principal, annual_rate, and term_years, and adds term_months (term_years times twelve), monthly_rate (annual_rate divided by twelve hundred), monthly_payment, total_repayment, total_interest, and a formula string restating the amortizing identity and the zero-rate special case. Example: principal three hundred thousand, annual_rate 6.5, term_years thirty yields a monthly rate of one twelfth of six and a half percent and a monthly payment rounded to two decimals, with total_repayment equal to that payment times three hundred sixty. Pair the figure with your own tax and insurance table; this endpoint computes installment math only and does not emit an amortization schedule row by row.

Where a home loan calculator earns its keep

Educators teaching amortizing versus interest-only home loans can seed classroom examples that fail loudly when the term is not a positive integer, instead of silently treating a fractional year as a valid mortgage. Failed validation, including a term that is not a positive integer, does not consume balance. Quote tools and origination CRMs can call the same pure module from the browser for free previews and from the API when storing a scenario, guaranteeing that the monthly payment a visitor saw matches the monthly payment stored after they save a quote. Affordability worksheets already know the financed amount; posting principal, annual_rate, and term_years fills a card with monthly payment, total repayment, and total interest so a counselor can see whether a thirty-year quote is cheaper in cash than a fifteen-year note at a higher monthly hit. Content teams can illustrate zero-percent seller financing with annual_rate zero, where monthly_payment collapses to principal over term_months without a divide-by-zero. Keep principal strictly positive and term_years a whole number of years, pin the rounded money fields in tests, and you get reproducible home-loan payments for widgets, LMS modules, and edge workers without a loan-origination stack of your own.

Quote and CRM pipelines

Store principal, annual_rate, and term_years in a quote tool whose API payment matches the free browser preview byte for byte.

What does the home loan calculator cost?

The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input, including a term that is not a positive integer, is not billed.

Read the full KIT documentation →