The Cash on Cash Return (CoC) is one of the most critical metrics for real estate investors. Unlike generic ROI, which might account for total loan paydown or appreciation, CoC strictly measures the annual pre-tax cash flow relative to the actual cash invested.
Why Use This Calculator?
This calculator is specifically designed for buy-and-hold real estate investors. It helps you answer the fundamental question: "How hard is my money working for me?"
For example, if you put $50,000 into a savings account earning 1%, you make $500 a year. If you put that same $50,000 into a rental property (down payment + closing costs), this calculator determines your percentage yield based on the rental income minus expenses.
How It Works
The formula used in this tool is:
Cash on Cash Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) x 100%
Input Definitions
Purchase Price: The total agreed-upon price of the property.
Down Payment: The cash amount you pay upfront (excluding the loan).
Closing & Rehab Costs: Any additional cash needed to close the deal or make the property rent-ready immediately.
Monthly Rental Income: The gross rent you collect from tenants.
Total Monthly Expenses: This must include PITI (Principal, Interest, Taxes, Insurance) plus HOA fees, property management, vacancy reserves, and maintenance estimates.
What is a "Good" Return?
While this varies by market and strategy, many investors target a Cash on Cash return between 8% and 12%. A return above 15% is typically considered excellent in today's market, while anything below 4-5% might suggest the property is not generating enough cash flow to justify the illiquidity of the asset.
function calculateCoC() {
// 1. Get Input Values
var downPayment = parseFloat(document.getElementById('downPayment').value);
var closingCosts = parseFloat(document.getElementById('closingCosts').value);
var monthlyRent = parseFloat(document.getElementById('monthlyRent').value);
var monthlyExpenses = parseFloat(document.getElementById('monthlyExpenses').value);
// 2. Validation
if (isNaN(downPayment) || isNaN(closingCosts) || isNaN(monthlyRent) || isNaN(monthlyExpenses)) {
alert("Please enter valid numbers in all fields.");
return;
}
if (downPayment < 0 || closingCosts < 0 || monthlyRent < 0 || monthlyExpenses 0) {
cocReturn = (annualCashFlow / totalInvested) * 100;
} else {
// Handle edge case where zero cash is invested (infinite return)
cocReturn = 0;
}
// 4. Update UI
// Formatting helper
var currencyFormatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2
});
document.getElementById('resTotalInvested').innerHTML = currencyFormatter.format(totalInvested);
document.getElementById('resMonthlyCashFlow').innerHTML = currencyFormatter.format(monthlyCashFlow);
// Color coding for negative cash flow
var annualEl = document.getElementById('resAnnualCashFlow');
annualEl.innerHTML = currencyFormatter.format(annualCashFlow);
if (annualCashFlow < 0) {
annualEl.style.color = "#c0392b";
} else {
annualEl.style.color = "#2c3e50";
}
document.getElementById('resCoC').innerHTML = cocReturn.toFixed(2) + "%";
// Show result div
document.getElementById('result-area').style.display = "block";
}