XIRR vs IRR in Excel
IRR and XIRR both find the discount rate that makes the net present value of a series of cash flows equal zero. IRR assumes equally spaced periods, while XIRR uses the actual date of each cash flow. For real investments with irregular timing, capital calls, and distributions, XIRR gives the accurate annualized return and is the standard in finance.
The difference between IRR and XIRR
=IRR(values, [guess]) assumes each cash flow occurs at the end of an equal period and returns the per period rate. If your periods are months, the result is a monthly rate that you must annualize yourself.
=XIRR(values, dates, [guess]) pairs each cash flow with a real date and returns an annualized rate directly, accounting for the exact number of days between flows. Because it uses dates, it handles uneven timing, partial periods, and capital that goes in and out on arbitrary days, which is the norm in fund and deal returns.
Requirements both functions share
Both functions need at least one negative and one positive cash flow, otherwise they return a #NUM! error, because there must be both an outflow and an inflow for a return to exist.
Both solve iteratively and accept an optional guess. If the function cannot converge it returns #NUM!, and supplying a guess close to the expected rate (for example 0.1 for 10 percent) helps it find the answer. For XIRR, the first date in the list is treated as the start, and the other dates may be in any order as long as each aligns with its cash flow.
Worked example: irregular distributions
Suppose you invest -10000 on 1 Jan 2025, receive 3000 on 15 Apr 2025, and receive 9000 on 30 Nov 2025. The intervals are clearly unequal.
- Put the cash flows in C2:C4 (-10000, 3000, 9000) and the dates in D2:D4 (the three dates above).
- Enter
=XIRR(C2:C4, D2:D4). XIRR returns the annualized return using the actual days between each flow. - Trying
=IRR(C2:C4)here would be wrong, because IRR assumes the three flows are one equal period apart, which they are not. - Add an optional guess,
=XIRR(C2:C4, D2:D4, 0.1), if the function returns #NUM! and fails to converge.
| Date | Cash flow | Spacing |
|---|---|---|
| 1 Jan 2025 | -10000 | start |
| 15 Apr 2025 | 3000 | 104 days later |
| 30 Nov 2025 | 9000 | 229 days after that |
Unequal day gaps make XIRR correct and plain IRR misleading here.
Which to use
Use XIRR for almost all real return work: private equity and venture cash flows, irregular dividends, loan schedules, and any analysis where cash moves on actual calendar dates. It is the convention because it returns a directly comparable annualized figure.
Reserve IRR for clean, equally spaced series such as a tidy annual or monthly model with no date gaps, and remember to annualize a per period IRR yourself. When in doubt, attach dates and use XIRR, since it reduces to the same answer as IRR when the periods happen to be equal.
Find Hardcodes
Find Hardcodes flags cash flow figures pasted directly into an IRR or XIRR range so each value traces back to the schedule that drives it.
Get ModelMint See how it worksFAQ
What is the main difference between IRR and XIRR?
IRR assumes cash flows are equally spaced and returns a per period rate. XIRR pairs each cash flow with an actual date and returns an annualized rate based on the real number of days between flows, so it handles irregular timing correctly.
Why does XIRR return a #NUM error?
Common causes are no sign change (you need at least one negative and one positive cash flow) and a failure to converge. Supply the optional guess argument, such as 0.1, to help the iteration, and confirm the cash flow signs are correct.
Does XIRR annualize the return automatically?
Yes. XIRR returns an annualized rate by construction because it works from actual dates. IRR returns a per period rate, so if your periods are months you must convert it to an annual figure yourself.