XIRR Function (Gnumeric)
Learn the XIRR function in Gnumeric: Returns the internal rate of return for a non-periodic schedule of payments.
Verification status: See the evidence and test scope described in this guide. How formula examples are checked
What it does. XIRR solves for an annualized rate that makes a series of actual-date cash flows’ net present value approximately zero. It requires a value for each date. Unlike periodic IRR, uneven month/day spacing matters. The GNOME Finance manual documents XIRR(values,dates,guess) with an optional 10% default guess and warns that multiple roots can exist (manual; financial function implementation).
Availability and version history
- Introduced: Documented by 1.12.62; original introduction not established.
- Availability: Supported in Gnumeric 1.12.62, based on the function-specific registration.
- Scope: Desktop; the fn-financial function module must be included and enabled.
- Checked: October 14, 2026. Documentation/source check; no new native test in Gnumeric 1.12.62.
Exact syntax, order, types and defaults
=XIRR(values,dates,guess)
| Parameter | Type | Required/default |
|---|---|---|
values |
Numeric cash flows; negative for investments/payments, positive for receipts. | Required; no default. |
dates |
Range of actual date serials paired one-for-one with values. |
Required; no default. |
guess |
Numeric estimate of annual effective rate. | Optional; defaults to 10% (0.1). This is a starting point, not a target return. |
XIRR solves the equation Σ Ct/(1+r)^((dt-d0)/365) = 0 with first date d0 as the anchor. Gnumeric’s inspected xirr_npv routine uses (dates[i]-dates[0])/365; it explicitly rejects date differences below zero during root evaluation (source). This is a 365-day annualization convention, not a documented switchable day-count-basis argument.
Reproducible worksheet: return with uneven dates
| Row | A — cash flow (currency units) | B — actual date | Offset from B2 |
|---|---|---|---|
| 2 | -1000 | =DATE(2025,1,1) |
0 days |
| 3 | 300 | =DATE(2025,3,1) |
59 days |
| 4 | 350 | =DATE(2025,7,1) |
181 days |
| 5 | 400 | =DATE(2026,1,1) |
365 days |
| 6 | 450 | =DATE(2026,10,1) |
638 days |
Enter the cash flows in A2:A6 as numbers (not currency strings). In B2:B6, enter the indicated DATE formulas as actual date values and format them as dates. A negative value is an outgoing investment, a positive value is a receipt. These example cash flows and dates are illustrative, not investment advice.
Enter the data exactly as numeric values and native date formulas. Then:
=XIRR(A2:A6,B2:B6)
Independently calculated expected result: 0.606557705050, or approximately 60.6558% annualized (not the periodic 17.09% from the same amounts). An explicit starting guess version is:
=XIRR(A2:A6,B2:B6,10%)
The independent root solves:
-1000 + 300/(1+r)^(59/365) + 350/(1+r)^(181/365) + 400/(1+r)^(365/365) + 450/(1+r)^(638/365) = 0.
This large annualized rate results from receipts starting only 59 days after the investment. It does not mean a bank account, security or business will reliably earn 60.66% per year.
Advanced applications and independent cross-checks
Check the rate with dated NPV:
=XNPV(XIRR(A2:A6,B2:B6),A2:A6,B2:B6)
Expected output is approximately zero; minute residuals can arise from floating-point evaluation and iterative tolerances. XNPV evaluates the same dates and amounts at the candidate effective annual rate. To compare the opportunity cost at a specific annual hurdle instead, compute =XNPV(10%,A2:A6,B2:B6) and expect 373.8358607868. This separates a solved return (XIRR) from chosen-rate value (XNPV).
Try an alternative guess only after interpreting the flow. A nonstandard project with repeated outflow/inflow sign changes can have multiple valid rates. Use an NPV-versus-rate check and, where appropriate, MIRR for periodic schedules with explicit financing and reinvestment rates; guess does not change the economics of your recorded cash flows. Official Finance manual, XIRR note.
Why periodic IRR differs: with amounts A2:A6, =IRR(A2:A6) ignores dates and returns approximately 17.0937% per equally spaced period; XIRR sees actual dates and returns 60.6558% per year. These outputs measure fundamentally different time assumptions and cannot be compared as if they had the same unit.
Errors, implementation notes and troubleshooting
- No satisfactory root /
#VALUE!-class failure: the inspected Gnumeric wrapper uses a two-dimensional range solver with a value-error fallback (GNM_ERROR_VALUE) and may fail to find a root. Treat any returned error as a failed calculation, not a zero yield (source). Check signs, dates, values and starting guess. - Date before the first dated cash flow:
xirr_npvexplicitly rejects a negative date difference relative to the first entry (source). Put the intended initial date first and keep later dates on/after it. This limit is confirmed for XIRR; do not extrapolate it to every other function. - Missing or misaligned pairs: unlike the
XNPVsource’s separate collectors,XIRRuses a paired 2D collector (float_range_function2d) with blank handling (source). Still avoid blanks and verify one numeric amount/real date per row: this guide does not claim blank behavior was tested in the application. - Invalid or text-formatted dates: make sure B cells contain Gnumeric date serials produced by
DATE, not lookalike strings. Inspect entry formulas and number formats separately. - Sign pattern: typically at least one outflow and one inflow are needed to find a conventional investment IRR; all-positive or all-negative flows usually cannot support a meaningful zero crossing.
- Percent formatting and annualization:
0.606557…is approximately 60.6558%; don’t multiply it by 100 inside another rate formula. TheXIRRreturn is already annualized on the 365-day convention. - Different Excel/other-product output: ensure the same date serials and pairing and compare version-specific behavior. The Gnumeric source establishes Gnumeric’s inspected routine only; other spreadsheet implementations are not evidence here.
Related Gnumeric guides
Gnumeric scope and compatibility
This tutorial is for Gnumeric 1.12, checked against the official Finance manual and public function catalogue on 13 October 2026, with 1.12.62 the documented stable release announced in September 2026. The catalogue marks this named function Complete / Basic (registered implementation and a basic upstream test classification). Those are not proofs that this particular worksheet has been executed, nor a blanket guarantee of Excel, LibreOffice or another spreadsheet’s parsing, coercion or file-import behavior. The Finance manual identifies purpose and argument order. Implementation claims were independently checked against plugins/fn-financial/functions.c in the checksum-verified official Gnumeric 1.12.62 source archive on 13 October 2026. Source inspection is not native application execution.
Examples use commas as argument separators, a period for decimals, and percent input as shown in the English Gnumeric documentation. Gnumeric’s entry/display conventions may vary by locale; if your configured formula editor expects different separators, adapt the punctuation without reordering arguments. Verify any workbook imported from another program in Gnumeric before relying on financial decisions.
Verification boundary: All numerical results below were independently calculated outside Gnumeric; no native Gnumeric execution or screenshots were performed.
References
All pages and source claims below were checked on 2026-10-13.
- Gnumeric 1.12 Finance function reference — specific section for XIRR, defining syntax, order, parameters and purpose.
- Gnumeric official function catalogue — XIRR: Complete / Basic, an upstream registration/testing classification rather than live worksheet validation.
- GNOME Gnumeric source, financial functions — implementation details from
plugins/fn-financial/functions.cin the checksum-verified official 1.12.62 source archive. - Gnumeric 1.12.62 official release notice — current 1.12-series release context as of 2026-10-13.