For real estate investors, the Cash on Cash (CoC) Return is one of the most critical metrics for evaluating a rental property's profitability. Unlike standard ROI which might consider total equity, CoC Return focuses strictly on the relationship between the actual cash you invested (down payment, closing costs, and repairs) and the annual net cash flow the property generates.
This metric answers the simple question: "For every dollar I put into this deal, how many cents do I get back in my pocket each year?"
How the Calculator Works
This calculator determines your return using a specific three-step process designed for buy-and-hold real estate investors:
1. Calculate Total Cash Invested
This is the denominator of the equation. It sums up all liquidity required to close the deal:
Down Payment: The percentage of the purchase price paid upfront.
Closing Costs: Title fees, origination points, and recording fees.
Repair Costs: Immediate renovation expenses needed to make the property rentable.
2. Calculate Net Annual Cash Flow
This is the numerator. We start with the Gross Monthly Rent and subtract all operating expenses:
Mortgage Payment (P&I): Calculated based on your loan amount, interest rate, and term.
Vacancy: An allowance for months the unit sits empty (typically 5-8%).
Operating Expenses: Taxes, insurance, HOA fees, and maintenance reserves.
3. The Formula
Finally, we apply the formula:
Cash on Cash Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) × 100%
Why Use This Metric?
The Cash on Cash Return is superior to Cap Rate for leveraged investments because it accounts for your financing terms. A property might have a low Cap Rate, but if you secure excellent financing with a low down payment, your Cash on Cash return could still be double-digits.
Example Scenario: If you invest $50,000 total cash to buy a rental property, and after paying the mortgage and all expenses, the property profits $5,000 per year, your Cash on Cash return is 10%. This means it takes 10 years to recoup your initial cash investment through cash flow alone.
function calculateROI() {
// 1. Get Input Values
var purchasePrice = parseFloat(document.getElementById('purchasePrice').value) || 0;
var downPaymentPerc = parseFloat(document.getElementById('downPaymentPerc').value) || 0;
var closingCosts = parseFloat(document.getElementById('closingCosts').value) || 0;
var repairCosts = parseFloat(document.getElementById('repairCosts').value) || 0;
var interestRate = parseFloat(document.getElementById('interestRate').value) || 0;
var loanTerm = parseFloat(document.getElementById('loanTerm').value) || 0;
var monthlyRent = parseFloat(document.getElementById('monthlyRent').value) || 0;
var vacancyRate = parseFloat(document.getElementById('vacancyRate').value) || 0;
var propertyTax = parseFloat(document.getElementById('propertyTax').value) || 0;
var insurance = parseFloat(document.getElementById('insurance').value) || 0;
var hoa = parseFloat(document.getElementById('hoa').value) || 0;
var maintenancePerc = parseFloat(document.getElementById('maintenance').value) || 0;
// 2. Calculate Investment Basis (Total Cash Invested)
var downPaymentAmt = purchasePrice * (downPaymentPerc / 100);
var totalInvested = downPaymentAmt + closingCosts + repairCosts;
// 3. Calculate Mortgage Payment
var loanAmount = purchasePrice – downPaymentAmt;
var monthlyRate = (interestRate / 100) / 12;
var numberOfPayments = loanTerm * 12;
var monthlyMortgage = 0;
if (interestRate === 0) {
monthlyMortgage = loanAmount / numberOfPayments;
} else {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
}
// 4. Calculate Monthly Expenses
var monthlyTax = propertyTax / 12;
var monthlyInsurance = insurance / 12;
var monthlyVacancy = monthlyRent * (vacancyRate / 100);
var monthlyMaintenance = monthlyRent * (maintenancePerc / 100);
var totalMonthlyExpenses = monthlyMortgage + monthlyTax + monthlyInsurance + hoa + monthlyVacancy + monthlyMaintenance;
// 5. Calculate Cash Flow
var monthlyCashFlow = monthlyRent – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// 6. Calculate Cash on Cash Return
var cocReturn = 0;
if (totalInvested > 0) {
cocReturn = (annualCashFlow / totalInvested) * 100;
}
// 7. Update UI
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
});
document.getElementById('resTotalInvested').innerHTML = formatter.format(totalInvested);
document.getElementById('resMortgage').innerHTML = formatter.format(monthlyMortgage);
document.getElementById('resCashFlow').innerHTML = formatter.format(monthlyCashFlow);
document.getElementById('resAnnualCashFlow').innerHTML = formatter.format(annualCashFlow);
var cocElement = document.getElementById('resCoC');
cocElement.innerHTML = cocReturn.toFixed(2) + "%";
// Color coding for positive/negative return
if(cocReturn < 0) {
cocElement.style.color = "#e74c3c";
} else {
cocElement.style.color = "#27ae60";
}
document.getElementById('resultsSection').style.display = 'block';
}