EOMONTH returns the last day of a month — essential for financial cut-off dates, invoice due dates, and accrual periods.
EOMONTH returns a date representing the last day of the month, a given number of months before or after a starting date. It is essential for financial modelling, month-end cut-off dates, payment schedules, and subscription billing.
=EOMONTH(start_date, months)| Argument | Description |
|---|---|
| =EOMONTH(start_date, months) | |
| start_date required | Any date in the month you want to work from. |
| months required | Number of months to move forward or backward. 0 = end of current month. |
=EOMONTH(TODAY(), 0)Always returns the last day of the current month.
=EOMONTH(TODAY(), 1)Useful for next-month deadline calculations.
=EOMONTH(TODAY(), -1)Previous month cut-off date.
=EOMONTH(A2, 0)Invoice date in A2 — payment due end of same month.
=EOMONTH(TODAY(), 0)+1Add 1 to end-of-month to get the first of the next month.
EOMONTH is essential in financial modelling because accounting cut-off dates almost always fall on the last day of a month. Accruals are posted at month end, reporting periods close at month end, and payment terms like "end of month following invoice" require knowing when a specific month ends.
A common pattern: =EOMONTH(invoice_date, 0) gives the end of the invoice month. =EOMONTH(invoice_date, 1) gives the end of the next month — which is what "end of month following invoice" means. This is far cleaner than trying to calculate it with IF and DAY formulas.
EOMONTH also handles leap years automatically. EOMONTH(DATE(2028,1,1),1) correctly returns 29 February 2028. EOMONTH(DATE(2026,1,1),1) returns 28 February 2026. You never need to hardcode February's day count.
=EOMONTH(TODAY(),0)+1 returns the first day of next month — cleaner than trying to calculate it with DATE, YEAR and MONTH separately.
ExcelPro has exercises covering this formula across multiple tracks. Free to start.
Try exercises →