Rental Property Cash on Cash Return Calculator
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
line-height: 1.6;
color: #333;
max-width: 1200px;
margin: 0 auto;
padding: 20px;
background-color: #f9f9f9;
}
.calculator-container {
background: #fff;
padding: 30px;
border-radius: 8px;
box-shadow: 0 4px 15px rgba(0,0,0,0.1);
margin-bottom: 40px;
border-top: 5px solid #2c3e50;
}
.calculator-title {
text-align: center;
color: #2c3e50;
margin-bottom: 25px;
font-size: 24px;
font-weight: 700;
}
.input-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
}
@media (max-width: 768px) {
.input-grid {
grid-template-columns: 1fr;
}
}
.input-group {
margin-bottom: 15px;
}
.input-group label {
display: block;
margin-bottom: 8px;
font-weight: 600;
font-size: 14px;
color: #555;
}
.input-group input {
width: 100%;
padding: 12px;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 16px;
box-sizing: border-box;
transition: border-color 0.3s;
}
.input-group input:focus {
border-color: #3498db;
outline: none;
}
.full-width {
grid-column: 1 / -1;
}
.calc-button {
display: block;
width: 100%;
padding: 15px;
background-color: #27ae60;
color: white;
border: none;
border-radius: 4px;
font-size: 18px;
font-weight: bold;
cursor: pointer;
transition: background-color 0.3s;
margin-top: 10px;
}
.calc-button:hover {
background-color: #219150;
}
.results-section {
margin-top: 30px;
background-color: #f8f9fa;
padding: 20px;
border-radius: 6px;
border: 1px solid #e9ecef;
display: none;
}
.result-row {
display: flex;
justify-content: space-between;
padding: 10px 0;
border-bottom: 1px solid #e0e0e0;
}
.result-row:last-child {
border-bottom: none;
}
.result-label {
font-weight: 600;
color: #555;
}
.result-value {
font-weight: 700;
color: #2c3e50;
}
.highlight-result {
background-color: #e8f6f3;
padding: 15px;
border-radius: 4px;
margin-top: 15px;
text-align: center;
border: 1px solid #d4efdf;
}
.highlight-result .result-label {
font-size: 18px;
display: block;
margin-bottom: 5px;
color: #16a085;
}
.highlight-result .result-value {
font-size: 32px;
color: #16a085;
}
.content-section {
background: #fff;
padding: 40px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.05);
}
h2 {
color: #2c3e50;
border-bottom: 2px solid #eee;
padding-bottom: 10px;
margin-top: 30px;
}
h3 {
color: #34495e;
margin-top: 25px;
}
p, li {
color: #444;
font-size: 16px;
line-height: 1.7;
}
ul {
padding-left: 20px;
}
.tip-box {
background-color: #fff8e1;
border-left: 4px solid #ffc107;
padding: 15px;
margin: 20px 0;
}
Rental Property Cash on Cash Return Calculator
Total Cash Invested (Out of Pocket):
$0.00
Monthly Mortgage Payment (P&I):
$0.00
Total Monthly Expenses (P&I + Ops):
$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
For rental property investors, not all ROI metrics are created equal. While "Cap Rate" measures the potential of a property unleveraged (paid in cash), Cash on Cash Return (CoC) is the premier metric for investors who use financing. It tells you exactly how hard your actual invested dollars are working for you.
What is Cash on Cash Return?
Cash on Cash Return represents the ratio of annual pre-tax cash flow to the total amount of cash actually invested in the deal. Unlike generic ROI, it accounts for the power of leverage (mortgages). It answers the fundamental question: "For every dollar I put into this deal today, how much cash will I get back this year?"
Formula:
Cash on Cash Return = (Annual Pre-Tax Cash Flow / Total Cash Invested) × 100
Inputs Explained
- Purchase Price: The agreed-upon sale price of the property.
- Down Payment: The upfront portion of the purchase price you pay in cash (usually 20-25% for investment properties).
- Closing Costs: Fees paid at the closing table, including title insurance, origination fees, and recording fees.
- Rehab/Repair Costs: Immediate cash spent to get the property rent-ready.
- Monthly Operating Expenses: Costs to run the property excluding the mortgage. This includes Property Taxes, Insurance, HOA fees, Maintenance reserves, and Vacancy reserves.
Example Calculation
Let's say you buy a property for $200,000.
- Down Payment (20%): $40,000
- Closing & Repairs: $10,000
- Total Cash Invested: $50,000
After paying the mortgage and all expenses, the property generates $300/month in pure profit (Cash Flow).
- Annual Cash Flow: $300 × 12 = $3,600
- Calculation: $3,600 / $50,000 = 0.072
- Result: 7.2% Cash on Cash Return
What is a "Good" Return?
While target returns vary by investor strategy and market, general benchmarks include:
- 8-12%: Considered a solid, healthy return in most stable markets.
- 15%+: Excellent return, often found in riskier markets or properties requiring significant "sweat equity" (rehab work).
- Below 5%: Often considered poor for cash flow investing, though investors might accept this if they are banking on high appreciation.
Why This Calculator Matters
Novice investors often make the mistake of looking only at the "Cap Rate" or simply the difference between rent and the mortgage. However, forgetting to account for Closing Costs and Repair Costs in the denominator (Total Cash Invested) will artificially inflate your projected returns. This calculator ensures you account for every dollar leaving your pocket to give you a realistic view of your investment performance.
function calculateROI() {
// 1. Get Input Values
var price = parseFloat(document.getElementById('purchasePrice').value);
var downPercent = parseFloat(document.getElementById('downPaymentPercent').value);
var closingCosts = parseFloat(document.getElementById('closingCosts').value);
var repairCosts = parseFloat(document.getElementById('repairCosts').value);
var interestRate = parseFloat(document.getElementById('interestRate').value);
var loanTerm = parseFloat(document.getElementById('loanTerm').value);
var monthlyRent = parseFloat(document.getElementById('monthlyRent').value);
var monthlyOps = parseFloat(document.getElementById('monthlyExpenses').value);
// 2. Validate Inputs
if (isNaN(price) || isNaN(downPercent) || isNaN(monthlyRent) || isNaN(monthlyOps)) {
alert("Please fill in all required fields (Price, Down Payment, Rent, Expenses) with valid numbers.");
return;
}
// Handle optional fields as 0 if empty
if (isNaN(closingCosts)) closingCosts = 0;
if (isNaN(repairCosts)) repairCosts = 0;
if (isNaN(interestRate)) interestRate = 0;
if (isNaN(loanTerm)) loanTerm = 30;
// 3. Perform Calculations
// Investment Capital
var downPaymentAmount = price * (downPercent / 100);
var totalInvested = downPaymentAmount + closingCosts + repairCosts;
// Mortgage Calculation
var loanAmount = price – downPaymentAmount;
var monthlyMortgage = 0;
if (interestRate > 0 && loanAmount > 0) {
var monthlyRate = (interestRate / 100) / 12;
var numberOfPayments = loanTerm * 12;
// 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 && interestRate === 0) {
// Edge case: 0% interest loan
monthlyMortgage = loanAmount / (loanTerm * 12);
}
// Cash Flow Logic
var totalMonthlyExpenses = monthlyMortgage + monthlyOps;
var monthlyCashFlow = monthlyRent – totalMonthlyExpenses;
var annualCashFlow = monthlyCashFlow * 12;
// Cash on Cash Return Formula
var cocReturn = 0;
if (totalInvested > 0) {
cocReturn = (annualCashFlow / totalInvested) * 100;
}
// 4. Display Results
document.getElementById('resultContainer').style.display = "block";
// Formatting currency helper
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
});
document.getElementById('resTotalInvested').innerHTML = formatter.format(totalInvested);
document.getElementById('resMortgage').innerHTML = formatter.format(monthlyMortgage);
document.getElementById('resTotalExpenses').innerHTML = formatter.format(totalMonthlyExpenses);
// Handle styling for negative cash flow
var mcfEl = document.getElementById('resMonthlyCashFlow');
mcfEl.innerHTML = formatter.format(monthlyCashFlow);
mcfEl.style.color = monthlyCashFlow < 0 ? "#e74c3c" : "#2c3e50";
var acfEl = document.getElementById('resAnnualCashFlow');
acfEl.innerHTML = formatter.format(annualCashFlow);
acfEl.style.color = annualCashFlow < 0 ? "#e74c3c" : "#2c3e50";
var cocEl = document.getElementById('resCoC');
cocEl.innerHTML = cocReturn.toFixed(2) + "%";
// Color code the final return percentage
if (cocReturn = 12) {
cocEl.style.color = "#27ae60"; // Green for excellent
} else {
cocEl.style.color = "#16a085"; // Teal for standard
}
}