Calculate your monthly lease payments and understand your breakdown.
24 Months
36 Months
48 Months
APR ÷ 2400 = Money Factor
Estimated Monthly Payment
$0.00
Depreciation Fee:$0.00
Finance Fee:$0.00
Base Payment:$0.00
Sales Tax:$0.00
Residual Value ($):$0.00
Net Cap Cost:$0.00
Understanding Your Car Lease Calculation
Leasing a car is different from buying because you are only paying for the vehicle's depreciation during the time you drive it, plus interest and taxes. This calculator breaks down the three primary components of a lease payment:
Depreciation Fee: This is the loss in the car's value over the lease term. It's calculated as (Net Cap Cost – Residual Value) ÷ Lease Term.
Finance Fee (Money Factor): This is the interest you pay on the lease. In leasing, the interest rate is called the "Money Factor." To get an approximate APR, multiply the Money Factor by 2400.
Sales Tax: Most states charge sales tax on the monthly payment itself rather than the full value of the vehicle.
Practical Example
Imagine you are leasing a SUV with an MSRP of $40,000 for 36 months. The dealer sets a residual value of 55% ($22,000). You provide a $3,000 down payment. Your Net Cap Cost becomes $37,000.
Your depreciation is $15,000 ($37,000 – $22,000). Divided by 36 months, the monthly depreciation is $416.67. Add your money factor fee and local sales tax to arrive at your final monthly figure.
Leasing Tips to Save Money
Negotiate the MSRP: Just like buying, the "Selling Price" of the car is negotiable. A lower selling price reduces the Cap Cost and your monthly payment.
Check the Money Factor: Dealers often "mark up" the interest rate. Know the base rate from the manufacturer to ensure you're getting a fair deal.
High Residual is Good: Cars that hold their value better (higher residual percentage) result in lower monthly lease payments because you are paying for less depreciation.
function calculateLease() {
var msrp = parseFloat(document.getElementById('msrp').value);
var salesTaxRate = parseFloat(document.getElementById('salesTax').value) / 100;
var downPayment = parseFloat(document.getElementById('downPayment').value);
var tradeIn = parseFloat(document.getElementById('tradeIn').value);
var term = parseFloat(document.getElementById('leaseTerm').value);
var residualPercent = parseFloat(document.getElementById('residualPercent').value) / 100;
var moneyFactor = parseFloat(document.getElementById('moneyFactor').value);
if (isNaN(msrp) || isNaN(downPayment) || isNaN(residualPercent) || isNaN(moneyFactor) || msrp <= 0) {
alert("Please enter valid numerical values.");
return;
}
// 1. Calculate Residual Value in Dollars
var residualValue = msrp * residualPercent;
// 2. Calculate Net Capitalized Cost
var netCapCost = msrp – downPayment – tradeIn;
if (netCapCost < residualValue) {
alert("The adjusted capitalized cost cannot be lower than the residual value. Please check your down payment or MSRP.");
return;
}
// 3. Monthly Depreciation Fee
var depreciationFee = (netCapCost – residualValue) / term;
// 4. Monthly Finance Fee (Money Factor Logic)
// Formula: (Net Cap Cost + Residual) * Money Factor
var financeFee = (netCapCost + residualValue) * moneyFactor;
// 5. Base Monthly Payment
var basePayment = depreciationFee + financeFee;
// 6. Monthly Sales Tax
var monthlyTax = basePayment * salesTaxRate;
// 7. Total Monthly Payment
var totalPayment = basePayment + monthlyTax;
// Display Results
document.getElementById('leaseResult').style.display = 'block';
document.getElementById('monthlyTotal').innerHTML = '$' + totalPayment.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('depreciationFeeDisplay').innerHTML = '$' + depreciationFee.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('financeFeeDisplay').innerHTML = '$' + financeFee.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('basePaymentDisplay').innerHTML = '$' + basePayment.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('taxDisplay').innerHTML = '$' + monthlyTax.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('residualDollarDisplay').innerHTML = '$' + residualValue.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('capCostDisplay').innerHTML = '$' + netCapCost.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
// Scroll to results
document.getElementById('leaseResult').scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}