Calculate your potential monthly mortgage payments for a buy-to-let property.
Your Buy to Let Mortgage Calculation
Understanding Buy to Let Mortgage Calculations in the UK
Investing in buy-to-let (BTL) property can be a lucrative venture, but it comes with specific financial considerations. A crucial element of this is understanding your mortgage costs and the potential profitability. This calculator helps estimate your monthly mortgage payments and key financial metrics for a UK buy-to-let property.
How the Calculator Works
The core of the calculation for your monthly mortgage payment uses the standard annuity mortgage formula. For BTL mortgages, lenders often have specific criteria, including a higher deposit requirement and rental income coverage ratios, which we've incorporated as checks.
Mortgage Payment Calculation
The monthly mortgage payment (M) is calculated using the following formula:
M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1]
Where:
P = Principal Loan Amount (Property Value – Deposit)
Annual Rental Income is the Estimated Monthly Rental Income multiplied by 12.
Affordability Check (Lender's Perspective)
Most BTL lenders require the anticipated rental income to cover a certain percentage of the mortgage payment, typically 125% to 145% of the equivalent buy-to-sell mortgage payment (based on a higher notional interest rate). This calculator provides a simplified check:
Rental Coverage Ratio = (Monthly Rental Income / Calculated Monthly Mortgage Payment) * 100%
We flag if the rental income appears insufficient to meet a typical lender's requirement (e.g., if it's less than 125% of the calculated mortgage payment).
When to Use This Calculator
Assessing Investment Viability: Estimate your monthly outgoings and see if the rental income is likely to cover them and provide a profit.
Comparing Mortgage Offers: Input different interest rates and terms to compare potential costs.
Understanding Lender Requirements: Get a feel for the deposit amounts and LTVs lenders typically expect.
Budgeting: Plan for the ongoing costs of owning a rental property.
Important Considerations
Interest Rates: BTL mortgage rates are often higher than residential mortgages. The rate used here is a crucial variable.
Fees: This calculator does not include mortgage arrangement fees, valuation fees, or other costs associated with a BTL mortgage.
Tax: Rental income is subject to income tax. Mortgage interest relief for BTL has also changed, so consult a tax advisor.
Void Periods: The calculator assumes continuous rental occupancy. Budget for times when the property might be empty between tenants.
Other Costs: Factor in maintenance, insurance, letting agent fees, and service charges.
Lender Specifics: This is a guide. Actual BTL mortgage affordability will depend on the specific lender's criteria, your personal circumstances, and the property's location and condition. Always seek professional advice.
function calculateBTLMortgage() {
var propertyValue = parseFloat(document.getElementById("propertyValue").value);
var depositAmount = parseFloat(document.getElementById("depositAmount").value);
var annualInterestRate = parseFloat(document.getElementById("annualInterestRate").value);
var mortgageTermYears = parseFloat(document.getElementById("mortgageTermYears").value);
var rentalIncomePerMonth = parseFloat(document.getElementById("rentalIncomePerMonth").value);
var resultDiv = document.getElementById("result");
var monthlyMortgagePaymentEl = document.getElementById("monthlyMortgagePayment");
var loanToValueEl = document.getElementById("loanToValue");
var rentalYieldEl = document.getElementById("rentalYield");
var affordabilityCheckEl = document.getElementById("affordabilityCheck");
resultDiv.style.display = 'block';
// — Input Validation —
if (isNaN(propertyValue) || propertyValue <= 0 ||
isNaN(depositAmount) || depositAmount < 0 ||
isNaN(annualInterestRate) || annualInterestRate <= 0 ||
isNaN(mortgageTermYears) || mortgageTermYears <= 0 ||
isNaN(rentalIncomePerMonth) || rentalIncomePerMonth = propertyValue) {
monthlyMortgagePaymentEl.textContent = "Deposit cannot be greater than or equal to the property value.";
loanToValueEl.textContent = "";
rentalYieldEl.textContent = "";
affordabilityCheckEl.textContent = "";
return;
}
// — Calculations —
var loanAmount = propertyValue – depositAmount;
var monthlyInterestRate = (annualInterestRate / 100) / 12;
var numberOfPayments = mortgageTermYears * 12;
var monthlyMortgagePayment = 0;
if (monthlyInterestRate > 0 && numberOfPayments > 0) {
monthlyMortgagePayment = loanAmount * (monthlyInterestRate * Math.pow(1 + monthlyInterestRate, numberOfPayments)) / (Math.pow(1 + monthlyInterestRate, numberOfPayments) – 1);
} else if (loanAmount > 0) { // Handle 0% interest rate case for term > 0
monthlyMortgagePayment = loanAmount / numberOfPayments;
}
var ltv = (loanAmount / propertyValue) * 100;
var annualRentalIncome = rentalIncomePerMonth * 12;
var grossRentalYield = (annualRentalIncome / propertyValue) * 100;
// Affordability Check Logic (Simplified)
var rentalCoverageRatio = 0;
var affordabilityMessage = "";
var affordabilityColor = "#004a99″; // Default color
if (monthlyMortgagePayment > 0) {
rentalCoverageRatio = (rentalIncomePerMonth / monthlyMortgagePayment) * 100;
// Lender's typically require rental income to be 125%-145% of the mortgage payment
// This is a simplified check. Notional rates used by lenders are higher.
if (rentalCoverageRatio 125%).";
affordabilityColor = "#dc3545"; // Red for concern
} else {
affordabilityMessage = "Rental income appears sufficient to cover BTL mortgage payment (based on current rate).";
affordabilityColor = "#28a745"; // Green for good
}
} else if (loanAmount > 0) {
affordabilityMessage = "Monthly mortgage payment is zero or negative. Review inputs.";
affordabilityColor = "#dc3545";
} else {
affordabilityMessage = "No loan amount to assess.";
affordabilityColor = "#6c757d";
}
// — Display Results —
monthlyMortgagePaymentEl.textContent = "Estimated Monthly Mortgage Payment: £" + monthlyMortgagePayment.toFixed(2);
loanToValueEl.textContent = "Loan to Value (LTV): " + ltv.toFixed(2) + "%";
rentalYieldEl.textContent = "Gross Annual Rental Yield: " + grossRentalYield.toFixed(2) + "%";
affordabilityCheckEl.textContent = "Rental Coverage Ratio: " + rentalCoverageRatio.toFixed(2) + "% – " + affordabilityMessage;
affordabilityCheckEl.style.color = affordabilityColor;
affordabilityCheckEl.style.fontWeight = "bold";
}