In the world of real estate investing, not all metrics are created equal. While Cap Rate measures the raw potential of a property unleveraged, the Cash on Cash (CoC) Return is arguably the most important metric for investors using financing. It measures the annual return you make on the actual cash you have invested, rather than the total purchase price of the property.
Why This Metric Matters
If you buy a $200,000 property entirely with cash and it generates $10,000 in profit, your return is 5%. However, if you buy that same property with a $50,000 down payment and finance the rest, and it generates $5,000 in cash flow (after mortgage payments), your Cash on Cash return is 10%. This illustrates the power of leverage.
The Formula:
Cash on Cash Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) × 100%
Inputs Explained
Down Payment: The actual cash put towards the purchase price (equity).
Closing Costs: Loan origination fees, title insurance, recording fees, and attorney costs.
Rehab/Repair Costs: Immediate out-of-pocket expenses required to make the property rent-ready.
Monthly Rental Income: The gross rent collected from tenants.
Monthly Mortgage: Principal and interest payments paid to the lender.
Other Expenses: Property taxes, insurance, HOA fees, vacancy savings, and maintenance reserves.
Realistic Example
Let's say you identify a duplex listed for $300,000.
You put $60,000 down (20%).
Closing costs are $5,000.
You spend $10,000 on new flooring and paint.
Total Cash Invested: $75,000.
The property rents for $3,000/month. Your mortgage is $1,600, and operating expenses (taxes, insurance, maintenance) are $900.
Monthly Cash Flow: $3,000 – $1,600 – $900 = $500.
Annual Cash Flow: $500 × 12 = $6,000.
CoC Return: ($6,000 / $75,000) = 8%.
An 8% Cash on Cash return is generally considered a solid investment in many markets, especially considering it does not account for property appreciation or mortgage principal paydown.
function calculateCoC() {
// 1. Get Inputs
var downPayment = parseFloat(document.getElementById('downPayment').value);
var closingCosts = parseFloat(document.getElementById('closingCosts').value);
var rehabCosts = parseFloat(document.getElementById('rehabCosts').value);
var rent = parseFloat(document.getElementById('monthlyRent').value);
var mortgage = parseFloat(document.getElementById('monthlyMortgage').value);
var expenses = parseFloat(document.getElementById('monthlyExpenses').value);
// 2. Validate Inputs
// We allow 0 for costs, but inputs must be numbers.
// If fields are empty, parseFloat returns NaN.
if (isNaN(downPayment)) downPayment = 0;
if (isNaN(closingCosts)) closingCosts = 0;
if (isNaN(rehabCosts)) rehabCosts = 0;
if (isNaN(rent)) rent = 0;
if (isNaN(mortgage)) mortgage = 0;
if (isNaN(expenses)) expenses = 0;
// Basic error handling for critical denominator
var totalInvested = downPayment + closingCosts + rehabCosts;
if (totalInvested <= 0) {
alert("Total Cash Invested must be greater than 0 to calculate a return.");
return;
}
// 3. Perform Calculations
var monthlyCashFlow = rent – (mortgage + expenses);
var annualCashFlow = monthlyCashFlow * 12;
var cocReturn = (annualCashFlow / totalInvested) * 100;
// 4. Update UI
var resultBox = document.getElementById('resultBox');
var cocDisplay = document.getElementById('cocResult');
var annualFlowDisplay = document.getElementById('annualFlowResult');
var totalInvestedDisplay = document.getElementById('totalInvestedResult');
// Formatting currency and percentages
cocDisplay.innerHTML = cocReturn.toFixed(2) + "%";
// Color coding result (Red if negative, Green if positive)
if (cocReturn < 0) {
cocDisplay.style.color = "#d32f2f";
} else {
cocDisplay.style.color = "#2e7d32";
}
annualFlowDisplay.innerHTML = "$" + annualCashFlow.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
totalInvestedDisplay.innerHTML = "$" + totalInvested.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
// Show result box
resultBox.style.display = "block";
}