Total revenue · absolute
2020–2024 · $ millionsFrom the consolidated statement of operations in each year's Annual Financial Report.
/finances · revenues
Calgary’s total consolidated revenue in 2024 was $6,090million. That headline figure mixes three different things: tax revenue and user fees that renew every year; one-time capital transfers tied to specific federal and provincial projects; and volatile lines like investment income and ENMAX dividends that swing on market conditions. Treating any one year’s gross figure as a baseline misreads the trend. The chart below colours each source by which kind it is.
One bar = the City’s 2024 consolidated revenue, split by source. Each segment is coloured by its recurrence class (recurring · volatile · one-time). Hover or tap any segment to see the dollar value, share of total, and the page of the 2024 Annual Financial Report it was extracted from.
Both views render together — not as a toggle. The absolute chart on the left shows total revenue growing year over year. The per-capita chart on the right divides by Calgary’s population estimate for that year; in years of high population growth (Calgary added ~7.4% in 2024), the per-capita view tells a different story than the absolute view. Every data point links to its source PDF.
From the consolidated statement of operations in each year's Annual Financial Report.
Per-capita uses City of Calgary annual population estimates. Provincial CMA estimates explicitly excluded.
Each revenue line on its own y-scale, ordered by 2024share-of-total. A single chart with all eleven lines is unreadable at this line count and would hide per-line composition shifts. Each year’s data point is anchored to that year’s Annual Financial Report by page number — never a single citation across multiple years.
2020–2024: $2,123,471k – $2,627,877k
2020–2024: $1,131,088k – $1,384,471k
2020–2024: $282,756k – $684,848k
2020–2024: $168,674k – $345,075k
2020–2024: $102,795k – $312,073k
2020–2024: $-15,608k – $295,777k · renamed: Equity in earnings of ENMAX Corporation → Equity in (loss) earnings of ENMAX Corporation → Equity in earnings (loss) of ENMAX Corporation
2020–2024: $154,780k – $336,250k
2020–2024: $96,372k – $153,977k
2020–2024: $145,368k – $242,498k
2020–2024: $64,421k – $77,650k
2020–2024: $33,660k – $56,291k
Volatility · 2024
Investment income in 2024 was $312 million — council’s original budget for the year was $110 million, so the actual came in +183% vs budget. That gap is not the City quietly sandbagging revenue forecasts. It’s a one-time portfolio rebalancing on top of higher-than-budgeted bond yields — neither of which repeats every year.
The chart below shows the same actual-vs-budget pair for every year in the 2020–2024 span. A flat actual line in isolation would imply this is a recurring revenue source. It isn’t. Treating any single year’s actual as a baseline overstates ongoing revenue capacity.
Market-dependent revenue · 2024
Calgary owns ENMAX Corporation outright. The City books its share of ENMAX’s net earnings as “equity in earnings of ENMAX Corporation” on the consolidated statement of operations — that figure was $181 million in 2024. Net earningsis not the same as the cash dividend ENMAX pays the City — the dividend is declared by the ENMAX board and disclosed separately in ENMAX’s own annual report. The two numbers track loosely but not precisely; in years where ENMAX retains earnings to fund grid investment, the dividend can lag the earnings figure substantially.
Both move with energy market conditions. A common framing in council debate — “the City makes money from ENMAX so it doesn’t need taxes” — collapses a market-dependent revenue line into a recurring one. The per-line trend above shows the swing.
Government transfers · 2024
Government transfers from the federal and provincial governments come in two flavours. Operating transfers — generally cost-shared programs that recur each year — were $179 million in 2024. Capital transfers — project-specific tranches like federal Green Line funding or provincial Municipal Sustainability Initiative allocations — were $685 million.
The two are kept on separate lines in the AFR for a reason. Capital tranches arrive in lumps and disappear when the project closes — including them in a “total transfers” trend smooths over the lumpiness and makes one-time spikes (a federal infrastructure top-up, a provincial flood-recovery tranche) look like baseline revenue growth. The per-line trend above keeps them apart; the revenue-mix bar shows their separate shares.
Net municipal taxes · 2024
Net taxes available for municipal purposes — the property tax revenue Calgary collects on its own behalf, after remitting the provincial education property tax to the Province — was $2,628 million in 2024. That’s the largest single revenue line on this page and roughly 43% of total City revenue. This is the City-wide view — see alsohow this maps to your bill is a separate question that the property-taxes section answers parcel-by-parcel.
A note on framing: net municipal tax revenue grew +23.8% across the 2020–2024span. Calgary’s population grew +14.2% over the same period. A councillor citing the headline growth figure without naming population growth and the assessment-roll shift conflates two different things — the per-capita view above is the corrective.
Every figure on this page is extracted directly from the City of Calgary’s annual Annual Financial Report for 2020, 2021, 2022, 2023, 2024. Each year’s PDF is content-hashed; the per-figure citation links you to the specific page in the source PDF, not to a hub page or summary.
The extraction is automated — Gemini 2.5 Flash with structured JSON output, prompted to record the PDF page each figure was read from. Per-figure extraction confidence is reported in the artefact ("high" / "medium" / "low" / "extraction-failed"). Figures the model cannot read reliably are surfaced as "extraction failed" rather than guessed.
Budget figures come from the budget-comparison schedule in each AFR — the council-approved original budget for the fiscal year, not the amended budget. This is the figure council holds itself accountable to at year-end. Investment-income variance percentages used in the page’s narrative copy are computed in Python at generate time and baked into the artefact’s derivedblock — so the same number is the single source of truth for any other surface that quotes it. The variance chart’s tooltip and per-bar labels are formatted client-side from the actual + budget figures the artefact carries (not re-derived from a different source).
Per-capita figuresuse the City of Calgary’s published annual population estimates from each AFR’s five-year statistical review, not provincial Census Metropolitan Area estimates (which include surrounding municipalities). The shared population artefact is at /data/shared/population-calgary.json.
Revenue lines that get renamed between reporting years (e.g., “Government transfers related to capital” gaining a Note reference) are joined via a hand-reviewed alias map. If a future AFR restructures or adds a revenue line we haven’t mapped, the build fails closed — the page won’t republish until the new line is editor-classified for recurrence.
Cross-link enforcement: pieces under /finances that touch municipal tax revenue declare crosses_resident_bill_boundary: true in a top-of-file comment. A build step (web/scripts/check-crosslinks.mjs) verifies every flagged piece carries an inline link to /property-taxes and fails the build if one is missing. Pieces declaring false that mention tax-revenue keywords get a build warning prompting editor review.