Ten years of federal spending: what the audited accounts show
From 2016 to 2025 federal spending rose 63.7%, to RM 412.70 bn. Debt charges doubled, subsidies rose fivefold and fell back, and revenue covered the running costs every year.

Every year the Accountant General's Department (JANM) publishes the federal government's audited financial statements, the Penyata Kewangan Kerajaan Persekutuan. Build Malaysia has now read ten of them, from 2016 to 2025, and recomputed every total they print from the line items beneath it. This is what a decade of those accounts shows.
The decade in five numbers
- Total federal spending rose from RM 252.17 bn in 2016 to RM 412.70 bn in 2025, up 63.7%.
- Revenue rose from RM 212.42 bn to RM 336.07 bn, up 58.2%.
- The gap between the two grew from RM 39.75 bn to RM 76.63 bn.
- Debt service charges went from RM 26.48 bn to RM 53.71 bn, 2.03 times as much.
- The COVID-19 Fund spent RM 106.71 bn from 2020 to 2022, outside the operating account.
1. Revenue paid the running costs. Borrowing paid for the rest.
In every year from 2016 to 2025, revenue was larger than operating spending: salaries, pensions, supplies, subsidies, grants and interest. The surplus was transferred to the Development Fund, RM 2.25 bn in 2016 and RM 5.29 bn in 2025.
Development spending cost more than that surplus every year, and from 2020 to 2022 so did the COVID-19 Fund (RM 38.02 bn, RM 37.71 bn and RM 30.98 bn; see the COVID-19 Fund page). The difference is the gap that borrowing covered. It peaked at RM 100.89 bn in 2022 and has narrowed every year since, to RM 76.63 bn in 2025. That is still 1.93 times the RM 39.75 bn of 2016.

Operating spending here leaves out the transfer to the Development Fund, because the fund then spends that money on development; counting both would count it twice. The methodology page explains the rule.
2. Debt charges doubled
Perbelanjaan Kerana Hutang Negara, vote T.13, is the government's debt service. It cost RM 26.48 bn in 2016 (JANM 2016, p. 72) and RM 53.71 bn in 2025 (JANM 2025, p. 97): 2.03 times as much. Over the same years total spending grew 1.64 times and revenue 1.58 times.
In 2016, debt charges took RM 12.47 of every RM 100 of revenue. In 2025 they took RM 15.98. They now cost more than the Ministry of Health spent on operating and development combined, RM 42.09 bn in 2025, and almost as much as the Ministry of Education's operating spending of RM 57.87 bn.

3. Pensions grew faster than pay
Salaries and allowances for federal employees (object group 10000, Emolumen) rose 38.8%, from RM 73.11 bn (JANM 2016, p. 212) to RM 101.45 bn (JANM 2025, p. 197). Pensions, retirement allowances and gratuities (vote T.14) rose 81.7%, from RM 20.36 bn (JANM 2016, p. 75) to RM 36.99 bn (JANM 2025, p. 99).
Pay, pensions and debt charges together took 56.5% of revenue in 2016 and 57.2% in 2025. Pensions and debt charges are charged expenditure: the law charges them on the Consolidated Fund, and Parliament does not vote on them each year.
4. Subsidies and cash aid rose fivefold, then fell back
The Treasury's general services vote, B.11, carries Subsidi dan Bantuan Tunai: subsidies and cash aid. It cost RM 9.86 bn in 2016 (JANM 2016, p. 112). It jumped to RM 46.51 bn in 2022 and peaked at RM 54.63 bn in 2023 (JANM 2023, p. 113), 5.54 times the 2016 figure. In 2025 it was RM 37.55 bn (JANM 2025, p. 121), 31.3% below the peak.
The audited statement prints this as a single activity, so it does not show how much went to fuel, food or cash transfers. See every line of the vote on the B.11 page.

5. Half of all revenue was income tax
In 2025 the federal government raised RM 336.07 bn (JANM 2025, p. 75). Income tax brought in RM 166.45 bn, 49.5% of the total. Interest and returns on the government's investments, loans and financial instruments brought in RM 43.98 bn, and service tax RM 30.29 bn. Taxes of every kind were 77.3% of revenue, against 79.7% in 2016. The revenue page has every line.

How these numbers were checked
Every figure here comes from JANM's audited statements for 2016 to 2025. Before a statement was loaded, every total it prints was recomputed from its line items, and the load was rejected if any did not match. The 2020 operating statement has no text layer and was read by OCR, and the published 2019 statement is missing one page; the methodology page sets out both. Amounts are in ringgit as printed each year, not adjusted for inflation.
Explore any year from 2016 to 2025, every ministry, or download the data. To hear when new statements and posts go up, subscribe.