Please enter valid positive numbers for all fields.
Cash-on-Cash Return
0.00%
Total Cash Invested$0.00
Monthly Principal & Interest$0.00
Total Monthly Expenses$0.00
Monthly Cash Flow$0.00
Annual Cash Flow$0.00
Understanding Cash-on-Cash Return for Real Estate Investors
When investing in rental properties, measuring profitability accurately is crucial for building a sustainable portfolio. While many metrics exist, the Cash-on-Cash (CoC) Return stands out as one of the most practical indicators for investors who use financing (leverage) to acquire real estate.
What is Cash-on-Cash Return?
Cash-on-Cash return is a rate of return ratio that calculates the annual pre-tax cash flow generated by a property relative to the total amount of cash invested. Unlike Return on Investment (ROI), which might consider total equity or long-term appreciation, CoC focuses specifically on the "cash yield" of your actual dollars deployed in the deal.
Our Rental Property Cash-on-Cash Return Calculator helps you analyze deals in seconds by integrating all major financial components of a rental property. It accounts for:
Acquisition Costs: Purchase price, down payment, and closing costs.
Financing: Mortgage interest rates and loan terms to calculate debt service.
Operating Expenses: Taxes, insurance, HOA fees, maintenance, vacancy reserves, and CapEx.
Income: Gross monthly rental income.
How to Interpret the Results
Once you input your numbers, the calculator provides a percentage. Here is a general guide on how to interpret it, though market conditions vary:
Under 5%: Generally considered low for a rental property, potentially lower than high-yield savings accounts or index funds, and may not justify the risk and effort of real estate.
8% – 12%: Often considered a solid "average" return in many stable real estate markets.
15%+: Considered an excellent return, often found in high-cash-flow markets or value-add deals (fixer-uppers).
Cash-on-Cash vs. Cap Rate vs. ROI
It is important to distinguish CoC from other metrics:
Cap Rate (Capitalization Rate): Measures the property's natural rate of return without considering mortgage financing. It is calculated as Net Operating Income (NOI) / Purchase Price. Cap Rate is useful for comparing properties, while CoC is useful for comparing *your* specific financing scenario.
Total ROI: Often includes principal paydown (equity build-up) and tax benefits (depreciation), and sometimes appreciation. CoC strictly looks at liquid cash flow.
Factors That Kill Your Returns
When using this calculator, ensure you are not underestimating expenses. Common mistakes include:
Ignoring Vacancy Rates: Even in hot markets, tenants move out. Budgeting 5-8% for vacancy is prudent.
Overlooking CapEx (Capital Expenditures): Roofs, HVAC systems, and water heaters eventually need replacement. Setting aside money monthly ensures your cash flow calculation is realistic over the long term.
Underestimating Property Management: Even if you self-manage now, budgeting 8-10% for management ensures the deal still works if you decide to hire a professional later.
Use the calculator above to run multiple scenarios. Try adjusting the rent, interest rate, or down payment to see how sensitive your return is to these variables. This sensitivity analysis is key to smart real estate investing.
function calculateROI() {
// Clear previous error states
document.getElementById('errorMsg').style.display = 'none';
document.getElementById('results').style.display = 'none';
// 1. Get Input Values
var price = parseFloat(document.getElementById('purchasePrice').value);
var downPayment = parseFloat(document.getElementById('downPayment').value);
var closingCosts = parseFloat(document.getElementById('closingCosts').value);
var interestRate = parseFloat(document.getElementById('interestRate').value);
var loanTerm = parseFloat(document.getElementById('loanTerm').value);
var rent = parseFloat(document.getElementById('monthlyRent').value);
var taxes = parseFloat(document.getElementById('annualTaxes').value);
var insurance = parseFloat(document.getElementById('annualInsurance').value);
var operating = parseFloat(document.getElementById('monthlyOperating').value);
// 2. Validation
if (isNaN(price) || isNaN(downPayment) || isNaN(closingCosts) ||
isNaN(interestRate) || isNaN(loanTerm) || isNaN(rent) ||
isNaN(taxes) || isNaN(insurance) || isNaN(operating)) {
document.getElementById('errorMsg').style.display = 'block';
return;
}
// 3. Calculation Logic
// Loan Amount
var loanAmount = price – downPayment;
// Monthly Mortgage Payment (Principal + Interest)
var monthlyMortgage = 0;
if (loanAmount > 0) {
var monthlyRate = (interestRate / 100) / 12;
var numberOfPayments = loanTerm * 12;
if (interestRate === 0) {
monthlyMortgage = loanAmount / numberOfPayments;
} else {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
}
}
// Monthly Expenses (Taxes + Insurance + Operating + Mortgage)
var monthlyTaxes = taxes / 12;
var monthlyInsurance = insurance / 12;
var totalMonthlyExpenses = monthlyMortgage + monthlyTaxes + monthlyInsurance + operating;
// Cash Flow
var monthlyCashFlow = rent – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// Total Cash Invested
var totalCashInvested = downPayment + closingCosts;
// Cash on Cash Return
var cocReturn = 0;
if (totalCashInvested > 0) {
cocReturn = (annualCashFlow / totalCashInvested) * 100;
}
// 4. Update UI
document.getElementById('cocResult').innerHTML = cocReturn.toFixed(2) + "%";
// Styling based on result (Positive Green, Negative Red)
if(cocReturn < 0) {
document.getElementById('cocResult').style.color = "#c0392b";
document.querySelector('.highlight-result').style.borderLeftColor = "#c0392b";
} else {
document.getElementById('cocResult').style.color = "#27ae60";
document.querySelector('.highlight-result').style.borderLeftColor = "#27ae60";
}
// Formatting currency
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
});
document.getElementById('totalInvestedResult').innerHTML = formatter.format(totalCashInvested);
document.getElementById('monthlyMortgageResult').innerHTML = formatter.format(monthlyMortgage);
document.getElementById('totalMonthlyExpensesResult').innerHTML = formatter.format(totalMonthlyExpenses);
document.getElementById('monthlyCashFlowResult').innerHTML = formatter.format(monthlyCashFlow);
document.getElementById('annualCashFlowResult').innerHTML = formatter.format(annualCashFlow);
// Show results
document.getElementById('results').style.display = 'block';
}