Please check your inputs. Ensure all fields contain valid numbers.
Investment Analysis
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
When investing in rental properties, determining the profitability of a deal is crucial before signing any papers. The Cash on Cash (CoC) Return is one of the most popular metrics used by real estate investors to evaluate the performance of an income-producing 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 initial cash invested. Unlike Cap Rate, which looks at the property's value regardless of financing, CoC return specifically considers the impact of your mortgage leverage.
To get an accurate result, you need to input three main categories of data:
Acquisition Costs: The purchase price, your down payment, and any closing costs or immediate repair costs (rehab) needed to get the property rent-ready.
Loan Details: Your mortgage interest rate and the term (usually 30 years). This calculates your monthly debt service.
Operational Data: The expected monthly rent and your total operating expenses (taxes, insurance, property management fees, vacancy reserves, and maintenance).
Example Scenario
Let's say you buy a property for $200,000. You put 20% down ($40,000) and pay $5,000 in closing costs. Your total cash invested is $45,000.
After paying the mortgage and all expenses, the property generates $300 per month in positive cash flow. That is $3,600 per year.
Your Cash on Cash Return would be: ($3,600 / $45,000) = 8%.
What is a Good CoC Return?
While "good" is subjective, many investors target a CoC return between 8% and 12%. However, in highly appreciative markets, investors might accept a lower CoC (4-6%) banking on long-term value growth, while in stable cash-flow markets, investors might demand 10% or higher.
function calculateCoC() {
// 1. Get Input Values
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 otherExpenses = parseFloat(document.getElementById('otherExpenses').value);
var errorDisplay = document.getElementById('errorDisplay');
var resultsSection = document.getElementById('results');
// 2. Validation
if (isNaN(purchasePrice) || isNaN(downPayment) || isNaN(closingCosts) ||
isNaN(interestRate) || isNaN(loanTerm) || isNaN(monthlyRent) || isNaN(otherExpenses)) {
errorDisplay.style.display = 'block';
resultsSection.style.display = 'none';
return;
}
errorDisplay.style.display = 'none';
// 3. Calculation Logic
// Loan Amount
var loanAmount = purchasePrice – downPayment;
// Monthly Mortgage Payment Calculation (Principal + Interest)
// M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]
var monthlyRate = (interestRate / 100) / 12;
var numberOfPayments = loanTerm * 12;
var mortgagePayment = 0;
if (monthlyRate > 0 && loanAmount > 0) {
mortgagePayment = loanAmount * (monthlyRate * Math.pow(1 + monthlyRate, numberOfPayments)) / (Math.pow(1 + monthlyRate, numberOfPayments) – 1);
} else if (loanAmount > 0) {
// Case where interest rate is 0
mortgagePayment = loanAmount / numberOfPayments;
}
// Total Monthly Outflow
var totalMonthlyExpenses = mortgagePayment + otherExpenses;
// Cash Flow
var monthlyCashFlow = monthlyRent – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// Total Invested Cash
var totalInvested = downPayment + closingCosts;
// Cash on Cash Return
var cocReturn = 0;
if (totalInvested > 0) {
cocReturn = (annualCashFlow / totalInvested) * 100;
}
// 4. Update DOM with Results
document.getElementById('resTotalInvested').innerHTML = '$' + totalInvested.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resMortgage').innerHTML = '$' + mortgagePayment.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
var monthlyCfEl = document.getElementById('resMonthlyCashFlow');
monthlyCfEl.innerHTML = '$' + monthlyCashFlow.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
monthlyCfEl.style.color = monthlyCashFlow >= 0 ? '#27ae60' : '#e74c3c';
var annualCfEl = document.getElementById('resAnnualCashFlow');
annualCfEl.innerHTML = '$' + annualCashFlow.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
annualCfEl.style.color = annualCashFlow >= 0 ? '#333' : '#e74c3c';
var cocEl = document.getElementById('resCoC');
cocEl.innerHTML = cocReturn.toFixed(2) + '%';
cocEl.style.color = cocReturn >= 0 ? '#3498db' : '#e74c3c';
// Show results
resultsSection.style.display = 'block';
}