Please enter valid positive numbers for all fields.
Total Cash Invested (Down + Closing):–
Monthly Mortgage Payment:–
Monthly Cash Flow:–
Annual Net Operating Income (NOI):–
Cash-on-Cash Return:–
function calculateRentalROI() {
// 1. Get Elements
var purchasePriceInput = document.getElementById('propPurchasePrice');
var closingCostsInput = document.getElementById('propClosingCosts');
var downPercentInput = document.getElementById('propDownPercent');
var interestRateInput = document.getElementById('propInterestRate');
var loanTermInput = document.getElementById('propLoanTerm');
var monthlyRentInput = document.getElementById('propMonthlyRent');
var monthlyExpensesInput = document.getElementById('propMonthlyExpenses');
var resultsDiv = document.getElementById('results');
var errorDiv = document.getElementById('error-message');
// 2. Parse Values
var price = parseFloat(purchasePriceInput.value);
var closing = parseFloat(closingCostsInput.value);
var downPercent = parseFloat(downPercentInput.value);
var rate = parseFloat(interestRateInput.value);
var termYears = parseFloat(loanTermInput.value);
var rent = parseFloat(monthlyRentInput.value);
var expenses = parseFloat(monthlyExpensesInput.value);
// 3. Validation
if (isNaN(price) || isNaN(closing) || isNaN(downPercent) || isNaN(rate) ||
isNaN(termYears) || isNaN(rent) || isNaN(expenses)) {
errorDiv.style.display = "block";
resultsDiv.style.display = "none";
return;
} else {
errorDiv.style.display = "none";
}
// 4. Calculations
// Cash Invested
var downPaymentAmount = price * (downPercent / 100);
var totalCashInvested = downPaymentAmount + closing;
var loanAmount = price – downPaymentAmount;
// Mortgage Payment (Standard Amortization Formula)
var monthlyRate = (rate / 100) / 12;
var totalPayments = termYears * 12;
var mortgagePayment = 0;
if (rate === 0) {
mortgagePayment = loanAmount / totalPayments;
} else {
mortgagePayment = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, totalPayments)) / (Math.pow(1 + monthlyRate, totalPayments) – 1);
}
// NOI and Cash Flow
var monthlyNOI = rent – expenses; // Net Operating Income before debt service
var annualNOI = monthlyNOI * 12;
var monthlyCashFlow = monthlyNOI – mortgagePayment;
var annualCashFlow = monthlyCashFlow * 12;
// Cash on Cash Return
var cocReturn = 0;
if (totalCashInvested > 0) {
cocReturn = (annualCashFlow / totalCashInvested) * 100;
}
// 5. Update DOM
document.getElementById('resTotalInvested').innerText = '$' + totalCashInvested.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resMortgage').innerText = '$' + mortgagePayment.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
var cashFlowEl = document.getElementById('resCashFlow');
cashFlowEl.innerText = '$' + monthlyCashFlow.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
cashFlowEl.style.color = monthlyCashFlow >= 0 ? '#27ae60' : '#c0392b';
document.getElementById('resNOI').innerText = '$' + annualNOI.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
var cocEl = document.getElementById('resCoC');
cocEl.innerText = cocReturn.toFixed(2) + '%';
cocEl.style.color = cocReturn >= 0 ? '#27ae60' : '#c0392b';
resultsDiv.style.display = "block";
}
Understanding Cash-on-Cash Return in Real Estate
When investing in rental properties, understanding your return on investment (ROI) is crucial for making informed financial decisions. The Cash-on-Cash Return is one of the most popular metrics used by real estate investors to evaluate the profitability of an income-generating property.
What is Cash-on-Cash Return?
Cash-on-Cash Return measures the annual pre-tax cash flow generated by the property relative to the total amount of cash invested. Unlike a standard Return on Investment (ROI) calculation that might include potential equity gains or tax benefits, Cash-on-Cash focuses strictly on the actual liquid cash you receive relative to the cash you put in.
The formula is simple:
Cash-on-Cash Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) x 100%
Input Definitions for the Calculator
Purchase Price: The agreed-upon selling price of the property.
Closing Costs: Fees paid at the closing of a real estate transaction. This typically includes loan origination fees, appraisal fees, title searches, title insurance, surveys, taxes, and deed recording fees.
Down Payment (%): The percentage of the purchase price you are paying upfront in cash. The remainder is funded via a mortgage.
Monthly Operating Expenses: All costs associated with running the property excluding the mortgage. This includes property taxes, insurance premiums, HOA fees, maintenance/repairs, property management fees, and vacancy reserves.
What is a "Good" Cash-on-Cash Return?
The definition of a "good" return varies by investor and market conditions, but generally:
8-12%: Often considered a solid return for long-term buy-and-hold investors.
15%+: Considered an excellent return, though often found in riskier markets or properties requiring significant renovation (value-add).
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 Cash Flow Matters
Positive cash flow ensures that the property pays for itself. If your Monthly Cash Flow is negative, you are essentially paying out of pocket every month to hold the asset. While this might be sustainable for short periods, seasoned investors prioritize properties that generate positive cash flow from day one to mitigate risk.
Limitations of this Metric
While powerful, Cash-on-Cash return does not account for:
Appreciation: The increase in the property's value over time.
Loan Paydown: The portion of your mortgage payment that reduces the principal balance, building equity.
Tax Benefits: Depreciation and mortgage interest deductions that can offset income tax.
Use this calculator as a first-step screening tool. If the Cash-on-Cash numbers look promising, proceed to a deeper analysis of the property's condition and the local market fundamentals.