Transactions
Kpis kpis
Returns the headline payment KPIs for the current company over a reporting period: transaction count, approval rate (%), average gateway latency (ms) and error rate (%). Each value comes with the preceding period’s value and the growth between them. No time series is returned, so interval does not apply. Always scoped to the caller’s company. Optional filters[integration_class][], filters[adapter_class][], filters[status][], filters[currency_code][] and filters[payment_action][] narrow the payments counted, and filters[type] (test or live) separates test from live traffic. A custom period without a valid start_date / end_date pair returns 400. Requires a company admin Bearer token with the reports.view permission.
GET
/
api
/
v202506
/
payments
/
company_reports
/
kpis
Kpis kpis
curl --request GET \
--url https://api.fluid.app/api/v202506/payments/company_reports/kpis \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/v202506/payments/company_reports/kpis"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/v202506/payments/company_reports/kpis', 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.fluid.app/api/v202506/payments/company_reports/kpis",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.fluid.app/api/v202506/payments/company_reports/kpis"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.fluid.app/api/v202506/payments/company_reports/kpis")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v202506/payments/company_reports/kpis")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"kpis": {
"transaction_count": {
"current": 357,
"previous": 331,
"growth": {
"value": 26,
"percent": 7.85
}
},
"approval_rate": {
"current": 93.44,
"previous": 92.1,
"growth": {
"value": 1.34,
"percent": 1.45
}
},
"average_latency_ms": {
"current": 631.31,
"previous": 668.42,
"growth": {
"value": -37.11,
"percent": -5.55
}
},
"error_rate": {
"current": 6.44,
"previous": 7.02,
"growth": {
"value": -0.58,
"percent": -8.26
}
}
},
"period": {
"from": "2026-09-23T00:00:00Z",
"to": "2026-09-30T23:59:59Z",
"interval": "daily"
},
"meta": {
"request_id": "c0a8012e-7f3b-4d6a-9e21-5b8d4f2a6c17",
"timestamp": "2026-09-30T14:15:22Z"
}
}{
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}Authorizations
Query Parameters
⌘I
Kpis kpis
curl --request GET \
--url https://api.fluid.app/api/v202506/payments/company_reports/kpis \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/v202506/payments/company_reports/kpis"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/v202506/payments/company_reports/kpis', 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.fluid.app/api/v202506/payments/company_reports/kpis",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.fluid.app/api/v202506/payments/company_reports/kpis"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.fluid.app/api/v202506/payments/company_reports/kpis")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v202506/payments/company_reports/kpis")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"kpis": {
"transaction_count": {
"current": 357,
"previous": 331,
"growth": {
"value": 26,
"percent": 7.85
}
},
"approval_rate": {
"current": 93.44,
"previous": 92.1,
"growth": {
"value": 1.34,
"percent": 1.45
}
},
"average_latency_ms": {
"current": 631.31,
"previous": 668.42,
"growth": {
"value": -37.11,
"percent": -5.55
}
},
"error_rate": {
"current": 6.44,
"previous": 7.02,
"growth": {
"value": -0.58,
"percent": -8.26
}
}
},
"period": {
"from": "2026-09-23T00:00:00Z",
"to": "2026-09-30T23:59:59Z",
"interval": "daily"
},
"meta": {
"request_id": "c0a8012e-7f3b-4d6a-9e21-5b8d4f2a6c17",
"timestamp": "2026-09-30T14:15:22Z"
}
}{
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}