Formula Guide

The Excel EOMONTH Function
explained simply

EOMONTH returns the last day of a month — essential for financial cut-off dates, invoice due dates, and accrual periods.

ExcelPro · 6 min read · Updated June 2026

What does it do?

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.

Syntax

=EOMONTH(start_date, months)
ArgumentDescription
=EOMONTH(start_date, months)
start_date requiredAny date in the month you want to work from.
months requiredNumber of months to move forward or backward. 0 = end of current month.

Real examples

Example 1
Last day of the current month
=EOMONTH(TODAY(), 0)

Always returns the last day of the current month.

Example 2
Last day of next month
=EOMONTH(TODAY(), 1)

Useful for next-month deadline calculations.

Example 3
Last day of the previous month
=EOMONTH(TODAY(), -1)

Previous month cut-off date.

Example 4
Payment due at end of month
=EOMONTH(A2, 0)

Invoice date in A2 — payment due end of same month.

Example 5
First day of next month
=EOMONTH(TODAY(), 0)+1

Add 1 to end-of-month to get the first of the next month.

FAQ

Does EOMONTH account for leap years?
Yes — EOMONTH automatically handles February correctly. EOMONTH(DATE(2028,1,31),1) returns 29 Feb 2028 correctly.
Why does EOMONTH return a number instead of a date?
Format the cell as a date (Ctrl+1) or wrap with TEXT: =TEXT(EOMONTH(TODAY(),0),"dd/mm/yyyy").
How do I get the last working day of the month?
Use WORKDAY with EOMONTH: =WORKDAY(EOMONTH(TODAY(),0)+1,-1) returns the last working day of the current month.

EOMONTH in financial modelling and month-end reporting

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.

💡 First day of next month

=EOMONTH(TODAY(),0)+1 returns the first day of next month — cleaner than trying to calculate it with DATE, YEAR and MONTH separately.

Practise this formula live

ExcelPro has exercises covering this formula across multiple tracks. Free to start.

Try exercises →

Related formulas

EDATE WORKDAY DATEDIF NETWORKDAYS TEXT TODAY