Calculate the ROI on your real estate investment instantly.
(Taxes, Insurance, HOA, Repairs)
Total Cash Invested:$0.00
Monthly Mortgage Payment:$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 critical metrics for real estate investors. Unlike a standard Return on Investment (ROI) calculation, CoC measures the annual return the investor made on the property in relation to the amount of mortgage paid during the same year. It is strictly based on the actual cash invested, providing a clear picture of your money's performance.
How to Calculate Cash on Cash Return
The formula for Cash on Cash Return is relatively straightforward but requires accurate inputs regarding your income and expenses.
Formula:
Cash on Cash Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) × 100%
1. Annual Pre-Tax Cash Flow: This is calculated by taking your total annual rental income and subtracting all operating expenses and debt service (mortgage payments). 2. Total Cash Invested: This includes your down payment, closing costs, rehab or renovation costs, and any other initial fees required to acquire the property.
What is a Good Cash on Cash Return?
"Good" is subjective and depends on the investor's strategy and the current market conditions. However, here are some general benchmarks:
8-12%: Often considered a solid return for long-term buy-and-hold properties.
15%+: Considered excellent, often found in higher-risk areas or through strategic value-add renovations (BRRRR method).
Below 5%: Might be acceptable in high-appreciation markets (like coastal cities) where the primary goal is equity growth rather than immediate cash flow.
Why Use This Calculator?
Real estate investing involves moving parts. Estimating expenses and debt service in your head can lead to bad investment decisions. This calculator helps you isolate the cash performance of a potential deal, ensuring you don't over-leverage or buy a property that drains your wallet monthly instead of filling it.
function calculateROI() {
// 1. Get Inputs
var purchasePrice = 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 monthlyRent = parseFloat(document.getElementById('monthlyRent').value);
var monthlyExpenses = parseFloat(document.getElementById('monthlyExpenses').value);
// 2. Validation
if (isNaN(purchasePrice) || isNaN(downPayment) || isNaN(interestRate) || isNaN(loanTerm) || isNaN(monthlyRent) || isNaN(monthlyExpenses)) {
alert("Please fill in all fields with valid numbers.");
return;
}
if (isNaN(closingCosts)) { closingCosts = 0; } // Optional field defaulting
// 3. Mortgage Calculation
var loanAmount = purchasePrice – downPayment;
var monthlyRate = (interestRate / 100) / 12;
var numberOfPayments = loanTerm * 12;
var monthlyMortgage = 0;
if (loanAmount > 0) {
if (interestRate === 0) {
monthlyMortgage = loanAmount / numberOfPayments;
} else {
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
}
}
// 4. Cash Flow Calculation
var totalMonthlyOutflow = monthlyMortgage + monthlyExpenses;
var monthlyCashFlow = monthlyRent – totalMonthlyOutflow;
var annualCashFlow = monthlyCashFlow * 12;
// 5. Cash Invested
var totalCashInvested = downPayment + closingCosts;
// 6. Cash on Cash Return
var cocReturn = 0;
if (totalCashInvested > 0) {
cocReturn = (annualCashFlow / totalCashInvested) * 100;
}
// 7. Display Results
document.getElementById('resTotalInvested').innerHTML = "$" + totalCashInvested.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resMortgage').innerHTML = "$" + monthlyMortgage.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
var cashFlowElement = document.getElementById('resMonthlyCashFlow');
cashFlowElement.innerHTML = "$" + monthlyCashFlow.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
cashFlowElement.style.color = monthlyCashFlow >= 0 ? "#2c3e50" : "#c0392b";
var annualFlowElement = document.getElementById('resAnnualCashFlow');
annualFlowElement.innerHTML = "$" + annualCashFlow.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
annualFlowElement.style.color = annualCashFlow >= 0 ? "#2c3e50" : "#c0392b";
var cocElement = document.getElementById('resCoC');
cocElement.innerHTML = cocReturn.toFixed(2) + "%";
cocElement.style.color = cocReturn >= 0 ? "#27ae60" : "#c0392b";
document.getElementById('resultsSection').style.display = 'block';
}