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