curl --request GET \
--url https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/reports/cash-flow/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/reports/cash-flow/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/reports/cash-flow/', 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://sandbox.thredfi.com/v1/platform/businesses/{business_id}/reports/cash-flow/",
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://sandbox.thredfi.com/v1/platform/businesses/{business_id}/reports/cash-flow/"
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://sandbox.thredfi.com/v1/platform/businesses/{business_id}/reports/cash-flow/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/reports/cash-flow/")
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[
{
"business_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"start_date": "2023-12-25",
"end_date": "2023-12-25",
"currency": "<string>",
"detail_level": "summary",
"summary": {
"net_cash_from_operating_cents": 123,
"net_cash_from_investing_cents": 123,
"net_cash_from_financing_cents": 123,
"net_change_in_cash_cents": 123,
"opening_cash_cents": 123,
"closing_cash_cents": 123
},
"cash_reconciliation": {
"opening_cash_cents": 123,
"net_change_cents": 123,
"calculated_closing_cents": 123,
"actual_closing_cents": 123,
"reconciles": true
},
"operating_activities": {
"net_profit_cents": 123,
"non_cash_adjustments": {
"display_name": "<string>",
"total_cents": 123,
"line_items": [
{
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"account_code": "<string>",
"account_name": "<string>",
"value_cents": 123
}
]
},
"working_capital_changes": {
"display_name": "<string>",
"total_cents": 123,
"line_items": [
{
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"account_code": "<string>",
"account_name": "<string>",
"value_cents": 123
}
]
}
},
"investing_activities": {
"display_name": "<string>",
"total_cents": 123,
"line_items": [
{
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"account_code": "<string>",
"account_name": "<string>",
"value_cents": 123
}
]
},
"financing_activities": {
"display_name": "<string>",
"total_cents": 123,
"line_items": [
{
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"account_code": "<string>",
"account_name": "<string>",
"value_cents": 123
}
]
}
}
]{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}Get cash flow statement
Retrieve a Cash Flow Statement (Indirect Method) for a business within a date range.
Important: Both posted and draft journal entries are included in the calculations.
Cash Flow Sections:
- Operating Activities: Net profit + Non-cash adjustments + Working capital changes
- Investing Activities: Changes in non-current assets (PPE, intangibles)
- Financing Activities: Changes in equity and long-term debt
Summary metrics returned:
- net_cash_from_operating_cents: Cash flow from operating activities
- net_cash_from_investing_cents: Cash flow from investing activities
- net_cash_from_financing_cents: Cash flow from financing activities
- net_change_in_cash_cents: Total change in cash position
- opening_cash_cents: Cash balance at period start
- closing_cash_cents: Cash balance at period end
Cash Reconciliation: The report includes a reconciliation to verify: Opening Cash + Net Change = Closing Cash
Detail levels:
summary(default): Returns only summary metrics + reconciliationdetailed: Returns summary + line item breakdown by account
Key filters:
- Cash accounts: Accounts where is_cash_account=True
- Non-cash expenses: Accounts where is_non_cash_expense=True (depreciation, etc.)
- Working capital: Current assets (excl. cash) and current liabilities
All values are in cents. Currency is the business’s base currency.
Accounting standards validated: IAS 7, ASC 230, FRS 102, RJ 360
curl --request GET \
--url https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/reports/cash-flow/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/reports/cash-flow/"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/reports/cash-flow/', 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://sandbox.thredfi.com/v1/platform/businesses/{business_id}/reports/cash-flow/",
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://sandbox.thredfi.com/v1/platform/businesses/{business_id}/reports/cash-flow/"
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://sandbox.thredfi.com/v1/platform/businesses/{business_id}/reports/cash-flow/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/reports/cash-flow/")
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[
{
"business_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"start_date": "2023-12-25",
"end_date": "2023-12-25",
"currency": "<string>",
"detail_level": "summary",
"summary": {
"net_cash_from_operating_cents": 123,
"net_cash_from_investing_cents": 123,
"net_cash_from_financing_cents": 123,
"net_change_in_cash_cents": 123,
"opening_cash_cents": 123,
"closing_cash_cents": 123
},
"cash_reconciliation": {
"opening_cash_cents": 123,
"net_change_cents": 123,
"calculated_closing_cents": 123,
"actual_closing_cents": 123,
"reconciles": true
},
"operating_activities": {
"net_profit_cents": 123,
"non_cash_adjustments": {
"display_name": "<string>",
"total_cents": 123,
"line_items": [
{
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"account_code": "<string>",
"account_name": "<string>",
"value_cents": 123
}
]
},
"working_capital_changes": {
"display_name": "<string>",
"total_cents": 123,
"line_items": [
{
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"account_code": "<string>",
"account_name": "<string>",
"value_cents": 123
}
]
}
},
"investing_activities": {
"display_name": "<string>",
"total_cents": 123,
"line_items": [
{
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"account_code": "<string>",
"account_name": "<string>",
"value_cents": 123
}
]
},
"financing_activities": {
"display_name": "<string>",
"total_cents": 123,
"line_items": [
{
"account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"account_code": "<string>",
"account_name": "<string>",
"value_cents": 123
}
]
}
}
]{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}{
"error_code": "<string>",
"message": "<string>",
"detail": {},
"request_id": "<string>"
}Authorizations
Partner-level JWT token (unscoped). Token payload includes partner_id. Business access is validated via partner ownership. Format: Bearer <your-jwt-token>
Use this for: Multi-business operations where the business_id is specified in the URL and partner has access to multiple businesses.
Path Parameters
Business UUID
Query Parameters
Level of detail: 'summary' or 'detailed'
detailed, summary Report period end date (YYYY-MM-DD)
Report period start date (YYYY-MM-DD)
Response
Business UUID
Report period start date
Report period end date
Business base currency (ISO 4217)
'summary' or 'detailed'
summary- summarydetailed- detailed
summary, detailed Cash flow summary metrics
Show child attributes
Show child attributes
Cash reconciliation check (Opening + Change = Closing)
Show child attributes
Show child attributes
Operating activities breakdown (detailed view only)
Show child attributes
Show child attributes
Investing activities by account (detailed view only)
Show child attributes
Show child attributes
Financing activities by account (detailed view only)
Show child attributes
Show child attributes
Was this page helpful?