Get the debt service ratio: the share of income that goes to interest payments and repayments of debt. It captures both how much is borrowed and at what rate, so it rises when rates go up even if the debt itself does not, and it is a leading indicator of financial stress: a high debt service ratio held back spending and preceded the downturns after several credit booms (Drehmann and Juselius, 2012).

The ratio is computed by the Bank for International Settlements for the private non-financial sector of around 30 economies, and for households and non-financial corporations separately for about half of them, quarterly from 1999. It is the debt service (interest plus amortisation, assuming the average remaining maturity of the debt) divided by income: disposable income plus interest paid for households, and gross operating surplus plus interest paid for corporations. No API key is needed.

See definition: https://data.bis.org/topics/DSR and https://www.bis.org/publ/qtrpdf/r_qt1509h.htm

Also known as: DSR, debt service burden, debt service-to-income ratio.

Debt Service Ratio in Python or via the MCP

Install the Finance Toolkit with:

pip install financetoolkit -U

Then call get_debt_service_ratio as shown below.

from financetoolkit import Economics

economics = Economics(start_date='2025-01-01', end_date="2025-12-31")

economics.get_debt_service_ratio(countries=['United States', 'Germany', 'China', 'Japan'])

Or, after setting up the Finance Toolkit MCP, ask:

What share of their income did the private sectors of the United States, Germany, China and Japan spend on interest and principal in each quarter of 2025?

Which returns:

  United States Germany China Japan
2025Q1 0.14 0.123 0.189 0.15
2025Q2 0.14 0.123 0.189 0.15
2025Q3 0.139 0.123 0.188 0.152
2025Q4 0.139 0.122 0.188 0.154

Parameters

get_debt_service_ratio accepts the following parameters.

ParameterTypeDescriptionExample
countrieslist[str] | str | NoneThe countries to include in the data. Defaults to None.["United States", "Germany"]
borrowersstrThe borrowing sector: “private” (households and non-financial corporations together), “households” or “corporations” (non-financial corporations). Defaults to “private”, the sector with the widest coverage."private", the sector with the widest coverage
rollingintThe rolling window size to use for smoothing the data (simple moving average). Defaults to None.4
trailingintThe trailing window size to use for summing the data over trailing periods. Defaults to None.4
growthboolWhether to return the growth data or the actual data. Defaults to False.True
lagintThe number of periods to lag the data by. Defaults to 1.4
standardizeboolWhether to standardize (Z-Score) the result. When combined with growth=True, standardizes the growth values instead of the raw values. Defaults to False.True
roundingint | NoneThe number of decimals to round the results to. Defaults to None.2
Share