Scotiabank Line of Credit Interest Rate Calculator

Car Lease Payment Calculator

Calculate your monthly lease payment and understand the rent charge.

24 Months 36 Months 48 Months 60 Months
APR ÷ 2400

Estimated Monthly Payment: $0.00


Depreciation Charge: /mo

Rent Charge (Interest): /mo

Sales Tax: /mo

Residual Value Amount:

Understanding How Car Leases Are Calculated

A car lease payment isn't just a loan payment; it consists of three primary components: depreciation, the rent charge, and taxes. Understanding these helps you negotiate a better deal at the dealership.

1. Depreciation Fee

This is the most significant part of the payment. It covers the loss in the vehicle's value over the time you drive it. The formula is:

(Net Capitalized Cost – Residual Value) / Lease Term

2. Rent Charge (Interest)

The rent charge is essentially the interest you pay for the leasing company to carry the car's value on their books. Instead of an APR, leasing uses a Money Factor. To convert Money Factor to APR, multiply it by 2400.

(Net Capitalized Cost + Residual Value) × Money Factor

3. Residual Value

The residual value is what the car is expected to be worth at the end of the lease. This is set by the leasing company and is usually expressed as a percentage of the original MSRP. A higher residual value results in a lower monthly payment because you are financing less depreciation.

Example Calculation

Suppose you lease a car with an MSRP of $40,000 but negotiate the price down to $38,000. You put $3,000 down, leaving a Net Cap Cost of $35,000. If the residual value is 60% ($24,000) for a 36-month term with a money factor of 0.0015:

  • Monthly Depreciation: ($35,000 – $24,000) / 36 = $305.56
  • Monthly Rent Charge: ($35,000 + $24,000) * 0.0015 = $88.50
  • Base Payment: $394.06
function calculateLease() { var msrp = parseFloat(document.getElementById("msrp").value); var negotiatedPrice = parseFloat(document.getElementById("negotiatedPrice").value); var downPayment = parseFloat(document.getElementById("downPayment").value); var tradeIn = parseFloat(document.getElementById("tradeIn").value); var term = parseInt(document.getElementById("leaseTerm").value); var mf = parseFloat(document.getElementById("moneyFactor").value); var resPercent = parseFloat(document.getElementById("residualPercent").value); var taxRate = parseFloat(document.getElementById("salesTax").value); if (isNaN(msrp) || isNaN(negotiatedPrice) || isNaN(term) || isNaN(mf) || isNaN(resPercent)) { alert("Please enter valid numeric values for all required fields."); return; } // 1. Calculate Gross Cap Cost and Net Cap Cost var capCost = negotiatedPrice – (downPayment + tradeIn); // 2. Calculate Residual Value var residualValue = msrp * (resPercent / 100); // 3. Calculate Depreciation Component var monthlyDepreciation = (capCost – residualValue) / term; if (monthlyDepreciation < 0) monthlyDepreciation = 0; // 4. Calculate Rent Charge Component var monthlyRent = (capCost + residualValue) * mf; // 5. Calculate Subtotal and Tax var basePayment = monthlyDepreciation + monthlyRent; var monthlyTax = basePayment * (taxRate / 100); var totalMonthly = basePayment + monthlyTax; // Display Results document.getElementById("leaseResult").style.display = "block"; document.getElementById("monthlyTotal").innerText = "$" + totalMonthly.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); document.getElementById("depreciationCharge").innerText = "$" + monthlyDepreciation.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); document.getElementById("rentCharge").innerText = "$" + monthlyRent.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); document.getElementById("taxCharge").innerText = "$" + monthlyTax.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); document.getElementById("residualAmount").innerText = "$" + residualValue.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); // Smooth scroll to result document.getElementById("leaseResult").scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }

Leave a Comment