Analyze your real estate investment potential instantly.
Total Cash Invested:$0.00
Monthly Mortgage Payment (P&I):$0.00
Total Monthly Expenses:$0.00
Monthly Cash Flow:$0.00
Annual Cash Flow:$0.00
Cash on Cash Return:0.00%
Understanding Cash on Cash Return in Real Estate
When investing in rental properties, understanding your return on investment (ROI) is crucial. While there are many metrics to evaluate a deal, the Cash on Cash (CoC) Return is widely considered one of the most practical indicators for investors who finance their purchases.
What is Cash on Cash Return?
Cash on Cash Return measures the annual pre-tax cash flow generated by the property relative to the total amount of cash invested. Unlike a standard ROI calculation which might look at the total value of the asset, CoC specifically focuses on the cash you actually put into the deal (Down payment + Closing costs + Rehab costs).
Purchase Price: The agreed-upon price of the property.
Down Payment & Closing Costs: The initial capital required to secure the property.
Rehab Costs: Any immediate repairs or renovations needed before renting.
Monthly Expenses: Include property taxes, insurance, HOA fees, maintenance reserves, vacancy buffers, and property management fees. Do NOT include the mortgage here; the calculator handles that separately based on the loan inputs.
What is a Good Cash on Cash Return?
While "good" is subjective, many real estate investors aim for a CoC return between 8% and 12%. In highly competitive markets, 5-7% might be acceptable due to appreciation potential, while aggressive investors in cash-flow markets may seek 15% or higher.
Why It Matters
This metric allows you to compare real estate investments against other asset classes like stocks or bonds. If a rental property offers a 10% Cash on Cash return, and the stock market averages 7%, the real estate deal may be the superior vehicle for cash flow, especially when factoring in tax benefits and loan paydown.
function calculateROI() {
// 1. Get Inputs
var price = parseFloat(document.getElementById('purchasePrice').value) || 0;
var downPayment = parseFloat(document.getElementById('downPayment').value) || 0;
var closingCosts = parseFloat(document.getElementById('closingCosts').value) || 0;
var rehabCosts = parseFloat(document.getElementById('rehabCosts').value) || 0;
var interestRate = parseFloat(document.getElementById('interestRate').value) || 0;
var loanTermYears = parseFloat(document.getElementById('loanTerm').value) || 0;
var monthlyRent = parseFloat(document.getElementById('monthlyRent').value) || 0;
var otherExpenses = parseFloat(document.getElementById('monthlyExpenses').value) || 0;
// 2. Validate essential inputs to avoid Infinity/NaN
if (loanTermYears 0 && interestRate > 0) {
// Mortgage Formula: M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
} else if (loanAmount > 0 && interestRate === 0) {
monthlyMortgage = loanAmount / numberOfPayments;
}
// 4. Calculate Cash Flow
var totalMonthlyExpenses = monthlyMortgage + otherExpenses;
var monthlyCashFlow = monthlyRent – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// 5. Calculate Investment Basis
var totalCashInvested = downPayment + closingCosts + rehabCosts;
// 6. Calculate CoC Return
var cocReturn = 0;
if (totalCashInvested > 0) {
cocReturn = (annualCashFlow / totalCashInvested) * 100;
}
// 7. Format Output Function
function formatCurrency(num) {
return '$' + num.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
}
function formatPercent(num) {
return num.toFixed(2) + '%';
}
// 8. Display Results
document.getElementById('resTotalInvested').innerText = formatCurrency(totalCashInvested);
document.getElementById('resMortgage').innerText = formatCurrency(monthlyMortgage);
document.getElementById('resTotalExpenses').innerText = formatCurrency(totalMonthlyExpenses);
var elMonthlyFlow = document.getElementById('resMonthlyCashFlow');
elMonthlyFlow.innerText = formatCurrency(monthlyCashFlow);
elMonthlyFlow.style.color = monthlyCashFlow >= 0 ? '#27ae60' : '#c0392b'; // Green if positive, red if negative
var elAnnualFlow = document.getElementById('resAnnualCashFlow');
elAnnualFlow.innerText = formatCurrency(annualCashFlow);
elAnnualFlow.style.color = annualCashFlow >= 0 ? '#2c3e50' : '#c0392b';
var elCoc = document.getElementById('resCoC');
elCoc.innerText = formatPercent(cocReturn);
elCoc.style.color = cocReturn >= 0 ? '#27ae60' : '#c0392b';
// Show result box
document.getElementById('results-area').style.display = 'block';
}