Income Statement
The income statement is your live profit and loss for any date range — revenue and expenses roll into Gross Profit, Operating Income, and Net Income. Group by month, quarter, or year; expand accounts to see counterparties and drill into transactions.
Key capabilities
- Accrual P&L for any range, defaulting to the last 12 months
- Group by Month, Quarter, or Year to spread amounts into period columns
- Section roll-ups: Operating Revenue, Cost of Goods Sold, Operating Expenses, Other Income, Other Expenses
- Computed subtotals: Gross Profit (after COGS), Operating Income (after OpEx), and Net Income
- Per-section sum row and a per-period column total
- Expand-row counterparty breakdown — customers for revenue sections, vendors for expense sections — with entry counts and % of account
- Period-over-period variance arrows on each counterparty cell
- Click any counterparty amount to drill into the underlying transactions
- Recategorize every transaction for a counterparty into another account in one move
- Hide Empty Rows toggle and tag filtering for project/department views
- AI Analysis panel with gross/operating/net margin tiles, severity-ranked insights, and copy-to-clipboard
- Excel export of the current view
How it works
Revenue ledgers net against expense ledgers across the period. DayZero inserts the standard subtotals between sections so the statement reads top-to-bottom like a formal P&L.
flowchart TD
rev["Operating Revenue"] --> gp["Gross Profit (Revenue - COGS)"]
cogs["Cost of Goods Sold"] --> gp
gp --> oi["Operating Income (Gross Profit - OpEx)"]
opex["Operating Expenses"] --> oi
oi --> ni["Net Income"]
other["Other Income / Other Expenses"] --> niHow to use it
- Open Income Statement and set a Date Range with preset pills (This Month, This Quarter, This Year) or custom dates.
- Choose Group by Month, Quarter, or Year to break amounts into period columns; click Refresh to reload.
- Toggle Hide Empty Rows to drop accounts with no activity.
- Optionally pick a Tag to scope the statement to tagged transactions (e.g. a project or department).
- Expand an account row to load its counterparty breakdown — each shows transaction count and % of the account total, with up/down arrows flagging period swings.
- Click a counterparty's period amount to open the transaction drill-down; use the recategorize control to move all of that counterparty's entries to another account.
- Open AI Analysis for a plain-English summary with margin tiles, then click Excel to export.
Pro tips
- Group by Month during close to watch how each account trends across the period and catch anomalies early.
- Margins (gross/operating/net) appear in the AI panel as % of revenue — a fast read on profitability without manual math.
- Use tag filtering when you track projects, locations, or departments with tags instead of separate sub-accounts.
- Variance arrows on counterparty rows are relative to the previous column — handy for spotting a vendor whose spend just jumped.
- Recategorizing from the breakdown fixes the whole history for a counterparty at once, which is faster than editing transactions one by one.
- Copy the AI analysis straight into a client-facing email or memo.
In-depth guide
Report structure and line items
The statement is organized into sections, each listing its ledger accounts with a Total column and one column per period. A bold sum row closes each section, and computed subtotals are inserted at the right points.
| Section | Rolls into |
|---|---|
| Operating Revenue | Gross Profit, then down the page |
| Cost of Goods Sold | Subtracted to give Gross Profit |
| Operating Expenses | Subtracted from Gross Profit to give Operating Income |
| Other Income | Added after Operating Income |
| Other Expenses | Subtracted to give Net Income |
| Subtotal | Formula | When shown |
|---|---|---|
| Gross Profit | Revenue − COGS | Only when a COGS section exists |
| Operating Income | Gross Profit − Operating Expenses | After the Operating Expenses section |
| Net Income | Operating Income + Other Income − Other Expenses | At the bottom |
How figures are computed
- All amounts come from posted line entries in the double-entry ledger, so the statement is accrual basis — revenue and expenses land when earned or incurred, not when cash moves (see the Cash Flow report for the cash view).
- Values are stored precisely to the cent and formatted for display.
- Period columns use keys like
2026-03(month),2026-Q1(quarter), or2026(year); column totals sum every account in the section for that period.
Counterparty breakdown and drill-down
- Expanding an account fetches a counterparty-by-period matrix.
- Labels — revenue and income sections label counterparties as Customers; all others as Vendors.
- Each row shows the counterparty's total, an entry-count badge, its percentage of the account, and trend arrows comparing each period to the one before.
- Clicking a non-zero amount opens the transaction drill-down scoped to that account, counterparty, and period.
Recategorization
- From a counterparty row you can move every transaction for that counterparty out of the current account into another category.
- Transactions with a linked bank transaction are re-categorized in bulk; standalone line entries are reassigned directly.
- The statement refreshes so the move is reflected immediately.
Comparison periods and exports
- The live page has no side-by-side prior-period column — for formal variance, common-size (% of revenue), and year-over-year comparisons, run Comparative Income Statement or Income Statement by Period from the Reports catalog.
- The Excel button here exports exactly the rows, sections, and period columns currently on screen.