Compare Rates Mortgage Calculator

Rental Property Cash on Cash Return Calculator

Accurately determining the profitability of a real estate investment requires more than just subtracting the mortgage from the rent. Use this specialized Cash on Cash (CoC) Return Calculator to analyze your rental property's potential performance, factoring in vacancy rates, operating expenses, and closing costs.

Property Financial Analysis

Purchase & Loan Details
Income & Operating Expenses

Investment Performance

Total Cash Invested
$0
Monthly Cash Flow
$0
Cash on Cash Return
0.00%
Breakdown:
Monthly Mortgage Payment (P&I): $0.00
Vacancy Loss Estimate: $0.00
Net Operating Income (Annual): $0.00

Understanding Cash on Cash Return in Real Estate

For rental property investors, the Cash on Cash (CoC) Return is arguably the most critical metric for evaluating the efficiency of an investment. Unlike generic ROI (Return on Investment), which might look at total equity or long-term appreciation, Cash on Cash Return focuses specifically on the liquid cash income earned relative to the actual cash invested.

The Formula

The standard formula used in our calculator above is:

CoC Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) × 100

Input Breakdown

  • Total Cash Invested: This is not just the property price. It includes your Down Payment plus Closing Costs and any immediate Rehab costs. This represents the money that leaves your bank account to acquire the asset.
  • Annual Cash Flow: This is your Gross Rent minus ALL expenses (Mortgage Principal & Interest, Taxes, Insurance, HOA, Repairs, and Vacancy reserves).

What is a "Good" Return?

While "good" is subjective, many passive investors target a Cash on Cash return of 8% to 12%. Active investors utilizing strategies like BRRRR (Buy, Rehab, Rent, Refinance, Repeat) often aim for returns exceeding 20% or even infinite returns if they can pull all their initial capital out during refinancing.

Why Factor in Vacancy?

Novice investors often make the mistake of assuming 100% occupancy. Our calculator includes a "Vacancy Rate" input (default 5%) to account for turnover periods where the property sits empty. Ignoring this cost can artificially inflate your projected returns and lead to poor investment decisions.

function calculateRentalROI() { // 1. Get Input Values var price = parseFloat(document.getElementById('propPrice').value); var downPercent = parseFloat(document.getElementById('downPayment').value); var rate = parseFloat(document.getElementById('interestRate').value); var years = parseFloat(document.getElementById('loanTerm').value); var closing = parseFloat(document.getElementById('closingCosts').value); var rent = parseFloat(document.getElementById('monthlyRent').value); var monthlyExpenses = parseFloat(document.getElementById('otherExpenses').value); var vacancyPercent = parseFloat(document.getElementById('vacancyRate').value); // 2. Validation if (isNaN(price) || isNaN(downPercent) || isNaN(rate) || isNaN(years) || isNaN(rent)) { alert("Please enter valid numbers for all fields."); return; } // 3. Logic Calculations // A. Loan Calculation var downPaymentAmount = price * (downPercent / 100); var loanAmount = price – downPaymentAmount; // Monthly Interest Rate var monthlyRate = (rate / 100) / 12; var numberOfPayments = years * 12; // Mortgage Payment (Principal & Interest) // Formula: M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1] var mortgagePayment = 0; if (rate === 0) { mortgagePayment = loanAmount / numberOfPayments; } else { mortgagePayment = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1); } // B. Vacancy Loss var vacancyLoss = rent * (vacancyPercent / 100); // C. Total Monthly Outflow var totalMonthlyExpenses = mortgagePayment + monthlyExpenses + vacancyLoss; // D. Cash Flow var monthlyCashFlow = rent – totalMonthlyExpenses; var annualCashFlow = monthlyCashFlow * 12; // E. Total Cash Invested var totalCashInvested = downPaymentAmount + closing; // F. Cash on Cash Return var cocReturn = 0; if (totalCashInvested > 0) { cocReturn = (annualCashFlow / totalCashInvested) * 100; } // G. Net Operating Income (Annual) – usually excludes financing costs var annualNOI = (rent – monthlyExpenses – vacancyLoss) * 12; // 4. Update UI document.getElementById('resTotalInvested').innerHTML = "$" + totalCashInvested.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 0}); var cashFlowElement = document.getElementById('resMonthlyCashFlow'); cashFlowElement.innerHTML = "$" + monthlyCashFlow.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); // Color coding for cash flow if(monthlyCashFlow < 0) { cashFlowElement.style.color = "#dc3545"; // Red for negative } else { cashFlowElement.style.color = "#28a745"; // Green for positive } var cocElement = document.getElementById('resCoC'); cocElement.innerHTML = cocReturn.toFixed(2) + "%"; if(cocReturn < 0) { cocElement.style.color = "#dc3545"; } else { cocElement.style.color = "#155724"; } document.getElementById('resMortgage').innerHTML = "$" + mortgagePayment.toFixed(2); document.getElementById('resVacancy').innerHTML = "$" + vacancyLoss.toFixed(2); document.getElementById('resNOI').innerHTML = "$" + annualNOI.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); // Show results div document.getElementById('resultsArea').style.display = "block"; }

Leave a Comment