Analyze your real estate investment returns instantly.
Purchase & Investment Details
Loan Details
Monthly Income & Expenses
Variable Expense Estimates (%)
Total Cash Invested:$0.00
Monthly Mortgage (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
Cash-on-Cash (CoC) return is one of the most important metrics for real estate investors. Unlike Cap Rate, which assesses the property's potential independent of financing, CoC return measures the actual return on the specific cash you invested, taking into account your mortgage leverage.
How is Cash-on-Cash Return Calculated?
The formula for Cash-on-Cash return is straightforward:
CoC Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) × 100%
Annual Cash Flow: This is your gross rental income minus all operating expenses (taxes, insurance, HOA, maintenance, vacancy, property management) and debt service (mortgage payments).
Total Cash Invested: This includes your down payment, closing costs, and any immediate repair or rehabilitation costs required to make the property rentable.
Why is a Good CoC Return Important?
A positive CoC return ensures that your investment is generating income rather than costing you money to hold. While appreciation is a great long-term bonus, experienced investors prioritize positive cash flow to mitigate risk. A typical "good" Cash-on-Cash return varies by market, but many investors target between 8% and 12%.
Using This Calculator
Our calculator allows you to adjust variables like vacancy rates and maintenance reserves. Beginners often overlook these "phantom costs," leading to inaccurate profit projections. By factoring in a 5% to 10% vacancy rate and a maintenance budget, you get a realistic view of the property's performance.
function calculateRentalROI() {
// 1. Get Values
var purchasePrice = parseFloat(document.getElementById('purchasePrice').value);
var downPaymentPercent = parseFloat(document.getElementById('downPaymentPercent').value);
var closingCosts = parseFloat(document.getElementById('closingCosts').value);
var rehabCosts = parseFloat(document.getElementById('rehabCosts').value);
var interestRate = parseFloat(document.getElementById('interestRate').value);
var loanTerm = parseFloat(document.getElementById('loanTerm').value);
var monthlyRent = parseFloat(document.getElementById('monthlyRent').value);
var propertyTax = parseFloat(document.getElementById('propertyTax').value);
var homeInsurance = parseFloat(document.getElementById('homeInsurance').value);
var hoaFees = parseFloat(document.getElementById('hoaFees').value);
var vacancyRate = parseFloat(document.getElementById('vacancyRate').value);
var maintenanceRate = parseFloat(document.getElementById('maintenanceRate').value);
var managementRate = parseFloat(document.getElementById('managementRate').value);
// Validation
if (isNaN(purchasePrice) || isNaN(monthlyRent)) {
alert("Please enter valid numbers for Price and Rent.");
return;
}
// 2. Calculate Investment Details
var downPaymentAmount = purchasePrice * (downPaymentPercent / 100);
var totalInvested = downPaymentAmount + closingCosts + rehabCosts;
var loanAmount = purchasePrice – downPaymentAmount;
// 3. Calculate Mortgage (P&I)
var monthlyRate = (interestRate / 100) / 12;
var numberOfPayments = loanTerm * 12;
var mortgagePayment = 0;
if (interestRate > 0) {
// M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]
mortgagePayment = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
} else {
mortgagePayment = loanAmount / numberOfPayments;
}
// 4. Calculate Variable Expenses
var vacancyCost = monthlyRent * (vacancyRate / 100);
var maintenanceCost = monthlyRent * (maintenanceRate / 100);
var managementCost = monthlyRent * (managementRate / 100);
// 5. Calculate Total Monthly Expenses
var totalMonthlyExpenses = mortgagePayment + propertyTax + homeInsurance + hoaFees + vacancyCost + maintenanceCost + managementCost;
// 6. Calculate Cash Flow
var monthlyCashFlow = monthlyRent – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// 7. Calculate CoC Return
var cocReturn = 0;
if (totalInvested > 0) {
cocReturn = (annualCashFlow / totalInvested) * 100;
}
// 8. Display Results
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
});
document.getElementById('resTotalInvested').innerHTML = formatter.format(totalInvested);
document.getElementById('resMortgage').innerHTML = formatter.format(mortgagePayment);
document.getElementById('resExpenses').innerHTML = formatter.format(totalMonthlyExpenses);
document.getElementById('resCashFlow').innerHTML = formatter.format(monthlyCashFlow);
document.getElementById('resAnnualFlow').innerHTML = formatter.format(annualCashFlow);
var cocElement = document.getElementById('resCoC');
cocElement.innerHTML = cocReturn.toFixed(2) + "%";
// Color code the result
if (cocReturn >= 8) {
cocElement.style.color = "#27ae60"; // Green
} else if (cocReturn > 0) {
cocElement.style.color = "#f39c12"; // Orange
} else {
cocElement.style.color = "#c0392b"; // Red
}
document.getElementById('results').style.display = 'block';
}