Skip to main content

Overview

Consolidated financial reports present the financial position and performance of a group of companies as a single economic entity. They combine trial balances from multiple member companies, eliminate intercompany transactions, and properly account for non-controlling interests (NCI).
Consolidated reports are generated using ConsolidatedReportService in packages/core/src/reporting/ConsolidatedReportService.ts, following ASC 810 consolidation standards.

Report Types

The service generates four types of consolidated financial statements:

1. Consolidated Balance Sheet

Shows the group’s financial position at a point in time, including:
  • Assets (current and non-current)
  • Liabilities (current and non-current)
  • Equity (parent company equity)
  • Non-Controlling Interest (NCI) in subsidiaries

2. Consolidated Income Statement

Shows the group’s financial performance for a period, including:
  • Revenue and expenses
  • Net income
  • Attribution to parent and NCI

3. Consolidated Cash Flow Statement

Shows the group’s cash flows for a period:
  • Operating activities (indirect method)
  • Investing activities
  • Financing activities
  • Net change in cash

4. Consolidated Statement of Changes in Equity

Shows movements in equity components:
  • Common stock
  • Additional paid-in capital
  • Retained earnings
  • Accumulated other comprehensive income
  • Non-controlling interest

Consolidation Process

1

Run consolidation

First, create and complete a consolidation run using the ConsolidationService. This produces a ConsolidatedTrialBalance containing:
  • Aggregated balances from all member companies
  • Elimination adjustments for intercompany transactions
  • NCI allocations
  • Final consolidated balances
2

Select report type

Choose which consolidated financial statement to generate from the completed consolidation run.
3

Generate report

The ConsolidatedReportService transforms the trial balance into the requested financial statement format with proper sectional organization.
4

Review and export

Review the consolidated report, verify balances, and export in your preferred format.

Service Methods

generateBalanceSheet

Generates a consolidated balance sheet from a trial balance.
interface GenerateBalanceSheetInput {
  trialBalance: ConsolidatedTrialBalance
  groupName: string  // Consolidated group name
}

function generateBalanceSheet(
  input: GenerateBalanceSheetInput
): Effect<ConsolidatedBalanceSheetReport, ConsolidatedBalanceSheetNotBalancedError>
Returns: ConsolidatedBalanceSheetReport with all sections and NCI Structure:
interface ConsolidatedBalanceSheetReport {
  runId: ConsolidationRunId
  groupName: string
  asOfDate: LocalDate
  currency: CurrencyCode
  currentAssets: ConsolidatedReportSection
  nonCurrentAssets: ConsolidatedReportSection
  totalAssets: number
  currentLiabilities: ConsolidatedReportSection
  nonCurrentLiabilities: ConsolidatedReportSection
  totalLiabilities: number
  equity: ConsolidatedReportSection
  nonControllingInterest: number
  totalEquity: number
  totalLiabilitiesAndEquity: number
}

generateIncomeStatement

Generates a consolidated income statement from a trial balance.
interface GenerateIncomeStatementInput {
  trialBalance: ConsolidatedTrialBalance
  groupName: string
}

function generateIncomeStatement(
  input: GenerateIncomeStatementInput
): Effect<ConsolidatedIncomeStatementReport>
Returns: ConsolidatedIncomeStatementReport with NCI attribution Structure:
interface ConsolidatedIncomeStatementReport {
  runId: ConsolidationRunId
  groupName: string
  periodRef: FiscalPeriodRef
  asOfDate: LocalDate
  currency: CurrencyCode
  revenue: ConsolidatedReportSection
  costOfSales: ConsolidatedReportSection
  grossProfit: number
  operatingExpenses: ConsolidatedReportSection
  operatingIncome: number
  otherIncomeExpense: ConsolidatedReportSection
  incomeBeforeTax: number
  taxExpense: number
  netIncome: number
  netIncomeAttributableToParent: number
  netIncomeAttributableToNCI: number
}

generateCashFlow

Generates a consolidated cash flow statement.
interface GenerateCashFlowInput {
  trialBalance: ConsolidatedTrialBalance
  priorTrialBalance?: ConsolidatedTrialBalance  // For working capital changes
  groupName: string
}

function generateCashFlow(
  input: GenerateCashFlowInput
): Effect<ConsolidatedCashFlowReport>
Structure:
interface ConsolidatedCashFlowReport {
  runId: ConsolidationRunId
  groupName: string
  periodRef: FiscalPeriodRef
  asOfDate: LocalDate
  currency: CurrencyCode
  operatingActivities: ConsolidatedReportSection
  investingActivities: ConsolidatedReportSection
  financingActivities: ConsolidatedReportSection
  netChangeInCash: number
  beginningCash: number
  endingCash: number
}

generateEquityStatement

Generates a consolidated statement of changes in equity.
interface GenerateEquityStatementInput {
  trialBalance: ConsolidatedTrialBalance
  priorTrialBalance?: ConsolidatedTrialBalance  // For opening balances
  groupName: string
}

