Browse docs

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

ReportEndpointWhat it shows
Trial balanceGET /reports/trial-balanceEvery account's debit/credit balance as of a date; totals must balance.
Income statement (P&L)GET /reports/income-statementRevenue minus expenses over a date range → net income.
Balance sheetGET /reports/balance-sheetAssets, liabilities, and equity as of a date.
Cash flow statementGET /reports/cash-flowCash movement over a date range.
General ledgerGET /reports/general-ledgerEvery 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