
Calculate net present value for cash flows that occur on irregular dates. XNPV is the date-accurate valuation function for real cash-flow calendars.
The Excel XNPV function returns net present value using exact calendar dates for each cash flow. Microsoft documents XNPV as the appropriate choice when the cash flows are not evenly spaced, which makes it the date-accurate counterpart to periodic NPV.
XNPV is therefore the correct function for milestone payments, staged investments, irregular receipts, and other real schedules that do not follow equal month-end or year-end spacing. It discounts each cash flow by the exact day distance from the first date in the series.
The result is a value amount, not a return rate. If the worksheet also needs a dated return percentage, XIRR is the companion function.
Returns the present value of dated cash flows when the timing is irregular by calendar date.
Returns one valuation figure in currency terms based on the annual discount rate and the actual dates supplied.
=XNPV(rate, values, dates)
rate is the annual discount rate, values is the cash-flow range or array, and dates is the aligned set of actual dates for those cash flows. Microsoft notes that the rate must be greater than -1, and the values and dates arrays must be the same length.
XNPV uses the first date in the series as the base date and discounts all later values relative to that starting point using a 365-day year. That day-based treatment is what makes the result different from periodic NPV.
To keep the result reliable, make sure the values and dates are aligned row by row, the dates are real Excel dates, and no later date appears before the first one in the series.
XNPV and NPV answer similar valuation questions, but they assume different timing structures.
| Function | Main Role | Use When |
|---|---|---|
XNPV |
Present value using actual dates | You need date-accurate valuation for irregular cash flows |
NPV |
Present value using equal periods | The cash flows occur at regular intervals |
XIRR |
Return rate using actual dates | You need a dated return metric instead of a value amount |
IRR |
Return rate using equal periods | The cash flows are periodic rather than irregular by date |
Use XNPV with XIRR for date-driven models. Use NPV with IRR when the cash-flow spacing is periodic and equal by design.
XNPV is especially useful when a project does not follow clean monthly or yearly timing. Instead of forcing the worksheet into artificial equal periods, the function discounts each flow based on the actual number of days from the first cash-flow date.
That makes XNPV more realistic for staged funding, milestone billing, investment draws, and irregular repayments. In those cases, using periodic NPV can distort the valuation because it assumes timing symmetry that the cash-flow schedule does not have.
This example uses one initial outflow and three later inflows with uneven spacing. Because the dates are irregular, XNPV gives a more accurate valuation than NPV would under an equal-period assumption.
This is a good beginner example for XNPV because it shows exactly when the function is needed. Once the cash flows stop arriving on a neat regular schedule, ordinary NPV is no longer the best fit.
=XNPV(0.1,B1:B4,A1:A4)
In cell F1, calculate XNPV for B1:B4 with dates A1:A4 at 10 percent. Formula: =XNPV(0.1, B1:B4, A1:A4).
Changing only the discount rate while keeping the same dated cash flows is a clean way to measure sensitivity. Lower required return raises present value, while higher required return lowers it.
So the example is not only about getting another XNPV result. It also teaches that valuation still depends heavily on the chosen discount rate, even when the calendar of cash flows stays fixed.
=XNPV(0.08,B1:B4,A1:A4)
In cell F2, calculate XNPV at 8 percent for the same dated cash flows to compare value change. Formula: =XNPV(0.08, B1:B4, A1:A4).
A two-date case makes the day-count effect easier to isolate. The difference between January 1 and June 1 is part of the valuation itself, so the function reflects timing with more precision than a rough half-year assumption.
This makes the example especially helpful for understanding why XNPV exists. It shows that actual dates, not just rough period counts, can change present value when timing is irregular.
=XNPV(0.1,{-1000,1500},{"2026-01-01","2026-06-01"})
In cell F3, calculate XNPV for an initial -1000 on 2026-01-01 and one inflow 1500 on 2026-06-01. Formula: =XNPV(0.1, {-1000,1500}, {"2026-01-01","2026-06-01"}).
Referencing the rate from a cell makes XNPV easier to use in scenario analysis. The cash-flow calendar remains fixed while the required return can be tested under base, optimistic, or conservative assumptions.
This is practical for modeling because it separates assumptions from structure. The dated cash flows stay the same, and the analyst can explore different required returns just by changing one input cell.
=XNPV(G1,B1:B4,A1:A4)
In cell F4, reference rate in G1 so scenario changes update XNPV automatically. Formula: =XNPV(G1, B1:B4, A1:A4).
XNPV is the better choice when cash flows happen on real dates instead of neat equal periods. This lesson showed that the formula is not just about the amounts, but also about when each amount happens, so the dates and values must stay lined up correctly.
The examples also made the main use case clear. You can value an irregular schedule, test how a different discount rate changes the result, and link the rate to an input cell so the model is easier to update without rebuilding the cash-flow list.
XNPV discounts cash flows using their actual calendar dates.=XNPV(rate,values,dates).Tell your friends about this post