A personal loan is an unsecured debt that is typically paid back in fixed monthly installments. This calculator helps you determine the impact of interest rates and origination fees on your total cost of borrowing.
How the Math Works
The monthly payment is calculated using the standard amortization formula:
M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1 ]
P: The Principal (Loan Amount)
i: Monthly interest rate (Annual rate / 12)
n: Total number of months (Years x 12)
The Impact of Origination Fees
Many lenders deduct an origination fee (typically 1% to 8%) directly from the loan proceeds. If you borrow $10,000 with a 5% fee, you will only receive $9,500 in your bank account, but you must still pay interest on the full $10,000. Our calculator accounts for this "Net Received" amount so you can plan your budget accordingly.
Example Calculation
Suppose you take a $15,000 loan for 3 years at an 8.5% interest rate:
Monthly Payment: Approximately $473.49
Total Paid: $17,045.64
Total Interest: $2,045.64
If there was a 3% origination fee ($450), you would receive $14,550, yet your monthly payments would remain based on the $15,000 principal.
function calculateLoan() {
var amount = parseFloat(document.getElementById("loan_amount").value);
var annualRate = parseFloat(document.getElementById("interest_rate").value);
var years = parseFloat(document.getElementById("loan_term").value);
var feePercent = parseFloat(document.getElementById("origination_fee").value);
if (isNaN(amount) || isNaN(annualRate) || isNaN(years) || amount <= 0 || annualRate < 0 || years <= 0) {
alert("Please enter valid positive numbers for the loan amount, interest rate, and term.");
return;
}
var monthlyRate = annualRate / 100 / 12;
var totalMonths = years * 12;
var monthlyPayment = 0;
if (monthlyRate === 0) {
monthlyPayment = amount / totalMonths;
} else {
var x = Math.pow(1 + monthlyRate, totalMonths);
monthlyPayment = (amount * x * monthlyRate) / (x – 1);
}
var totalPayback = monthlyPayment * totalMonths;
var totalInterest = totalPayback – amount;
var feeAmount = (feePercent / 100) * amount;
var netReceived = amount – feeAmount;
document.getElementById("monthly_payment_display").innerHTML = "$" + monthlyPayment.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("total_interest_display").innerHTML = "$" + totalInterest.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("total_payback_display").innerHTML = "$" + totalPayback.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("net_received_display").innerHTML = "$" + netReceived.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("results_area").style.display = "block";
}