Estimate your monthly lease payment based on MSRP, money factor, and residual value.
Gross Capitalized Cost:
Residual Value:
Monthly Depreciation:
Monthly Rent Charge:
Monthly Sales Tax:
Total Monthly Payment:
How to Use the Car Lease Calculator
Leasing a vehicle can be more complex than a traditional auto loan. Unlike a loan where you pay for the entire value of the car, a lease only charges you for the portion of the vehicle's value that you "consume" during the term. This calculator helps you break down the three main components of a lease: Depreciation, Rent Charge (interest), and Taxes.
Key Terms Explained
Gross Capitalized Cost: This is the total price of the vehicle plus any fees (like acquisition fees) before any down payments or trade-ins are applied.
Residual Value: This is the predicted value of the car at the end of the lease. For example, if a $40,000 car has a 60% residual after 3 years, it is expected to be worth $24,000. You only pay for the $16,000 difference.
Money Factor: This is essentially the interest rate on a lease. To convert APR to a money factor, divide the APR by 2400. A 4.8% APR equals a .0020 money factor.
Example Calculation
Suppose you negotiate a car price of $40,000 for a 36-month lease. The residual value is 60% ($24,000), and the APR is 4% (Money Factor of 0.00166). You put $2,000 down.
Negotiate the Sale Price: Even though it's a lease, you can still negotiate the "Cap Cost" (the price of the car) just like a purchase.
Check for Incentives: Manufacturers often offer "Lease Cash" or "Rebates" that directly reduce the Capitalized Cost.
Limit Down Payments: While a down payment lowers your monthly bill, if the car is totaled or stolen shortly after leaving the lot, you often lose that down payment entirely. Many experts recommend "$0 down" leases.
function calculateCarLease() {
// Retrieve inputs
var carPrice = parseFloat(document.getElementById('carPrice').value);
var downPayment = parseFloat(document.getElementById('downPayment').value) || 0;
var tradeIn = parseFloat(document.getElementById('tradeIn').value) || 0;
var leaseTerm = parseFloat(document.getElementById('leaseTerm').value);
var residualRate = parseFloat(document.getElementById('residualRate').value);
var aprValue = parseFloat(document.getElementById('aprValue').value);
var salesTax = parseFloat(document.getElementById('salesTax').value) || 0;
var acqFee = parseFloat(document.getElementById('acqFee').value) || 0;
// Basic Validation
if (!carPrice || !leaseTerm || !residualRate || isNaN(aprValue)) {
alert("Please enter all required fields: Price, Term, Residual %, and APR.");
return;
}
// Calculation Logic
var adjustedCapCost = (carPrice + acqFee) – downPayment – tradeIn;
var residualValue = carPrice * (residualRate / 100);
var moneyFactor = aprValue / 2400;
// 1. Monthly Depreciation
var totalDepreciation = adjustedCapCost – residualValue;
if (totalDepreciation < 0) totalDepreciation = 0;
var monthlyDepreciation = totalDepreciation / leaseTerm;
// 2. Monthly Rent Charge (Interest)
// Formula: (Adj. Cap Cost + Residual Value) * Money Factor
var monthlyRentCharge = (adjustedCapCost + residualValue) * moneyFactor;
// 3. Taxes
var basePayment = monthlyDepreciation + monthlyRentCharge;
var monthlyTaxAmount = basePayment * (salesTax / 100);
// 4. Totals
var totalMonthlyPayment = basePayment + monthlyTaxAmount;
// Format and Display
document.getElementById('resGrossCap').innerText = "$" + (carPrice + acqFee).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resResidual').innerText = "$" + residualValue.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resDeprec').innerText = "$" + monthlyDepreciation.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resRent').innerText = "$" + monthlyRentCharge.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resTax').innerText = "$" + monthlyTaxAmount.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resTotal').innerText = "$" + totalMonthlyPayment.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
// Show Result Container
document.getElementById('leaseResult').style.display = "block";
}