Calculate Extended IRR (XIRR)
curl --request POST \
--url https://api.fincept.in/quantlib/solver/finance/xirr \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"cashflows": [
-100000,
20000,
30000,
25000,
60000
],
"dates": [
0,
0.25,
0.75,
1.5,
2
],
"guess": 0.1
}
'import requests
url = "https://api.fincept.in/quantlib/solver/finance/xirr"
payload = {
"cashflows": [-100000, 20000, 30000, 25000, 60000],
"dates": [0, 0.25, 0.75, 1.5, 2],
"guess": 0.1
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
cashflows: [-100000, 20000, 30000, 25000, 60000],
dates: [0, 0.25, 0.75, 1.5, 2],
guess: 0.1
})
};
fetch('https://api.fincept.in/quantlib/solver/finance/xirr', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fincept.in/quantlib/solver/finance/xirr",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'cashflows' => [
-100000,
20000,
30000,
25000,
60000
],
'dates' => [
0,
0.25,
0.75,
1.5,
2
],
'guess' => 0.1
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fincept.in/quantlib/solver/finance/xirr"
payload := strings.NewReader("{\n \"cashflows\": [\n -100000,\n 20000,\n 30000,\n 25000,\n 60000\n ],\n \"dates\": [\n 0,\n 0.25,\n 0.75,\n 1.5,\n 2\n ],\n \"guess\": 0.1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fincept.in/quantlib/solver/finance/xirr")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"cashflows\": [\n -100000,\n 20000,\n 30000,\n 25000,\n 60000\n ],\n \"dates\": [\n 0,\n 0.25,\n 0.75,\n 1.5,\n 2\n ],\n \"guess\": 0.1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/solver/finance/xirr")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"cashflows\": [\n -100000,\n 20000,\n 30000,\n 25000,\n 60000\n ],\n \"dates\": [\n 0,\n 0.25,\n 0.75,\n 1.5,\n 2\n ],\n \"guess\": 0.1\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"xirr": 0.1523
}
}{
"detail": "Invalid API key"
}{
"detail": "Endpoint requires Basic tier or higher"
}{
"detail": [
{}
]
}quantlib-solver
Calculate Extended IRR (XIRR)
Calculate the Extended Internal Rate of Return for cash flows occurring at irregular intervals. Unlike standard IRR which assumes periodic cash flows, XIRR handles any date spacing. The dates array represents year fractions from the first cash flow date. Essential for evaluating real-world investments with irregular payment schedules such as private equity, venture capital, or any investment with non-standard cash flow timing. [Tier: STANDARD, Credits: 2]
POST
/
quantlib
/
solver
/
finance
/
xirr
Calculate Extended IRR (XIRR)
curl --request POST \
--url https://api.fincept.in/quantlib/solver/finance/xirr \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"cashflows": [
-100000,
20000,
30000,
25000,
60000
],
"dates": [
0,
0.25,
0.75,
1.5,
2
],
"guess": 0.1
}
'import requests
url = "https://api.fincept.in/quantlib/solver/finance/xirr"
payload = {
"cashflows": [-100000, 20000, 30000, 25000, 60000],
"dates": [0, 0.25, 0.75, 1.5, 2],
"guess": 0.1
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
cashflows: [-100000, 20000, 30000, 25000, 60000],
dates: [0, 0.25, 0.75, 1.5, 2],
guess: 0.1
})
};
fetch('https://api.fincept.in/quantlib/solver/finance/xirr', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fincept.in/quantlib/solver/finance/xirr",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'cashflows' => [
-100000,
20000,
30000,
25000,
60000
],
'dates' => [
0,
0.25,
0.75,
1.5,
2
],
'guess' => 0.1
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fincept.in/quantlib/solver/finance/xirr"
payload := strings.NewReader("{\n \"cashflows\": [\n -100000,\n 20000,\n 30000,\n 25000,\n 60000\n ],\n \"dates\": [\n 0,\n 0.25,\n 0.75,\n 1.5,\n 2\n ],\n \"guess\": 0.1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fincept.in/quantlib/solver/finance/xirr")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"cashflows\": [\n -100000,\n 20000,\n 30000,\n 25000,\n 60000\n ],\n \"dates\": [\n 0,\n 0.25,\n 0.75,\n 1.5,\n 2\n ],\n \"guess\": 0.1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fincept.in/quantlib/solver/finance/xirr")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"cashflows\": [\n -100000,\n 20000,\n 30000,\n 25000,\n 60000\n ],\n \"dates\": [\n 0,\n 0.25,\n 0.75,\n 1.5,\n 2\n ],\n \"guess\": 0.1\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"xirr": 0.1523
}
}{
"detail": "Invalid API key"
}{
"detail": "Endpoint requires Basic tier or higher"
}{
"detail": [
{}
]
}Authorizations
API key for authentication. Get your key at https://api.fincept.in/auth/register
Body
application/json
Array of cash flows (negative for outflows, positive for inflows)
Example:
[-100000, 20000, 30000, 25000, 60000]
Array of dates as year fractions from the first date
Example:
[0, 0.25, 0.75, 1.5, 2]
Initial guess for the XIRR solver
Example:
0.1
⌘I
