Overview
The income statement (also called Profit & Loss or P&L) reports a company’s financial performance over a period of time, showing revenues, expenses, and resulting net income. It follows the multi-step format per ASC 220 with expenses grouped by function.Income statements are generated using
IncomeStatementService in packages/core/src/reporting/IncomeStatementService.ts, following ASC 220 standards for expense presentation.Report Structure
Multi-Step Format
The income statement uses a multi-step format providing key subtotals for analysis:Sections
- Revenue
- Expenses
Operating Revenue
- Product sales
- Service revenue
- Subscription revenue
- Interest income
- Gains on asset sales
- Other miscellaneous income
Line Items
Each line item includes:Key Subtotals
- Gross Profit: Revenue - Cost of Sales
- Operating Income: Gross Profit - Operating Expenses
- Income Before Tax: Operating Income + Other Income/Expense
- Net Income: Income Before Tax - Income Tax Expense
Generating an Income Statement
Select company and period
Choose the company and the reporting period (start date and end date). Unlike the balance sheet, the income statement covers a period of time.
Configure comparative period (optional)
Optionally select a comparative period (e.g., prior year same period) to show period-over-period performance changes.
Set display options
- Include zero balances: Show or hide accounts with no activity
- Show account numbers: Display account codes
- Expense grouping: By function (default per ASC 220) or by nature
Service Methods
generateIncomeStatement
Generates a complete income statement report.IncomeStatementReport with all sections, subtotals, and net income
Errors:
CompanyNotFoundError: Company does not existInvalidPeriodError: Period start date is after period end date
Income Statement Sections
Section Types
Per ASC 220, expenses are grouped by function:Account Category Mapping
| Section | Account Categories |
|---|---|
| Revenue | OperatingRevenue, OtherRevenue |
| Cost of Sales | CostOfGoodsSold |
| Operating Expenses | OperatingExpense, DepreciationAmortization |
| Other Income/Expense | InterestExpense, OtherExpense |
| Income Tax | TaxExpense |
Comparative Analysis
When comparative periods are provided, the report includes:Variance Analysis
- Absolute Variance: Current amount - Comparative amount
- Percentage Variance: (Variance / Comparative amount) × 100
Key Metrics
UI Workflow
- Single Period
- Comparative Period
- Monthly Reporting
- Navigate to Reports → Income Statement
- Select the company
- Choose Period Start Date (e.g., January 1, 2024)
- Choose Period End Date (e.g., December 31, 2024)
- Click Generate Report
- Review financial performance:
- Revenue by source
- Cost of sales and gross profit
- Operating expenses by function
- Operating income
- Other income/expenses
- Net income
- Analyze key margins (gross, operating, net)
- Export to PDF or Excel
Report Features
Section Display Names
The service provides formatted section names:Line Item Helpers
Period-Based Calculation
Unlike the balance sheet (point-in-time), the income statement calculates period activity:Export Formats
Income statements support:- PDF: Professional formatted P&L with company header and period
- Excel: Multi-sheet workbook with formulas, subtotals, and charts
- CSV: Raw data export for custom analysis
- JSON: Structured data for API integration
Best Practices
- Consistent Periods: Use standard periods (monthly, quarterly, annually) for trend analysis
- Comparative Reporting: Always compare to prior period or budget for context
- Expense Classification: Maintain proper account categories for accurate functional grouping
- Margin Analysis: Track gross, operating, and net margins over time
- Variance Investigation: Set thresholds for investigating significant variances
Common Issues
| Issue | Cause | Resolution |
|---|---|---|
| Invalid period error | Start date after end date | Verify date range is correct |
| Missing revenue/expenses | Accounts not in correct category | Update account categories in chart of accounts |
| Incorrect subtotals | Journal entries in wrong accounts | Review account mapping and reclassify if needed |
| Zero net income | No activity in period | Verify journal entries are posted and dated correctly |
Revenue accounts have credit normal balances, while expense accounts have debit normal balances. The service automatically handles these conventions for proper display.
Key Metrics Dashboard
The income statement data can be used to calculate key performance indicators:- Gross Profit Margin: (Gross Profit / Revenue) × 100
- Operating Margin: (Operating Income / Revenue) × 100
- EBITDA: Operating Income + Depreciation + Amortization
- Net Profit Margin: (Net Income / Revenue) × 100
- Revenue Growth: (Current Revenue - Prior Revenue) / Prior Revenue × 100
Per ASC 220, public companies must present expenses by function. Private companies may choose to present by nature, but functional presentation is recommended.