Analyze your real estate investment potential instantly.
Investment Analysis
Total Cash Invested:–
Monthly Mortgage Payment:–
Total Monthly Expenses:–
Monthly Cash Flow:–
Annual Cash Flow:–
Cash on Cash Return:–
Understanding Cash on Cash Return in Real Estate
For rental property investors, the Cash on Cash (CoC) Return is one of the most critical metrics to determine the profitability of an asset. Unlike Cap Rate, which looks at the property's performance without considering financing, Cash on Cash Return specifically measures the return on the actual cash you invested.
This metric is essential because it helps investors compare the performance of a real estate investment against other potential investments, such as stocks, bonds, or other properties.
How the Cash on Cash Return Calculator Works
Our calculator uses a specific formula to derive your percentage return:
Annual Pre-Tax Cash Flow: This is your total rental income minus all expenses (mortgage, taxes, insurance, maintenance, vacancy).
Total Cash Invested: This includes your down payment, closing costs, and any immediate renovation or rehab costs.
The formula is: (Annual Cash Flow / Total Cash Invested) * 100 = CoC Return %.
What is a Good Cash on Cash Return?
While "good" is subjective, most seasoned investors look for a CoC return between 8% and 12%. In highly competitive markets, 5-7% might be acceptable if there is high appreciation potential. In cash-flow-heavy markets, investors often aim for 12% or higher.
Key Inputs Explained
Down Payment: The cash portion of the purchase price.
Closing Costs & Rehab: Don't forget to include inspection fees, title insurance, and initial repairs, as these increase your denominator (cash invested).
Monthly Expenses: Be realistic. Include property taxes, insurance, HOA fees, property management, and a buffer for maintenance and vacancy (usually 5-10% of rent).
Use this calculator to stress-test your deals. Try increasing the interest rate or vacancy expenses to see if the property is still profitable in a worst-case scenario.
function calculateCoC() {
// 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 expenses = parseFloat(document.getElementById('monthlyExpenses').value);
// 2. Validate Inputs
if (isNaN(price) || isNaN(downPayment) || isNaN(rent) || isNaN(expenses)) {
alert("Please fill in all required fields with valid numbers.");
return;
}
// Set defaults for optional fields if empty
if (isNaN(closingCosts)) closingCosts = 0;
if (isNaN(interestRate)) interestRate = 0;
if (isNaN(loanTerm)) loanTerm = 30;
// 3. Calculate Mortgage Payment
var loanAmount = price – downPayment;
var mortgagePayment = 0;
if (interestRate > 0 && loanAmount > 0) {
var monthlyRate = (interestRate / 100) / 12;
var numberOfPayments = loanTerm * 12;
mortgagePayment = loanAmount * monthlyRate * (Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
} else if (loanAmount > 0) {
// If 0% interest (rare, but possible math edge case)
mortgagePayment = loanAmount / (loanTerm * 12);
}
// 4. Calculate Financial Metrics
var totalMonthlyExpenses = mortgagePayment + expenses;
var monthlyCashFlow = rent – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
var totalCashInvested = downPayment + closingCosts;
var cocReturn = 0;
if (totalCashInvested > 0) {
cocReturn = (annualCashFlow / totalCashInvested) * 100;
}
// 5. Display Results
document.getElementById('resTotalInvested').innerText = "$" + totalCashInvested.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resMortgage').innerText = "$" + mortgagePayment.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resTotalExpenses').innerText = "$" + totalMonthlyExpenses.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
var cashFlowEl = document.getElementById('resMonthlyCashFlow');
cashFlowEl.innerText = "$" + monthlyCashFlow.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
cashFlowEl.style.color = monthlyCashFlow >= 0 ? "#27ae60" : "#c0392b";
var annualEl = document.getElementById('resAnnualCashFlow');
annualEl.innerText = "$" + annualCashFlow.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
annualEl.style.color = annualCashFlow >= 0 ? "#27ae60" : "#c0392b";
var cocEl = document.getElementById('resCoC');
cocEl.innerText = cocReturn.toFixed(2) + "%";
cocEl.style.color = cocReturn >= 0 ? "#27ae60" : "#c0392b";
document.getElementById('resultsSection').style.display = "block";
}