Analyze the profitability of your potential real estate investment.
(Taxes, Insurance, HOA, Vacancy, Maintenance)
Investment Analysis
Total Cash Invested:$0.00
Monthly Mortgage Payment (P&I):$0.00
Total Monthly Costs (Mortgage + Expenses):$0.00
Monthly Cash Flow:$0.00
Annual Cash Flow:$0.00
Cash on Cash Return (CoC):0.00%
Cap Rate:0.00%
Understanding Rental Property Returns
Investing in real estate is one of the most powerful ways to build wealth, but simply buying a property doesn't guarantee a profit. To be a successful investor, you must analyze the numbers cold. This Rental Property Cash on Cash Return Calculator helps you determine if a potential deal makes financial sense by breaking down the key metrics that lenders and seasoned investors use.
What is Cash on Cash Return?
Cash on Cash (CoC) Return is often considered the most important metric for rental property investors. It measures the annual return you made on the actual cash you invested, expressed as a percentage. Unlike simple yield, it accounts for the leverage of a mortgage.
Formula: Cash on Cash Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) × 100
For example, if you invest $50,000 cash (down payment + closing costs) to buy a property, and that property generates $5,000 in positive cash flow after all expenses and mortgage payments for the year, your Cash on Cash return is 10%.
Cash on Cash vs. Cap Rate
While both metrics are useful, they serve different purposes:
Cap Rate (Capitalization Rate): This measures the return of a property as if you bought it entirely with cash. It calculates the relationship between Net Operating Income (NOI) and the purchase price. It is useful for comparing the intrinsic value of different properties regardless of financing.
Cash on Cash Return: This measures the return on your specific investment capital using financing. It is the "real world" return on the money leaving your bank account.
How to Use This Calculator
To get the most accurate results, ensure you include all relevant costs:
Acquisition Costs: Enter the purchase price, but don't forget closing costs (usually 2-5% of price) and any immediate repair costs needed to get the property rent-ready.
Loan Details: Accurate interest rates are crucial. A 1% difference in rate can significantly alter your cash flow.
Operating Expenses: This is where most beginners make mistakes. Be sure to include property taxes, insurance, HOA fees, and estimates for maintenance and vacancy (typically 5-10% of rent each).
Use the results to compare against your investment goals. Many investors look for a Cash on Cash return between 8% and 12%, though this varies by market and strategy.
function calculateROI() {
// 1. Get Input Values
var purchasePrice = parseFloat(document.getElementById('purchasePrice').value) || 0;
var downPayment = parseFloat(document.getElementById('downPayment').value) || 0;
var closingCosts = parseFloat(document.getElementById('closingCosts').value) || 0;
var rehabCosts = parseFloat(document.getElementById('rehabCosts').value) || 0;
var interestRate = parseFloat(document.getElementById('interestRate').value) || 0;
var loanTerm = parseFloat(document.getElementById('loanTerm').value) || 0;
var monthlyRent = parseFloat(document.getElementById('monthlyRent').value) || 0;
var monthlyOpExpenses = parseFloat(document.getElementById('monthlyExpenses').value) || 0;
// Validation: Basic check
if (purchasePrice <= 0 || loanTerm 0) {
var x = Math.pow(1 + monthlyInterestRate, totalPayments);
monthlyMortgage = loanAmount * ( (monthlyInterestRate * x) / (x – 1) );
} else {
// If interest is 0, just principal / months
if (totalPayments > 0) {
monthlyMortgage = loanAmount / totalPayments;
}
}
// Total Monthly Costs
var totalMonthlyCosts = monthlyMortgage + monthlyOpExpenses;
// Cash Flow
var monthlyCashFlow = monthlyRent – totalMonthlyCosts;
var annualCashFlow = monthlyCashFlow * 12;
// Total Cash Invested
var totalCashInvested = downPayment + closingCosts + rehabCosts;
// Net Operating Income (NOI) for Cap Rate
// NOI = (Annual Rent) – (Annual Operating Expenses). Mortgage is NOT included in NOI.
var annualNOI = (monthlyRent * 12) – (monthlyOpExpenses * 12);
// Metrics
var cashOnCashReturn = 0;
if (totalCashInvested > 0) {
cashOnCashReturn = (annualCashFlow / totalCashInvested) * 100;
}
var capRate = 0;
if (purchasePrice > 0) {
capRate = (annualNOI / purchasePrice) * 100;
}
// 3. Display Results
// Helper to format currency
function formatMoney(num) {
return '$' + num.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
}
function formatPercent(num) {
return num.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2}) + '%';
}
document.getElementById('resTotalInvested').innerText = formatMoney(totalCashInvested);
document.getElementById('resMortgage').innerText = formatMoney(monthlyMortgage);
document.getElementById('resTotalCosts').innerText = formatMoney(totalMonthlyCosts);
// Handle coloring for positive/negative cash flow
var cashFlowEl = document.getElementById('resMonthlyCashFlow');
cashFlowEl.innerText = formatMoney(monthlyCashFlow);
if (monthlyCashFlow < 0) {
cashFlowEl.className = "roi-result-value roi-negative";
} else {
cashFlowEl.className = "roi-result-value roi-highlight";
}
var annualCashFlowEl = document.getElementById('resAnnualCashFlow');
annualCashFlowEl.innerText = formatMoney(annualCashFlow);
if (annualCashFlow < 0) {
annualCashFlowEl.className = "roi-result-value roi-negative";
} else {
annualCashFlowEl.className = "roi-result-value roi-highlight";
}
var cocEl = document.getElementById('resCoC');
cocEl.innerText = formatPercent(cashOnCashReturn);
if (cashOnCashReturn < 0) {
cocEl.style.color = "#c0392b";
} else {
cocEl.style.color = "#27ae60";
}
document.getElementById('resCapRate').innerText = formatPercent(capRate);
// Show results
document.getElementById('resultsArea').style.display = 'block';
}