January
February
March
April
May
June
July
August
September
October
November
December
Enter '1' if employed from start of month
Enter last day of month if still employed
Days in Selected Month:–
Calendar Days Employed:–
Standard Monthly Gross:–
Calculated Daily Rate:–
Pro Rata Gross Pay:–
*Calculation Method: (Annual Salary ÷ 12) ÷ Days in Month × Days Employed. This is the standard "Calendar Days" method used for reconciliation.
Understanding Payroll Pro Rata Calculations: The Calendar Days Method
When an employee starts or leaves a job partway through a pay period, payroll professionals must calculate a "pro rata" salary. While there are several methods to do this (such as working days), the Calendar Days Method is widely used by firms and payroll software (comparable to logic used by providers like Azets) for its precision in reconciling partial months.
How the Calendar Days Calculation Works
Unlike the "260 working days" method which assumes a standardized work year, the Calendar Days method looks at the specific month in question. This ensures that an employee is paid exactly for the proportion of the month they were employed, regardless of weekends or bank holidays.
The typical formula follows these steps:
Step 1: Determine the Standard Monthly Salary (Annual Salary ÷ 12).
Step 2: Determine the exact number of calendar days in the specific month (28, 29, 30, or 31).
Step 3: Calculate the Daily Rate for that specific month (Monthly Salary ÷ Days in Month).
Step 4: Multiply the Daily Rate by the number of calendar days the employee was employed during that period.
Why "Calendar Days" vs "Working Days"?
Confusion often arises when employees try to reverse-engineer their payslips.
Consistency: The calendar method accounts for the fact that salaries cover weekends and rest days, not just days sat at a desk.
Leap Years: In a leap year, February has 29 days. A calendar day calculation will automatically adjust the daily rate for February to be slightly lower than in a 28-day February, but the total pay for a full month remains the standard 1/12th.
Fairness: It prevents anomalies where a starter might be paid for more working days than exist in the remaining pay period if weekends aren't accounted for.
Example Scenario
Imagine an employee with an annual salary of £30,000 starting on September 16th.
Monthly Salary: £30,000 ÷ 12 = £2,500.
Days in September: 30 days.
Daily Rate: £2,500 ÷ 30 = £83.333…
Days Employed: September 16th to 30th inclusive = 15 days.
Pro Rata Pay: £83.33 × 15 = £1,250.00.
Note: If the "Working Days" method were used (approx 21.67 working days per month), the calculation would look very different. Always check your employment contract to confirm which pro rata method applies to you.
function calculateProRata() {
// 1. Get Inputs
var salaryInput = document.getElementById('annualSalary').value;
var yearInput = document.getElementById('calcYear').value;
var monthInput = document.getElementById('calcMonth').value;
var startDayInput = document.getElementById('startDay').value;
var endDayInput = document.getElementById('endDay').value;
var errorBox = document.getElementById('errorMsg');
var resultBox = document.getElementById('resultBox');
// Reset display
errorBox.style.display = 'none';
resultBox.style.display = 'none';
errorBox.innerText = "";
// 2. Validate Numbers
var annualSalary = parseFloat(salaryInput);
var year = parseInt(yearInput);
var monthIndex = parseInt(monthInput); // 0-11
var startDay = parseInt(startDayInput);
var endDay = parseInt(endDayInput);
if (isNaN(annualSalary) || annualSalary < 0) {
errorBox.innerText = "Please enter a valid positive Annual Salary.";
errorBox.style.display = 'block';
return;
}
if (isNaN(year) || isNaN(startDay) || isNaN(endDay)) {
errorBox.innerText = "Please ensure Year, Start Day, and End Day are valid numbers.";
errorBox.style.display = 'block';
return;
}
// 3. Logic: Determine days in the specific month
// In JS, new Date(year, month + 1, 0).getDate() gives days in month.
// monthIndex is 0-11. monthIndex + 1 is next month. Day 0 of next month is last day of current.
var daysInMonth = new Date(year, monthIndex + 1, 0).getDate();
// 4. Validate Dates against Month Limits
if (startDay daysInMonth) {
errorBox.innerText = "Start Day is invalid for the selected month (Must be 1-" + daysInMonth + ").";
errorBox.style.display = 'block';
return;
}
if (endDay daysInMonth) {
errorBox.innerText = "End Day is invalid for the selected month (Must be 1-" + daysInMonth + ").";
errorBox.style.display = 'block';
return;
}
if (startDay > endDay) {
errorBox.innerText = "Start Date cannot be after End Date.";
errorBox.style.display = 'block';
return;
}
// 5. Calculate Metrics
var monthlySalary = annualSalary / 12;
var daysWorked = endDay – startDay + 1;
// The Calendar Days Formula: (Monthly / DaysInMonth) * DaysWorked
var dailyRate = monthlySalary / daysInMonth;
var proRataPay = dailyRate * daysWorked;
// 6. Update UI
document.getElementById('daysInMonthDisplay').innerText = daysInMonth;
document.getElementById('daysWorkedDisplay').innerText = daysWorked;
// Formatting currency
var formatter = new Intl.NumberFormat('en-GB', {
style: 'currency',
currency: 'GBP',
});
document.getElementById('standardMonthlyDisplay').innerText = formatter.format(monthlySalary);
document.getElementById('dailyRateDisplay').innerText = formatter.format(dailyRate);
document.getElementById('finalPayDisplay').innerText = formatter.format(proRataPay);
// Show results
resultBox.style.display = 'block';
}