Investment Property Cash on Cash Return Calculator
Calculate your rental property ROI and monthly cash flow.
Immediate repairs needed before renting
Taxes, Insurance, HOA, Management, Vacancy
Total Cash Invested (Out of Pocket):$0.00
Monthly Mortgage Payment:$0.00
Monthly Cash Flow:$0.00
Annual Cash Flow:$0.00
Cash on Cash Return (ROI):0.00%
Understanding Cash on Cash Return in Real Estate
Whether you are a seasoned investor or buying your first rental property, understanding your numbers is crucial. The Cash on Cash Return (CoC) is one of the most important metrics in real estate investing. Unlike a standard ROI which might consider total equity, CoC specifically measures the annual return on the actual cash you invested out-of-pocket.
How This Calculator Works
This Investment Property Calculator takes into account not just your mortgage, but the total initial capital required to acquire the asset. The formula used is:
Cash on Cash Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) × 100
Key Inputs Explained
Total Cash Invested: This includes your Down Payment, Closing Costs, and any immediate Rehab/Repair costs. This is the denominator in our equation.
Monthly Expenses: Be sure to include Property Taxes, Insurance, HOA fees, Property Management fees, and set aside amounts for Maintenance and Vacancy.
Cash Flow: Your rental income minus all expenses and debt service (mortgage).
What is a Good Cash on Cash Return?
While "good" is subjective, many investors target a Cash on Cash return of 8% to 12%. In highly competitive markets, 5-7% might be acceptable if there is strong appreciation potential. Conversely, in riskier or lower-cost markets, investors may demand returns upwards of 15%.
Why Use This Calculator?
Manually calculating mortgage amortization and aggregating expenses can lead to errors. This tool provides instant clarity on whether a property will generate positive cash flow or cost you money every month, helping you make data-driven investment decisions.
function calculateROI() {
// Get Input Values
var price = parseFloat(document.getElementById('purchasePrice').value);
var closing = parseFloat(document.getElementById('closingCosts').value);
var rehab = parseFloat(document.getElementById('rehabCosts').value);
var downPerc = parseFloat(document.getElementById('downPaymentPerc').value);
var rate = parseFloat(document.getElementById('interestRate').value);
var years = parseFloat(document.getElementById('loanTerm').value);
var rent = parseFloat(document.getElementById('monthlyRent').value);
var expenses = parseFloat(document.getElementById('monthlyExpenses').value);
// Validation: Ensure required fields are numbers
if (isNaN(price) || isNaN(downPerc) || isNaN(rent)) {
alert("Please enter valid numbers for Price, Down Payment, and Rent.");
return;
}
// Default optional fields to 0 if empty
if (isNaN(closing)) closing = 0;
if (isNaN(rehab)) rehab = 0;
if (isNaN(rate)) rate = 0;
if (isNaN(years)) years = 30; // Default to 30 years if missing
if (isNaN(expenses)) expenses = 0;
// 1. Calculate Initial Investment
var downPaymentAmount = price * (downPerc / 100);
var loanAmount = price – downPaymentAmount;
var totalCashInvested = downPaymentAmount + closing + rehab;
// 2. Calculate Mortgage Payment (Monthly)
var monthlyMortgage = 0;
if (loanAmount > 0) {
if (rate === 0) {
monthlyMortgage = loanAmount / (years * 12);
} else {
var monthlyRate = (rate / 100) / 12;
var numberOfPayments = years * 12;
// M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1]
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
}
}
// 3. Calculate Cash Flow
var totalMonthlyOutflow = monthlyMortgage + expenses;
var monthlyCashFlow = rent – totalMonthlyOutflow;
var annualCashFlow = monthlyCashFlow * 12;
// 4. Calculate Cash on Cash Return
var cocReturn = 0;
if (totalCashInvested > 0) {
cocReturn = (annualCashFlow / totalCashInvested) * 100;
}
// 5. Update UI
document.getElementById('results').style.display = 'block';
// Format currency helper
var fmtMoney = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' });
document.getElementById('resTotalInvested').innerText = fmtMoney.format(totalCashInvested);
document.getElementById('resMortgage').innerText = fmtMoney.format(monthlyMortgage);
var mcfEl = document.getElementById('resMonthlyCashFlow');
mcfEl.innerText = fmtMoney.format(monthlyCashFlow);
mcfEl.className = monthlyCashFlow >= 0 ? "result-value" : "result-value negative";
var acfEl = document.getElementById('resAnnualCashFlow');
acfEl.innerText = fmtMoney.format(annualCashFlow);
acfEl.className = annualCashFlow >= 0 ? "result-value" : "result-value negative";
var cocEl = document.getElementById('resCoC');
cocEl.innerText = cocReturn.toFixed(2) + "%";
// Color code the ROI
if (cocReturn >= 8) {
cocEl.style.color = "#27ae60"; // Green for good
} else if (cocReturn >= 0) {
cocEl.style.color = "#f39c12"; // Orange for okay
} else {
cocEl.style.color = "#e74c3c"; // Red for loss
}
}