Browse docs

Reports

Somara 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).

Every entry counts

Reports count every entry, for_review and reviewed alike, along with the reversal pairs that net them out. There is no exclusion toggle and no preview mode: an entry affects the figures from the moment it exists, so an imported batch is already visible before anyone confirms its coding.

Review state records whether a person has confirmed how a transaction was coded. It never changes a total. If a number looks wrong, look for an uncategorized balance rather than for rows hidden by review state — none are hidden.

include_drafts=true is still accepted on every report for callers written against the old behaviour, and is ignored.

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 and ignore it, same as the statements above.

Next