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
| 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).
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
- Accounts — managing the chart.
- API reference — exact parameters and response shapes.