ForHosting KIT · Finance & money

Mortgage recast calculator

With 200,000 left at 4% over 240 months, a 20,000 lump sum lowers the payment from 1,211.96 to 1,090.76 and saves 9,087.06 in interest, while the rate and the term stay unchanged. 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
Current mortgage balance
200,000
Annual interest rate (%)
4
Months remaining
240
Lump-sum principal payment
20,000
You get
Principal after lump-sum payment
180,000
Monthly payment before recast
1,211.96
Monthly payment after recast
1,090.76
Monthly payment change
121.2

free

What a recast does to your payment

A recast lets you pay a lump sum toward your mortgage and have the payment recalculated on the smaller balance, while the interest rate and the months remaining stay as they are. The calculator subtracts the lump sum from the balance and works out the new level payment with the standard annuity formula, over the same number of months at the same rate. It then shows the payment before and after, the drop in money and in percent, and the interest saved. With 200,000 at 4% and 240 months left, a 20,000 lump sum lowers the payment from 1,211.96 to 1,090.76.

How to read the savings correctly

Because the term does not change, the monthly relief is proportional to the share of principal you pay down: 20,000 out of 200,000 cuts the payment by 10%. The interest saved compares the lifetime interest of both scenarios, each worked out as the payment times the months remaining minus the starting principal. In the example that is 90,870.56 against 81,783.50, a saving of 9,087.06. Enter the annual rate as a percentage, 4 for 4%. All money figures are rounded once at the end, to two decimals unless you choose otherwise.

Servicing quotes

Show a borrower the exact new payment after a principal-curtailment lump sum, term unchanged.

What is a recast?

Re-amortizing a smaller balance after a lump sum while keeping the same rate and remaining term—no refinance required.

Why does the payment fall by exactly 10% in the example?

Because the term does not change, the monthly relief is proportional to the share of principal you pay down. Paying 20,000 off a 200,000 balance removes 10% of the principal, so the payment falls by the same 10%.

How is a recast different from a refinance?

A recast keeps your interest rate and your remaining term: it simply spreads a smaller principal over the same months after a one-time payment. The loan terms stay as they are and only the payment changes.

How is the interest saved worked out?

It compares the lifetime interest of both scenarios, each found as the payment times the months remaining minus the starting principal. In the example that is 90,870.56 against 81,783.50, a saving of 9,087.06.

Does it work with a zero interest rate?

Yes. When the rate is zero, the payment is simply the principal divided by the months remaining, so the calculation still returns sensible figures instead of failing.

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/finance/mortgage-recast

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/finance/mortgage-recast \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"balance":200000,"annual_rate":4,"months_remaining":240}'
{
  "balance": 200000,
  "annual_rate": 4,
  "months_remaining": 240
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "finance.mortgage_recast",
  "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.

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.

Recasts a mortgage by subtracting lump_sum from the balance and re-amortizing over the same months_remaining at the unchanged annual_rate, returning payment_before, payment_after, payment_delta, payment_delta_percent and total interest_saved.

Recast versus refinance

Because the term is held constant, the monthly relief is proportional to the fraction of principal paid down. A recast, unlike a refinance, keeps your interest rate and remaining term intact and simply re-amortizes a smaller principal after a one-time lump_sum. new_principal equals balance minus lump_sum, and both the old and new payments use the annuity formula payment = P·i·(1+i)^n / ((1+i)^n − 1) with i = annual_rate/1200 and n = months_remaining. On a $200,000 balance at 4% with 240 months left, a $20,000 lump sum drops the payment from $1,211.96 to $1,090.76—a payment_delta of $121.20, or payment_delta_percent of 10.00. When annual_rate rounds to zero the formula degrades to principal divided by months, so an interest-free loan still returns sane figures instead of dividing by zero.

Interest saved and the output fields

Beyond the lower installment, the tool totals lifetime interest for both scenarios. interest_before equals payment_before times months_remaining minus the original balance, and interest_after applies the same identity to new_principal, so interest_saved is their difference—$90,870.56 minus $81,783.50 gives $9,087.06 on the sample loan. All thirteen output fields, from new_principal through interest_saved, are rounded once with a half-up rule at the decimals parameter, which defaults to 2. payment_delta is payment_before minus payment_after, and payment_delta_percent expresses that as a share of the original payment; both are derived from unrounded intermediates so the percentage and the dollar figures stay internally consistent rather than drifting a cent apart when displayed.

Validation and safe integration

balance must be a finite number above zero, annual_rate zero or more, and months_remaining a positive integer; each failure returns a typed invalid_input error naming the field. The critical guard is lump_sum: it defaults to 0 and must be at least zero and strictly less than balance—you cannot recast by paying the loan off entirely—otherwise you get invalid_input rather than a nonsensical zero payment. That makes the endpoint safe to expose behind a servicing portal where borrowers type arbitrary amounts. Failed tasks are never billed, and prepaid balance is spent only on successful API calls at the published base price, which keeps bulk what-if analysis cheap to run.

Lump-sum planning

Compare interest_saved across several lump_sum amounts before committing the cash.

Portfolio analysis

Batch payment_delta and interest_saved across many loans through the JSON API.

What does it return?

new_principal, payment_before and payment_after, payment_delta, payment_delta_percent, interest_before, interest_after and interest_saved.

Can lump_sum equal the balance?

No. lump_sum must be at least 0 and strictly less than balance, or the call returns an invalid_input error.

Does the term change?

No. months_remaining is held constant; only the principal and the payment shrink.

Is it free?

Free in the tier A browser widget; the deterministic API starts at $0.002 and bills only successful calls.

Read the full KIT documentation →