Please check your inputs. Ensure Price and Rent are greater than 0.
Financial Analysis
Total Cash Invested:$0.00
Monthly Mortgage (P&I):$0.00
Total Monthly Expenses:$0.00
Net Operating Income (NOI) / Mo:$0.00
Monthly Cash Flow:$0.00
Cash on Cash Return (CoC):0.00%
Cap Rate:0.00%
Understanding Cash on Cash Return in Real Estate
When investing in rental properties, understanding your return on investment (ROI) is crucial. Unlike the stock market, where returns are often simple growth percentages, real estate offers multiple ways to win: cash flow, appreciation, loan paydown, and tax benefits. The Cash on Cash Return Calculator focuses on the most immediate metric: how much cash your property generates relative to the actual cash you invested.
What is Cash on Cash Return?
Cash on Cash Return (CoC) measures the annual pre-tax cash flow generated by the property divided by the total cash invested. It is expressed as a percentage.
Your "Total Cash Invested" isn't just the down payment. It also includes closing costs, rehab or renovation costs, and any immediate repairs needed to make the property rentable.
Why is this Calculator Important?
This calculator helps you determine if a specific property meets your investment criteria before you make an offer. It breaks down:
Monthly Cash Flow: Profit left after paying the mortgage and all operating expenses.
Cap Rate: The return on the property if you bought it in all cash (useful for comparing properties regardless of financing).
Expense Ratios: Accounting for vacancy, repairs, and management to ensure you aren't underestimating costs.
What is a Good Cash on Cash Return?
"Good" is subjective, but many investors target:
8-12%: Solid return for stable markets.
15%+: Excellent return, often found in riskier areas or through value-add deals (BRRRR strategy).
Below 5%: Generally considered low unless the property is in a high-appreciation market (like California or New York).
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "What is included in Total Cash Invested?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Total Cash Invested includes your down payment, closing costs, and any renovation or repair costs paid out of pocket to get the property ready for rent."
}
}, {
"@type": "Question",
"name": "How is Cap Rate different from Cash on Cash Return?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Cap Rate measures the property's natural rate of return assuming an all-cash purchase, calculated as NOI divided by Purchase Price. Cash on Cash Return measures the return on the actual dollars you invested, factoring in leverage (mortgage)."
}
}, {
"@type": "Question",
"name": "Should I include vacancy and maintenance in my calculation?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Even if a property is currently rented and in good condition, you should always allocate a percentage of rent for future vacancy and maintenance (typically 5-10% each) to get a realistic ROI."
}
}]
}
function calculateRentalROI() {
// 1. Get Inputs
var price = parseFloat(document.getElementById('roi_price').value);
var downPercent = parseFloat(document.getElementById('roi_down').value) || 0;
var closingCosts = parseFloat(document.getElementById('roi_closing').value) || 0;
var rehabCosts = parseFloat(document.getElementById('roi_rehab').value) || 0;
var interestRate = parseFloat(document.getElementById('roi_rate').value) || 0;
var loanTermYears = parseFloat(document.getElementById('roi_term').value) || 30;
var monthlyRent = parseFloat(document.getElementById('roi_rent').value);
var otherIncome = parseFloat(document.getElementById('roi_other_inc').value) || 0;
var tax = parseFloat(document.getElementById('roi_tax').value) || 0;
var insurance = parseFloat(document.getElementById('roi_ins').value) || 0;
var hoa = parseFloat(document.getElementById('roi_hoa').value) || 0;
var maintenance = parseFloat(document.getElementById('roi_maint').value) || 0;
var vacancyRate = parseFloat(document.getElementById('roi_vacancy').value) || 0;
var mgmtRate = parseFloat(document.getElementById('roi_mgmt').value) || 0;
var errorBox = document.getElementById('roi_error');
var resultsBox = document.getElementById('roi_results_box');
// 2. Validation
if (!price || !monthlyRent || isNaN(price) || isNaN(monthlyRent)) {
errorBox.style.display = 'block';
resultsBox.style.display = 'none';
return;
} else {
errorBox.style.display = 'none';
}
// 3. Calculation Logic
// Loan Calculations
var downPaymentAmount = price * (downPercent / 100);
var loanAmount = price – downPaymentAmount;
var monthlyInterestRate = interestRate / 100 / 12;
var totalPayments = loanTermYears * 12;
var monthlyMortgage = 0;
if (monthlyInterestRate > 0) {
monthlyMortgage = loanAmount * (monthlyInterestRate * Math.pow(1 + monthlyInterestRate, totalPayments)) / (Math.pow(1 + monthlyInterestRate, totalPayments) – 1);
} else {
monthlyMortgage = loanAmount / totalPayments;
}
// Cash Invested
var totalCashInvested = downPaymentAmount + closingCosts + rehabCosts;
// Income
var totalMonthlyIncome = monthlyRent + otherIncome;
// Variable Expenses
var vacancyCost = monthlyRent * (vacancyRate / 100);
var mgmtCost = monthlyRent * (mgmtRate / 100);
// Total Expenses
var totalMonthlyOperatingExpenses = tax + insurance + hoa + maintenance + vacancyCost + mgmtCost;
var totalMonthlyExpenses = totalMonthlyOperatingExpenses + monthlyMortgage;
// Cash Flow
var monthlyCashFlow = totalMonthlyIncome – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// NOI (Net Operating Income) = Income – Operating Expenses (Excluding Mortgage)
var annualNOI = (totalMonthlyIncome * 12) – (totalMonthlyOperatingExpenses * 12);
// Returns
var cashOnCashReturn = 0;
if (totalCashInvested > 0) {
cashOnCashReturn = (annualCashFlow / totalCashInvested) * 100;
}
var capRate = 0;
if (price > 0) {
capRate = (annualNOI / price) * 100;
}
// 4. Update UI
resultsBox.style.display = 'block';
// Helper to format currency
var fmtMoney = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' });
document.getElementById('res_invested').innerText = fmtMoney.format(totalCashInvested);
document.getElementById('res_mortgage').innerText = fmtMoney.format(monthlyMortgage);
document.getElementById('res_expenses').innerText = fmtMoney.format(totalMonthlyExpenses);
document.getElementById('res_noi').innerText = fmtMoney.format(annualNOI / 12);
// Color code cash flow
var cfElem = document.getElementById('res_cashflow');
cfElem.innerText = fmtMoney.format(monthlyCashFlow);
cfElem.style.color = monthlyCashFlow >= 0 ? '#27ae60' : '#c0392b';
document.getElementById('res_coc').innerText = cashOnCashReturn.toFixed(2) + "%";
document.getElementById('res_cap').innerText = capRate.toFixed(2) + "%";
}