Skip to content

Generate statements

Who does this: FS Preparer · Senior Accountant · Platform Admin When: Every TB row carries a taxonomyKey and you want to assemble the Balance Sheet, P&L, SOCE, and Cash Flow. Result: A new FsGeneratedStatement row with versionNo bumped, and four statement tabs populated. The engagement transitions to STATEMENTS_GENERATED.

The statement generator is deterministic — no AI involved. Every figure is a pure function of the mapped TB. Running it twice on the same inputs yields the same outputs; running it after a mapping change yields the corrected outputs and bumps versionNo.

Before you start

  • [ ] Engagement at TB_MAPPED (every TB row has a taxonomyKey).
  • [ ] You hold GENERATE_STATEMENTS.

Steps

  1. Open the engagement → Statements tab.
  2. Click Generate.
  3. The handler runs synchronously and refreshes the page with four tabs:
    • Balance Sheet (SOFP)
    • P&L (SPLOCI)
    • SOCE
    • Cash Flow (SOCF — indirect method)
  4. The status badge moves to STATEMENTS_GENERATED.

How to know it worked

  1. All four statement tabs render with figures.
  2. The Balance Sheet's is_balanced indicator is green (total_assets ≈ total_equity_and_liabilities within ±1.0 SGD).
  3. The activity log shows fs.statements.generated with versionNo in the payload.
  4. The anomalies list at the top of the tab is empty, or contains only acceptable warnings.

Common situations

If you see…It means…What to do
Red not balanced banner on the BS tabtotal_assets != total_equity_and_liabilitiesAlmost always a sign-flip in the mapping. Open the anomaly list; the affected rows are highlighted. Open Mapping; override; regenerate. See Statements not balanced
Anomaly: negative_working_capitalCurrent liabilities exceed current assetsOften legitimate (e.g. a deferred-revenue-heavy SaaS). Document on the engagement; ship. See Negative working capital
Anomaly: zero_revenueThe revenue section sums to zeroEither a real fact (dormant entity) or a mapping miss. Check the Mapping tab
Anomaly: profit_no_taxPBT > 0 but no income-tax expenseEither legitimate (tax loss carryforward, exemption) or a mapping miss for income_tax_expense. Verify
Anomaly: sign_flipA credit-side taxonomy key resolved to a debit balance after sign normalisation (or vice versa)Open the affected row in Mapping; check the key matches the natural balance of the GL account

Regenerate

Re-running Generate is allowed. It is the self-loop STATEMENTS_GENERATED → STATEMENTS_GENERATED. Each run bumps versionNo. The latest version is what downstream notes / DOCX consume.

NOTE

Regenerating statements does not invalidate previously generated notes. The notes preview still renders against the prior statement version; only the next Generate notes call picks up the new version. Plan accordingly — if you regenerated to fix a sign flip and notes already shipped, regenerate notes too.

Internal use only — BreezyCorp