live record51.0447°N · 114.0719°Walt 1045 m

/finances · revenues

Not all revenue is recurring

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.

Revenue mix · 2024 reporting year

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.

Net taxes available for municipal purposes: $2,627,877k · 43.1% · recurring · p.45Sales of goods and services: $1,341,457k · 22.0% · recurring · p.45Government transfers related to capital: $684,848k · 11.2% · volatile · p.45Developer contributions-in-kind related to capital: $345,075k · 5.7% · volatile · p.45Investment income: $312,073k · 5.1% · volatile · p.45Equity in earnings (loss) of ENMAX Corporation: $181,248k · 3.0% · volatile · p.45Government transfers related to operating: $178,613k · 2.9% · recurring · p.45Licences, permits and fees: $153,977k · 2.5% · recurring · p.45Developer contributions: $145,368k · 2.4% · volatile · p.45Fines and penalties: $75,731k · 1.2% · recurring · p.45Miscellaneous revenue: $44,051k · 0.7% · recurring · p.45
  1. Net taxes available for municipal purposesrecurring43.1%
  2. Sales of goods and servicesrecurring22.0%
  3. Government transfers related to capitalvolatile11.2%
  4. Developer contributions-in-kind related to capitalvolatile5.7%
  5. Investment incomevolatile5.1%
  6. Equity in earnings (loss) of ENMAX Corporationvolatile3.0%
  7. Government transfers related to operatingrecurring2.9%
  8. Licences, permits and feesrecurring2.5%
  9. Developer contributionsvolatile2.4%
  10. Fines and penaltiesrecurring1.2%
  11. Miscellaneous revenuerecurring0.7%
  • recurringRenews every year. Population, economic activity, and rate decisions move it; volatility is bounded.
  • volatileRepeats annually but the size swings on market conditions or transfer cycles. Treating any one year as a baseline misreads the trend.
  • one-timeTied to specific projects or program tranches. Disappears when the project closes; not a sustainable revenue base.

Total revenue trend · 20202024

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.

Per-line trend · 20202024

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.

Volatility · 2024

Investment income is volatile by design

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 20202024 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.

Source: Annual Financial Report investment-income line, per year. Variance is computed as (actual − budget) / budget where budget is the council-approved original.

Market-dependent revenue · 2024

ENMAX dividends rise and fall with the energy market

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.

Source for the equity-in-earnings figure: each year’s AFR. Source for ENMAX’s declared dividend to the City: ENMAX Corporation’s own annual report (cited where referenced).

Government transfers · 2024

Operating transfers vs capital transfers — different lines, different cadence

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.

Source: each year’s AFR, separately for the operating and capital transfer lines. Editorial note: the AFR uses different line names across the 20202024 span (gaining a Note reference in 2023 and 2024); the alias map in scripts/finances/revenues/aliases.yaml is the canonical join.

Net municipal taxes · 2024

The City’s biggest revenue source is the resident bill

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 20202024span. 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.

Source: 2024 AFR p.45 Net taxes available for municipal purposes.

Methodology

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.

Download data

  • /data/finances/revenues.json — every revenue line, every year in scope (20202024), every page-anchored source reference, every actual + budget figure, derived per-capita and variance blocks.
  • /data/shared/population-calgary.json — annual City of Calgary population estimates with per-year source references, shared across /finances sub-pages.