Estimate your monthly car lease payment based on MSRP, money factor, and residual value.
Gross Capitalized Cost:
Residual Value:
Monthly Depreciation:
Monthly Rent Charge:
Estimated Monthly Payment:
How to Calculate Your Car Lease Payment
Understanding a car lease payment is different from a standard car loan. Instead of paying for the entire value of the vehicle, you are essentially paying for the depreciation of the car during the time you drive it, plus interest (known as the money factor).
The Core Components of a Lease
MSRP: The Manufacturer's Suggested Retail Price. This is the starting point for negotiations.
Capitalized Cost: The final negotiated price of the car minus any down payments or trade-ins.
Residual Value: What the car is estimated to be worth at the end of the lease. High residual values lead to lower monthly payments.
Money Factor: The lease version of an interest rate. To convert this to an APR, multiply the money factor by 2,400.
Real-World Example
Imagine you are leasing a car with the following terms:
Factor
Value
MSRP
$40,000
Down Payment
$4,000
Lease Term
36 Months
Residual Value (60%)
$24,000
Money Factor
0.0015 (3.6% APR)
Is Leasing Better Than Buying?
Leasing is often preferred by drivers who enjoy having a new car every few years and want lower monthly payments. However, buying is typically cheaper in the long run as you build equity in the vehicle. Use our calculator above to see if the monthly obligation fits your budget.
function calculateLease() {
var msrp = parseFloat(document.getElementById('msrp').value);
var downPayment = parseFloat(document.getElementById('downPayment').value) || 0;
var tradeIn = parseFloat(document.getElementById('tradeIn').value) || 0;
var term = parseFloat(document.getElementById('leaseTerm').value);
var residualRate = parseFloat(document.getElementById('residualRate').value);
var moneyFactor = parseFloat(document.getElementById('moneyFactor').value);
if (isNaN(msrp) || isNaN(term) || isNaN(residualRate) || isNaN(moneyFactor) || term 0 ? depreciationFee : 0).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resRent').innerText = "$" + rentCharge.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resTotal').innerText = "$" + (totalPayment > 0 ? totalPayment : 0).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('leaseResult').style.display = 'block';
}