This calculator helps business travelers and employers estimate federal per diem reimbursements for the 2025 fiscal year (starting October 1, 2024). Per diem is the daily allowance for lodging, meals, and incidental expenses (M&IE).
Standard FY2025 Rates
For most areas within the Continental United States (CONUS), the GSA has set the following standard rates for 2025:
Standard Lodging: $110 per night (excluding taxes).
Standard M&IE: $68 per day.
The 75% Rule
IRS and GSA regulations specify that on the first and last day of travel, the traveler is only eligible for 75% of the daily M&IE rate. Our calculator accounts for this by allowing you to separate "Full Days" from "Partial Days." Typically, an overnight trip has two partial days (the day you leave and the day you return).
Example Calculation
If you travel to a standard CONUS location for 3 nights and 4 total days:
Lodging: 3 nights × $110 = $330
M&IE (Full): 2 days × $68 = $136
M&IE (Partial): 2 days × ($68 × 0.75) = $102
Total Reimbursement: $568
Important Considerations
1. Taxes: In the United States, lodging taxes are not included in the per diem rate and should be reimbursed separately as a miscellaneous expense.
2. Non-Standard Areas (NSAs): Many cities (like New York, Chicago, or San Francisco) have significantly higher rates than the standard. Always verify the specific rate for your destination ZIP code on the GSA website.
3. High-Low Method: Some employers use a simplified "High-Low" substantiation method which uses a fixed rate for specific high-cost localities and a lower rate for everywhere else.
function calculatePerDiem() {
// Get input values
var lodgingRate = parseFloat(document.getElementById('lodgingRate').value);
var nights = parseInt(document.getElementById('nights').value);
var mieRate = parseFloat(document.getElementById('mieRate').value);
var fullDays = parseInt(document.getElementById('fullDays').value);
var partialDays = parseInt(document.getElementById('partialDays').value);
// Validation
if (isNaN(lodgingRate)) lodgingRate = 0;
if (isNaN(nights)) nights = 0;
if (isNaN(mieRate)) mieRate = 0;
if (isNaN(fullDays)) fullDays = 0;
if (isNaN(partialDays)) partialDays = 0;
// Calculations
var totalLodging = lodgingRate * nights;
var mieFullTotal = fullDays * mieRate;
var miePartialTotal = partialDays * (mieRate * 0.75);
var totalMIE = mieFullTotal + miePartialTotal;
var grandTotal = totalLodging + totalMIE;
// Display results
document.getElementById('totalLodging').innerText = '$' + totalLodging.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('totalMIE').innerText = '$' + totalMIE.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('grandTotal').innerText = '$' + grandTotal.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('results').style.display = 'block';
}