Calculate the earned and unearned (refund) portions of an insurance policy premium based on specific dates.
Calculation Summary
Total Days in Term:
Days Elapsed:
Days Remaining:
Daily Premium Rate:
Earned Premium:
Unearned (Refund):
Understanding Pro Rata Insurance Calculations
Pro rata is a Latin term meaning "in proportion." In the insurance industry, a pro rata calculation determines the exact amount of premium "earned" by the insurer for the period of coverage provided, and the "unearned" portion that should be returned to the policyholder upon cancellation or adjusted during a policy change.
The Pro Rata Formula
The calculation is based on the ratio of days elapsed to the total number of days in the policy term:
Total Days: The difference between the Start Date and Expiration Date.
Daily Rate: Total Premium / Total Days.
Earned Premium: Daily Rate × Days of Coverage Used.
Unearned Premium: Total Premium – Earned Premium.
Pro Rata vs. Short Rate
While Pro Rata is a fair, mathematical split, some insurers use Short Rate cancellation. Short rate involves a penalty (typically 10% of the unearned premium) to cover administrative costs of early cancellation. This calculator focuses strictly on the standard Pro Rata method used for most endorsements and carrier-initiated cancellations.
Practical Example
Imagine a standard auto policy with an annual premium of $1,200 starting on January 1st and ending on December 31st (365 days). If you cancel the policy on April 10th:
Days Elapsed: 100 days.
Daily Rate: $1,200 / 365 = $3.287 per day.
Earned Premium: $3.287 × 100 = $328.77.
Refund Amount: $1,200 – $328.77 = $871.23.
Note: Most insurance companies calculate pro rata based on the exact time of day (often 12:01 AM). This calculator uses calendar day differences. Leap years (366 days) are automatically accounted for if your dates span February 29th.
function calculateProRata() {
var totalPremium = parseFloat(document.getElementById('totalPremium').value);
var startDateInput = document.getElementById('startDate').value;
var endDateInput = document.getElementById('endDate').value;
var cancelDateInput = document.getElementById('cancelDate').value;
var errorArea = document.getElementById('errorArea');
var resultArea = document.getElementById('resultArea');
errorArea.style.display = 'none';
resultArea.style.display = 'none';
if (!totalPremium || !startDateInput || !endDateInput || !cancelDateInput) {
errorArea.innerText = "Please fill in all fields correctly.";
errorArea.style.display = 'block';
return;
}
var start = new Date(startDateInput);
var end = new Date(endDateInput);
var cancel = new Date(cancelDateInput);
if (end <= start) {
errorArea.innerText = "Expiration date must be after the start date.";
errorArea.style.display = 'block';
return;
}
if (cancel end) {
errorArea.innerText = "The effective date of change must fall within the policy period.";
errorArea.style.display = 'block';
return;
}
// Calculate time differences in milliseconds
var msPerDay = 24 * 60 * 60 * 1000;
var totalDays = Math.round(Math.abs((end – start) / msPerDay));
var daysUsed = Math.round(Math.abs((cancel – start) / msPerDay));
var daysLeft = totalDays – daysUsed;
var dailyRate = totalPremium / totalDays;
var earnedPremium = dailyRate * daysUsed;
var unearnedPremium = totalPremium – earnedPremium;
// Output formatting
document.getElementById('resTotalDays').innerText = totalDays;
document.getElementById('resDaysUsed').innerText = daysUsed;
document.getElementById('resDaysLeft').innerText = daysLeft;
document.getElementById('resDailyRate').innerText = "$" + dailyRate.toFixed(4);
document.getElementById('resEarned').innerText = "$" + earnedPremium.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('resUnearned').innerText = "$" + unearnedPremium.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
resultArea.style.display = 'block';
}