Reports
AI Accounting computes five financial reports on demand, directly from posted journal entries. Nothing is precomputed or cached in a way that can drift — ask for a report as of a date or over a range and you get a deterministic result.
The five reports
| Report | Endpoint | What it shows |
|---|---|---|
| Trial balance | GET /reports/trial-balance | Every account's debit/credit balance as of a date; totals must balance. |
| Income statement (P&L) | GET /reports/income-statement | Revenue minus expenses over a date range → net income. |
| Balance sheet | GET /reports/balance-sheet | Assets, liabilities, and equity as of a date. |
| Cash flow statement | GET /reports/cash-flow | Cash movement over a date range. |
| General ledger | GET /reports/general-ledger | Every posting, by account, over a range. |
All five are in the API reference and available as MCP
tools (get_trial_balance, get_income_statement, get_balance_sheet,
get_cash_flow_statement, get_general_ledger).
Posted-only, with a draft preview
Reports count posted entries only by default — drafts are invisible until you
post them. To validate work before committing it (e.g. a freshly imported batch),
pass include_drafts=true to any report: it folds draft entries into the figures
(reversed entries are always excluded). Use it to preview the trial balance of an
import, confirm it ties out, then post. Leave it off for official statements. On
the general ledger / account ledger, include_drafts=true makes the running
balance a projection, not a posted-only reconciliation.
Date parameters
- As-of reports (trial balance, balance sheet) take a single date — the balance at that point in time.
- Period reports (income statement, cash flow, general ledger) take a date range.
How the balance sheet ties out
The balance sheet always balances: Assets = Liabilities + Equity. Within a year, net income that hasn't yet been closed into retained earnings appears as current-year earnings in equity, so the statement ties out before period close as well as after.
Account-level views
Beyond the statements, you can pull a single account's running balance and ledger:
GET /accounts/{id}/balance— current balance.GET /accounts/{id}/ledger— the account's individual postings.
Both accept include_drafts=true to preview unposted activity, same as the
statements above.
Next
- Accounts — managing the chart.
- API reference — exact parameters and response shapes.