What the XIRR Calculator does
This XIRR calculator gives the annualised return for money that went in and came out on irregular dates - monthly SIP instalments, occasional top-ups, partial withdrawals and a current value. Paste dates and amounts or drop a CSV, and it returns the rate that makes all the flows, discounted by their exact day counts, add up to zero, using the actual/365 convention of spreadsheet XIRR.
Because the answer comes from an iterative solver, the page also shows its working: each flow's discount factor and discounted value, a check that they sum to zero, and the solver's steps from the starting guess. Nothing you paste leaves your browser.
How to use it
- Enter one cash flow per line as date, amount. Investments are negative; withdrawals and the current value of what you still hold are positive, dated the day you valued it.
- Make the first row the earliest date. Other rows can be in any order. Dates can be YYYY-MM-DD, or day/month/year or month/day/year - choose which with the date setting.
- Read the annualised return, then check the table: every row shows how many days it sits from the first date and what it is worth discounted at the XIRR.
- If the result is surprising, open the solver working, and if flows switch between money in and money out several times, try a different starting guess.
Reading the results
XIRR is a money-weighted return. It reflects both how the investment performed and when you added or removed money, so two people in the same fund can have different XIRRs.
It is an annual rate even when the period is shorter than a year. A 2% gain in one month annualises to roughly 27%, which is arithmetically right but says little about what the next eleven months will bring - be careful with very short periods.
A current value is not cash in hand. If you include today's value as the final positive flow, the XIRR is the return so far, as if you sold today at that value.
Worked example: the spreadsheet documentation example
An investor puts in 10,000 on 1 January 2008 and receives 2,750 on 1 March 2008, 4,250 on 30 October 2008, 3,250 on 15 February 2009 and 2,750 on 1 April 2009. The XIRR is 37.34%, matching the value published for spreadsheet XIRR.
The second flow is 60 days after the first (2008 was a leap year), so it is discounted by 1.373363^(60/365), a factor of 0.9492, to 2,610.3. Doing the same for every row and adding the results, including the -10,000, gives zero - which is what makes 37.34% the XIRR.
A simpler check: -1,000 on 1 January 2021 and +1,100 on 1 January 2022 (365 days) gives exactly 10%. If the 1,100 arrived two years later instead, the XIRR would be 1.1^(1/2) - 1 = 4.88%.
Formulas and scoring rules
- XNPV
XNPV(r) = sum of amount_i / (1 + r)^((date_i - date_1) / 365)Actual days divided by 365, even in leap years - the spreadsheet convention.- XIRR
XIRR is the r that makes XNPV(r) = 0- Newton step
r_next = r - XNPV(r) / XNPV'(r), where XNPV'(r) = - sum of t_i x amount_i / (1 + r)^(t_i + 1)If Newton leaves the valid range, the engine brackets a sign change and bisects instead.- Display
Rate shown to 2 decimals of a percent; the copied result keeps 4
XIRR, CAGR and IRR: which one when
Use CAGR for a single amount invested at the start and valued at the end with nothing added or taken out. Use IRR for flows at evenly spaced periods, such as yearly project cash flows. Use XIRR whenever the dates are irregular or the amounts vary - which describes most real personal investing, including SIPs where the instalment day moves with weekends and holidays.
For a monthly SIP, CAGR on the final balance overstates the return because much of the money was invested for only a short time. XIRR discounts each instalment for the time it was actually invested.
Limitations: what the result does not prove
- It needs at least one negative and one positive amount, and the first row must be the earliest date, as in spreadsheet XIRR.
- When flows change sign more than once, more than one rate can fit. The page warns you, and the result depends on the starting guess.
- It does not include taxes, exit loads or fees unless they are already in your amounts.
- A return over a few weeks, annualised, can look extreme. It is correct arithmetic, not a forecast.
Privacy: where your data goes
Everything you paste, type or drop is processed in this browser tab. It is not uploaded, logged, stored or sent to analytics. Session recording and tag-manager scripts are switched off on this page.
Standards and sources
- Microsoft Support - XIRR function - checked 19 Sep 2026
- Microsoft Support - XNPV function
Frequently asked questions
How do I calculate XIRR for a SIP?
List every instalment as a negative amount on the date it was debited, then add the current value of your units as a positive amount dated the valuation day. Paste the list here or export it from your statement as CSV. The monthly example on this page shows the format.
Why does XIRR use 365 days even in leap years?
That is how the spreadsheet XIRR function is defined: the time for each flow is actual days since the first date divided by 365. Using the same convention means your answer can be checked in a spreadsheet and matches most fund statements.
What is the difference between XIRR and absolute return?
Absolute return is total gain divided by total invested, with no regard to time. XIRR annualises the gain and accounts for how long each amount was invested, so it can be compared with a deposit rate or an inflation rate.
Why do I get a different XIRR from my fund platform?
Usually the valuation date or amount differs, a dividend payout or charge is missing, or the platform uses transaction dates while you used order dates. Line up the dates and amounts with the platform's transaction list and the results should agree closely.
Can XIRR be negative?
Yes. If what you got back plus the current value is less than what you put in, XIRR is negative. It cannot be below -100%.
What does the starting guess do?
The solver begins its search at the guess. For ordinary investing flows there is only one answer and the guess does not matter. When money goes in and out several times, there may be more than one valid rate, and the guess decides which is found - exactly as in a spreadsheet.
Last reviewed by the A2Z.Tools team against the sources listed above.