Mortgage penalty calculator

In short 3 min read

Breaking a $500,000 mortgage at 2.89% with three years left costs between $3,563.01 and $5,487.50 depending on your lender. Every lender charges the greater of three months' interest and the interest rate differential, but they compute both legs differently — the same mortgage costs 1.54× more at some banks than others.

$3,612.50

The same mortgage, at every lender

Identical facts — $500,000 at 2.89%, 36 months left, a 1.5% discount when you signed. This is the comparison no other calculator shows.

LenderPenaltyvs cheapestGoverned by
Two lenders charge more for the same mortgage. CIBC adds your original discount back onto your contract rate before computing three months' interest. National Bank uses the posted rate as at origination, which comes to the same thing. Everyone else uses the rate you actually pay. The worse news: the bigger a discount you negotiated, the further those two pull ahead.

What happens if rates fall

Right now your rate sits below every comparison rate, so the differential is negative and three months' interest governs everywhere. That is not a permanent state. All six big banks subtract your original discount from the comparison rate, which is dormant today and severe in a falling market.

If posted 3-year falls toBig bankMonolineMultiple
5.99% (today)$3,612.50$3,612.50
4.49%$3,612.50$3,612.50
3.49%$13,500$3,612.503.74×
2.49%$28,500$6,0004.75×

What calculators get wrong here

There is a way to pay no penalty at all

An assumption transfers your existing mortgage to the buyer instead of discharging it. No prepayment happens, so no penalty arises — and the buyer inherits your rate. For a seller facing a five-figure differential, that is the difference between moving and staying put.

See how an assumption works →

Per-lender methods taken from each lender's own prepayment disclosure and standard charge terms, current 2026-08-04. Our arithmetic reproduces RBC's published worked example exactly. This is information, not advice — your lender's payout statement is the binding number.