function generateEquityStatement(
  input: GenerateEquityStatementInput
): Effect<ConsolidatedEquityStatementReport>
Structure:
interface ConsolidatedEquityStatementReport {
  runId: ConsolidationRunId
  groupName: string
  periodRef: FiscalPeriodRef
  asOfDate: LocalDate
  currency: CurrencyCode
  openingBalance: EquityMovementRow
  movements: EquityMovementRow[]  // Changes during period
  closingBalance: EquityMovementRow
}

interface EquityMovementRow {
  description: string
  commonStock: number
  additionalPaidInCapital: number
  retainedEarnings: number
  accumulatedOCI: number
  nonControllingInterest: number
  total: number
}

Account Category Mapping

Balance Sheet Sections

SectionAccount Categories
Current AssetsCurrentAsset
Non-Current AssetsNonCurrentAsset, FixedAsset, IntangibleAsset
Current LiabilitiesCurrentLiability
Non-Current LiabilitiesNonCurrentLiability
EquityContributedCapital, RetainedEarnings, OtherComprehensiveIncome, TreasuryStock

Income Statement Sections

SectionAccount Categories
RevenueOperatingRevenue
Cost of SalesCostOfGoodsSold
Operating ExpensesOperatingExpense, DepreciationAmortization
Other Income/ExpenseOtherRevenue, InterestExpense, OtherExpense
Tax ExpenseTaxExpense

Non-Controlling Interest (NCI)

Consolidated reports properly account for NCI per ASC 810:

Balance Sheet NCI

NCI appears in the equity section, representing the portion of subsidiaries owned by minority shareholders.
Total Equity = Parent Equity + Non-Controlling Interest

Income Statement NCI

Net income is attributed to both parent and NCI:
Net Income
- Net Income Attributable to NCI
= Net Income Attributable to Parent

Equity Statement NCI

NCI is tracked as a separate column showing:
  • Opening NCI balance
  • NCI share of net income
  • Dividends paid to NCI
  • Other changes in NCI
  • Closing NCI balance

Report Line Items

Consolidated reports use a simplified line item structure:
interface ConsolidatedReportLineItem {
  description: string           // Account name or label
  amount: number               // Display amount
  style: "Normal" | "Subtotal" | "Total" | "Header"
  indentLevel: number          // 0-based indentation
}

UI Workflow

  1. Navigate to ConsolidationRuns
  2. Select a completed consolidation run
  3. Click Generate Reports
  4. Choose report type:
    • Consolidated Balance Sheet
    • Consolidated Income Statement
    • Consolidated Cash Flow Statement
    • Consolidated Equity Statement
  5. Review the consolidated report
  6. Verify NCI calculations
  7. Export to PDF or Excel

Validation and Balancing

Balance Sheet Validation

The consolidated balance sheet validates:
totalAssets === totalLiabilities + totalEquity + nonControllingInterest
A tolerance of 0.01 is allowed for rounding differences.

Income Statement Validation

netIncome === netIncomeAttributableToParent + netIncomeAttributableToNCI

Export Formats

Consolidated reports support:
  • PDF: Professional formatted consolidated financials
  • Excel: Multi-sheet workbook with all four statements
  • CSV: Individual statement exports
  • JSON: Structured data for API integration

Best Practices

  1. Complete Consolidation First: Always run consolidation to completion before generating reports
  2. Review Eliminations: Verify intercompany eliminations are correct before report generation
  3. NCI Verification: Confirm NCI percentages and calculations are accurate
  4. Full Package: Generate all four statements together for complete financial picture
  5. Period Consistency: Use the same fiscal period for all consolidated reports
  6. Currency Translation: Ensure all member companies are translated to group currency

Common Issues

IssueCauseResolution
Balance sheet doesn’t balanceIncomplete eliminationsReview consolidation eliminations and NCI calculations
Missing NCI amountsNCI not calculated in consolidationVerify ownership percentages in consolidation setup
Incorrect sectionsWrong account categoriesUpdate account category mapping in member companies
Prior period comparison failsDifferent consolidation scopeEnsure same member companies in both periods
Consolidated reports are only available after completing a consolidation run. The trial balance from the run contains all necessary aggregated, eliminated, and NCI-adjusted balances.

Intercompany Eliminations

The consolidation process (before report generation) handles:
  • Intercompany revenue/expenses: Eliminated from income statement
  • Intercompany receivables/payables: Eliminated from balance sheet
  • Intercompany profits: Eliminated from inventory and equity
  • Intercompany investments: Eliminated and replaced with NCI
The consolidated reports display the final balances after all eliminations have been applied. To review elimination details, see the consolidation run detail page.

Multi-Currency Consolidation

When consolidating entities with different functional currencies:
  1. Translation: Each subsidiary’s trial balance is translated to the group’s reporting currency
  2. Translation Adjustments: Cumulative translation adjustments appear in Accumulated OCI
  3. NCI Translation: NCI is calculated in the reporting currency after translation
  4. Rates Used: Historical rates for equity, closing rates for assets/liabilities, average rates for income statement
All consolidated reports are presented in a single reporting currency for consistency.

Build docs developers (and LLMs) love