Calculate your annual return on actual cash invested.
Purchase Info
Financing
Monthly Income
Monthly Expenses
Please enter valid numeric values. Purchase price must be greater than 0.
Financial Analysis
Cash-on-Cash Return:0.00%
Monthly Cash Flow:$0.00
Annual Cash Flow:$0.00
Total Cash Invested:$0.00
Monthly Mortgage Payment (P&I):
$0.00
Understanding Cash-on-Cash Return for Rental Properties
Real estate investors use various metrics to evaluate the profitability of a rental property. While Cap Rate measures the property's potential regardless of financing, the Cash-on-Cash (CoC) Return is arguably the most practical metric for investors using leverage (mortgages).
This calculator helps you determine exactly how hard your actual invested dollars are working for you. Unlike ROI, which might account for loan paydown and appreciation, CoC focuses strictly on the pre-tax cash flow relative to the cash invested.
How to Calculate Cash-on-Cash Return
The formula for Cash-on-Cash return is relatively straightforward:
Annual Cash Flow: This is your Gross Scheduled Income minus all Operating Expenses (taxes, insurance, maintenance, vacancy, management) and minus your Annual Debt Service (mortgage payments).
Total Cash Invested: This includes your Down Payment, Closing Costs, and any immediate Repair or Rehab costs required to get the property rented. It does not include the loan amount.
What is a Good Cash-on-Cash Return?
While target returns vary by market and investor strategy, here are some general benchmarks:
8% – 12%: Generally considered a solid return for most residential rental markets. This outperforms the historical average of the stock market while providing the added benefits of real estate ownership (appreciation, tax depreciation).
15%+: Considered an excellent return, often found in lower-cost markets or properties requiring significant "sweat equity" (rehab work).
Below 5%: Might be acceptable in high-appreciation markets (like coastal cities) where the primary goal is long-term equity growth rather than immediate cash flow.
Why Cash Flow Can Be Negative
If your calculator result shows a negative percentage, it means the property costs more to hold than it generates in rent. This typically happens when:
The purchase price is too high relative to the rent (low rent-to-price ratio).
The down payment is too low, resulting in a mortgage payment that swallows the rental income.
Operating expenses (like HOA fees or taxes) are unexpectedly high.
function calculateCoC() {
// 1. Get Input Values
var price = parseFloat(document.getElementById('purchasePrice').value);
var closing = parseFloat(document.getElementById('closingCosts').value) || 0;
var rehab = parseFloat(document.getElementById('rehabCosts').value) || 0;
var downPercent = parseFloat(document.getElementById('downPaymentPercent').value) || 0;
var interestRate = parseFloat(document.getElementById('interestRate').value) || 0;
var loanYears = parseFloat(document.getElementById('loanTerm').value) || 30;
var monthlyRent = parseFloat(document.getElementById('monthlyRent').value) || 0;
var otherIncome = parseFloat(document.getElementById('otherIncome').value) || 0;
var propTax = parseFloat(document.getElementById('propertyTax').value) || 0;
var insurance = parseFloat(document.getElementById('insurance').value) || 0;
var maintenance = parseFloat(document.getElementById('maintenance').value) || 0;
// Validation
var errorBox = document.getElementById('errorBox');
if (isNaN(price) || price 0 && loanAmount > 0) {
// Standard Amortization Formula: M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]
monthlyMortgage = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
} else if (loanAmount > 0) {
// 0% interest case
monthlyMortgage = loanAmount / numberOfPayments;
}
// 4. Calculate Cash Flow
var totalMonthlyIncome = monthlyRent + otherIncome;
var totalMonthlyExpenses = propTax + insurance + maintenance + monthlyMortgage;
var monthlyCashFlow = totalMonthlyIncome – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// 5. Calculate Cash on Cash Return
var cocReturn = 0;
if (totalCashInvested > 0) {
cocReturn = (annualCashFlow / totalCashInvested) * 100;
}
// 6. Update Display
document.getElementById('cocResult').innerHTML = cocReturn.toFixed(2) + "%";
document.getElementById('cocResult').style.color = cocReturn >= 0 ? "#2c7a7b" : "#e53e3e";
document.getElementById('monthlyCashFlow').innerHTML = formatCurrency(monthlyCashFlow);
document.getElementById('monthlyCashFlow').style.color = monthlyCashFlow >= 0 ? "#333" : "#e53e3e";
document.getElementById('annualCashFlow').innerHTML = formatCurrency(annualCashFlow);
document.getElementById('annualCashFlow').style.color = annualCashFlow >= 0 ? "#333" : "#e53e3e";
document.getElementById('totalCashInvested').innerHTML = formatCurrency(totalCashInvested);
document.getElementById('monthlyMortgage').innerHTML = formatCurrency(monthlyMortgage);
// Show results
document.getElementById('resultContainer').style.display = 'block';
}
function formatCurrency(num) {
return "$" + num.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,');
}