Euro Area M3 Money Supply — Daily CSV Download

ECB Dataset · Liquidity & Monetary Policy

Euro Area M3 Money Supply — Stock (1980–2026)

The broad monetary aggregate for the euro area — M3 includes currency in circulation, overnight deposits (M1), deposits with maturity up to 2 years (M2), plus repos, money market fund shares, and short-term debt securities. Currently ~€17.3 trillion.

Source
ECB
Frequency
Monthly
Coverage
1980–Present
Unit
EUR millions

M3 and the ECB’s monetary analysis

M3 holds a special place in ECB policy: the ‘monetary analysis’ pillar of the ECB’s two-pillar strategy was built around monitoring M3 growth. The original 4.5% reference value (set in 1998) was quietly abandoned in 2003, but M3 remains a key indicator in the Governing Council’s assessment of medium-term inflation risks.

The level of M3 reflects cumulative money creation by the banking system (credit) and the central bank (QE). The 2020–2021 surge (driven by pandemic fiscal transfers and ECB bond purchases) pushed M3 growth above 12% — a massive monetary expansion that many analysts link to the subsequent inflation episode. The 2023 contraction in M3 (first in euro era history) signaled the reversal of this excess.

M3 as a leading indicator

Research by the ECB and academic economists suggests M3 growth leads euro area inflation by 18–24 months — with a stronger relationship for sustained deviations from trend than for transient fluctuations. The recent recovery of M3 growth to ~3.3% (early 2026) is consistent with inflation stabilizing near 2% in 2027.

CSV Data Dictionary

ColumnTypeDescription
dateYYYY-MM-DDFirst day of the reference month
m3_stock_eur_mfloatM3 outstanding amounts, EUR millions (seasonally adjusted)

Python Code Example

import pandas as pd
from io import StringIO
import requests

url = "https://data-api.ecb.europa.eu/service/data/BSI/M.U2.Y.V.M30.X.1.U2.2300.Z01.E"
resp = requests.get(url, params={"format": "csvdata"})
raw = pd.read_csv(StringIO(resp.text))

df = raw[["TIME_PERIOD", "OBS_VALUE"]].copy()
df.columns = ["date", "m3_stock_eur_m"]
df["date"] = pd.to_datetime(df["date"] + "-01")
df = df.sort_values("date").set_index("date")

df.plot(title="Euro Area M3 Money Supply", figsize=(12, 5))

Source & Methodology

Source: ECB — Monetary Statistics (BSI)

Series key: BSI/M.U2.Y.V.M30.X.1.U2.2300.Z01.E

License: ECB open data — free reuse with attribution.

Cite This Dataset