/owner/reports/accounts/1. Not paginated.nature: credit) are credit minus debit. Every other group is debit minus credit, so an expense total is positive. net_total.value is income minus expenses.shows_value is false is one the report screen prints blank (top-level rows) or as 0 (child rows). value still carries the figure.400 instead of truncating, because a truncated statement would carry wrong totals. The default is per-deployment configuration.curl --location '/api2/reports/income_statement?date_from=2026-01-01&date_to=2026-12-31&date_selector=&accounts_display=hide_zero_accounts&level=2&cost_center_id=&fy_id=&journals_branch_id=&accounts_branch=' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer ' \
--header 'apikey: ' \
--header 'Content-Type: application/json'{
"result": "successful",
"code": 200,
"data": {
"report": {
"key": "income_statement",
"title": "string",
"currency": "string"
},
"filters": {
"date_from": "2019-08-24",
"date_to": "2019-08-24",
"accounts_display": "display_all_accounts",
"level": 0,
"cost_center_id": [
0
],
"fy_id": [
0
],
"journals_branch_id": "all",
"accounts_branch": 0
},
"groups": [
{
"key": "string",
"title": "string",
"nature": "credit",
"total_title": "string",
"total": 0,
"accounts": [
{
"node_id": "string",
"kind": "category",
"code": "string",
"name": "string",
"level": 0,
"parent_node_id": "string",
"value": 0,
"shows_value": true,
"displayed_value": 0,
"children": [
{
"node_id": "string",
"kind": "category",
"code": "string",
"name": "string",
"level": 0,
"parent_node_id": "string",
"value": 0,
"shows_value": true,
"displayed_value": 0
}
]
}
]
}
],
"net_total": {
"title": "string",
"value": 0
},
"meta": {
"group_count": 0,
"row_count": 0
}
}
}