curl --request GET \
--url https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/general-ledger/chart-of-accounts/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/general-ledger/chart-of-accounts/"
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}/general-ledger/chart-of-accounts/', 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}/general-ledger/chart-of-accounts/",
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}/general-ledger/chart-of-accounts/"
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}/general-ledger/chart-of-accounts/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/general-ledger/chart-of-accounts/")
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{
"count": 123,
"page_info": {
"total_count": 123,
"current_page": 1,
"total_pages": 7,
"page_size": 20
},
"results": [
{
"id": "acc-1000-uuid",
"code": "1000",
"name": "Bank - Barclays Current",
"currency": "GBP",
"account_type": "asset",
"account_type_display": "Asset",
"account_subtype": "current_assets",
"account_subtype_display": "Current Assets",
"parent_account_code": null,
"current_balance": 1250050,
"current_balance_formatted": "£12,500.50",
"debit_balance": 1500000,
"credit_balance": 249950,
"period_balance": null,
"period_balance_formatted": null,
"has_children": false,
"hierarchy_level": 0,
"is_active": true
}
]
}{
"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>"
}List chart of accounts
List all accounts with current balances for a business.
Features:
- Filter by account type (Assets, Liabilities, Equity, Revenue, Expenses)
- Filter by fiscal year (accounts with activity in that year)
- Filter by specific accounting period (year + month)
- Filter by parent account (hierarchical view)
- Search by account name or code
- Include/exclude zero balance accounts
- Group accounts by type (Assets, Liabilities, etc.)
- Pagination support (default: 20 per page, max: 100)
Response includes:
- Account code, name, type, sub-type
- Current balance (from ledger)
- Formatted balance with currency symbol (€, £, $)
- Period-specific balance (if period filters applied)
- Debit and credit balances
- Parent/child account relationships
- Hierarchy level and children indicator
Grouping:
Use group_by=type to get accounts grouped by:
- Assets (Current, Fixed, Other)
- Liabilities (Current, Long-term)
- Equity
- Revenue
- Expenses (Operating, COGS)
Period Filtering:
Use both period_year and period_month together to get period-specific balances.
Example: period_year=2024&period_month=11 for November 2024.
Account Types (5 fundamental types):
asset: Asset (use account_subtype for current/fixed/other)liability: Liability (use account_subtype for current/long_term)equity: Equityrevenue: Revenueexpense: Expense (use account_subtype for operating/cogs)
curl --request GET \
--url https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/general-ledger/chart-of-accounts/ \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/general-ledger/chart-of-accounts/"
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}/general-ledger/chart-of-accounts/', 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}/general-ledger/chart-of-accounts/",
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}/general-ledger/chart-of-accounts/"
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}/general-ledger/chart-of-accounts/")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.thredfi.com/v1/platform/businesses/{business_id}/general-ledger/chart-of-accounts/")
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{
"count": 123,
"page_info": {
"total_count": 123,
"current_page": 1,
"total_pages": 7,
"page_size": 20
},
"results": [
{
"id": "acc-1000-uuid",
"code": "1000",
"name": "Bank - Barclays Current",
"currency": "GBP",
"account_type": "asset",
"account_type_display": "Asset",
"account_subtype": "current_assets",
"account_subtype_display": "Current Assets",
"parent_account_code": null,
"current_balance": 1250050,
"current_balance_formatted": "£12,500.50",
"debit_balance": 1500000,
"credit_balance": 249950,
"period_balance": null,
"period_balance_formatted": null,
"has_children": false,
"hierarchy_level": 0,
"is_active": true
}
]
}{
"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
Filter by account type (case-insensitive). Values: asset, liability, equity, revenue, expense
Filter to show only accounts with journal entry activity in the specified fiscal year. Note: For export endpoint, use fiscal_year to calculate period-specific balances instead.
Group accounts by category. Values: 'type' (groups by Assets, Liabilities, Equity, Revenue, Expenses)
Include accounts with zero balance (default: true)
Page number (default: 1). Not used when group_by is specified.
Items per page (default: 20, max: 100). Not used when group_by is specified.
Filter by parent account UUID (show sub-accounts only)
Month for period-specific balance calculation (1-12). Must be used with period_year.
Year for period-specific balance calculation (e.g., 2024). Must be used with period_month.
Search by account name, code, or institution name
Was this page helpful?