Skip to content
Methodology

How the numbers are made

What the documents' terms mean, where every figure comes from, and the checks each load must pass before it reaches this site.

What the terms mean

Vote Maksud
The unit in which Parliament approves spending, usually one per ministry or department. The statements and the budget books list spending vote by vote, each with a code.
B., P. and T. codes Bekalan, Pembangunan, Tanggungan
B is a supply vote (Bekalan): operating spending Parliament votes each year. P is a development vote (Pembangunan): spending on projects. T is charged expenditure (Tanggungan): spending charged on the Consolidated Fund by law, such as debt service, pensions and judges' pay, which is not voted each year. A ministry's supply and development votes share a number: B.63 and P.63 are the Ministry of Education. P.70 is the contingency reserve the budget books print as Simpanan Luar Jangka.
Operating and development Mengurus, Pembangunan
Operating expenditure runs the government: salaries, supplies and services, grants, debt interest and pensions (B and T votes). Development expenditure builds and upgrades things, project by project, under a five-year Malaysia Plan (P votes).
Original and revised budget Asal, Jumlah / Anggaran Dipinda
The original budget (Asal) is what Parliament approved before the year began. During the year supplementary allocations (Tambahan) and money moved between lines (Viremen) change it; the result is the revised budget, which the statements print as Jumlah and the budget books as Anggaran Dipinda. % used (Prestasi) compares what was spent (Sebenar) with the revised budget, and unspent (Varian) is the revised budget less what was spent.
Programmes and activities Program, Aktiviti
Each operating vote is split into programmes, and each programme into activities, each with a six-digit code. The statements report spending at every level and print a total for each.
Spending categories Objek
Within each activity, spending is split by what the money paid for: emoluments (Emolumen, 10000), supplies and services (Perkhidmatan dan Bekalan, 20000), assets (Aset, 30000), grants and fixed charges (Pemberian dan Kenaan Bayaran Tetap, 40000) and other expenditure (Perbelanjaan-perbelanjaan Lain, 50000).
RMKe-12 Rancangan Malaysia Kedua Belas
The Twelfth Malaysia Plan, 2021–2025: the five-year plan development projects were approved under. The development statements report each project's spending under the current plan to date (RMKe-11, the Eleventh Plan, covers 2016–2020).
Posts Bil. Jawatan
The number of established positions the budget book prints for an activity, against its emoluments.

Where the numbers come from

Every number on this site comes from the Penyata Kewangan Kerajaan Persekutuan (Federal Government Financial Statements), published each year by Jabatan Akauntan Negara Malaysia (JANM) and audited by the National Audit Department. The documents are public and freely downloadable from the JANM website.

Operating spending comes from Lampiran 1, Penyata Perbelanjaan Mengurus (Statement of Operating Expenditure). For each vote it shows, by programme, activity and object group, the original estimate (Asal), supplementary allocation (Tambahan/(Kurangan)), virement (Viremen), revised total (Jumlah) and actual spending (Sebenar). Variance (Varian) and utilisation (% Prestasi) are derived from those columns and not stored. The printed % Prestasi sometimes contradicts its own row; the site computes it instead.

Development spending comes from Lampiran 2, Penyata Perbelanjaan Pembangunan (Statement of Development Expenditure). Each row is printed across a two-page spread. The left page gives the project code, name, total cost and spending under the current Malaysia Plan up to the end of the previous year. The right page gives the year's estimate and actual spending, each split into direct (Cara Langsung) and loan-funded (Pinjaman), and plan spending to date. Within each row, previous plan spending plus the year's actual must equal plan spending to date, which also proves the two halves of the spread were paired correctly. 2021 is the first year of the Twelfth Malaysia Plan: its left column counts the Eleventh Plan to 2020 and its right column the Twelfth Plan, so there the year's actual must equal plan spending to date.

From 2020 to 2023 the statements also include Lampiran 3, Penyata Perbelanjaan Kumpulan Wang COVID-19: the COVID-19 Fund's programmes, each with its ceiling, the year's allocation and spending, and spending since 2020. The fund was financed outside the operating account, so its spending adds to operating and development spending.

Total federal spending is operating plus development, less the transfer from the operating account to the Development Fund (Kumpulan Wang Pembangunan). That fund pays for development spending, so the transfer would otherwise be counted twice. Operating, development and COVID-19 Fund spending for every loaded year match data.gov.my's published figures to the million, with one exception: for 2023 development, data.gov.my reports RM96,091 million and the statement prints RM96,089.7 million.

2020 is not loaded yet. Its operating statement is printed as drawn shapes with no text layer, so it can only be read by optical character recognition, which this site does not yet rely on.

Numbers are stored in integer sen (1 RM = 100 sen). Every total the documents print is stored alongside the rows and recomputed from them before a load is accepted. A load with even one mismatch is rejected. Where the PDF's text cannot be read literally (an empty cell, a misprinted code, text the page does not draw), a named rule handles that one pattern, every use is logged with its page, and the totals check still covers the result. Each number links to the PDF page it was read from.

Sources and live checks

YearDocumentOperating totals matchedDevelopment totals matchedCOVID-19 Fund totalSHA-256
2025Penyata Kewangan Kerajaan Persekutuan 20252,474 of 2,47489 of 89–5dd1673c6c42420be1b1f70cd68881358e21768e82850e864c26f2421b24a515
2024Penyata Kewangan Kerajaan Persekutuan 20242,280 of 2,28089 of 89–779d4d313583dbeef14fbd3adfab9475305d7128165af7ae6ad8702124700d87
2023Penyata Kewangan Kerajaan Persekutuan 20232,201 of 2,20189 of 891 of 15181b69847f4a76446453d543832a2434b9553d6e7bb543484330874e37abf77
2022Penyata Kewangan Kerajaan Persekutuan 20222,162 of 2,16286 of 861 of 132a37d4d8ef374e92710bc987ccbf4ec63a847609accc56941c124d7c8b80871
2021Penyata Kewangan Kerajaan Persekutuan 20212,209 of 2,2101 printed misprint101 of 1011 of 18fe75e5b7d7e1c839bd3f426a97d941ca76e732501dc17d5baaceb773e96763f
2020Penyata Kewangan Kerajaan Persekutuan 20202,272 of 2,29018 printed misprints93 of 931 of 19f11465bd467e29e828a589875ba7e7e5dc85c2691b76bcbf259b4fde55e6695
2019Penyata Kewangan Kerajaan Persekutuan 20191,964 of 1,9996 printed misprints · 29 on the missing page95 of 95–b69e78c0f0a31f14b0e48f1f83716c578ab09330dbef65cbb408d5c4c8495c36
2018Penyata Kewangan Kerajaan Persekutuan 20182,579 of 2,59617 printed misprints95 of 96–6a3a5936dc682e31a058956cdfc9c23a87fd3d507e415b18701b0c02792c30e7
2017Penyata Kewangan Kerajaan Persekutuan 20172,884 of 2,8873 printed misprints94 of 94–d3a9e1d4de3af0c20a0e54984fd3a834f5f7410bee1f4a22e402c4d58ed3eae9
2016Penyata Kewangan Kerajaan Persekutuan 20163,017 of 3,0214 printed misprints95 of 95–f2b9c42832890eb2a6521229341d7814c52aee7f8f523a4bca8a3cf502a6c26c

Budget 2027

The budget pages come from the Ministry of Finance's Anggaran Perbelanjaan Persekutuan 2027 (SHA-256 5caf1cc1a4416e21912e4a450f66add2e7d34ee684d8e10de4e5717be42457a9). Its summary pages give each vote's actual spending for two years, the current budget and the proposed one. Its detail tables give every operating vote's programmes and activities by object group, with established posts, and every development vote's projects with total cost and the proposed direct and loan-funded amounts.

  • Operating detail: 2,354 of 2,354 printed totals equal the sum of their activity lines.
  • Development detail: 85 of 85 group and vote totals equal the sum of their projects, and every vote agrees with the book's development appendix (Lampiran D).
  • 136 of 136 vote totals in the detail tables equal the same votes in the summary pages.
  • MOF's printed actuals agree with the audited statements for 272 of 272 vote figures, all within RM 1.45: MOF prints whole ringgit, and rounds either each figure or the parts it adds.

Activity codes are reused for different activities from one year to the next (B.64 020400 is Universiti Putra Malaysia in the 2025 statement and Universiti Sains Malaysia in Budget 2027), so the site compares budgets with spending by vote, where the budget restates past actuals itself, and never matches activities across documents by code.

Budget 2026

The budget pages come from the Ministry of Finance's Anggaran Perbelanjaan Persekutuan 2026 (SHA-256 e2eaeedf711be21dff09ef4409882de25b3e48f936bc3c9c07f95dc8fac7cdf0). Its summary pages give each vote's actual spending for two years, the current budget and the proposed one. Its detail tables give every operating vote's programmes and activities by object group, with established posts, and every development vote's projects with total cost and the proposed direct and loan-funded amounts.

  • Operating detail: 2,482 of 2,482 printed totals equal the sum of their activity lines.
  • Development detail: 86 of 86 group and vote totals equal the sum of their projects, and every vote agrees with the book's development appendix (Lampiran D).
  • 136 of 136 vote totals in the detail tables equal the same votes in the summary pages.
  • MOF's printed actuals agree with the audited statements for 272 of 272 vote figures, all within RM 0.59: MOF prints whole ringgit, and rounds either each figure or the parts it adds.
  • The book's original estimate for 2025 equals the audited statement's original estimate (Asal) for 53 of 53 operating votes.Below vote level the book restates 2025 in its own structure (Budget 2026, for example, spreads the 2025 public service pay adjustment, SSPA, which the statement keeps as an activity of its own, across other activities), so its activity figures for that year are not the ones Parliament approved.

Activity codes are reused for different activities from one year to the next (B.64 020400 is Universiti Putra Malaysia in the 2025 statement and Universiti Sains Malaysia in Budget 2027), so the site compares budgets with spending by vote, where the budget restates past actuals itself, and never matches activities across documents by code.

Budget 2025

The budget pages come from the Ministry of Finance's Anggaran Perbelanjaan Persekutuan 2025 (SHA-256 0a96d0a4c468b701482c2b1d0b00a1770c6c0d24391c52bc5d5bf28fda6710e6). Its summary pages give each vote's actual spending for two years, the current budget and the proposed one. Its detail tables give every operating vote's programmes and activities by object group, with established posts, and every development vote's projects with total cost and the proposed direct and loan-funded amounts.

  • Operating detail: 2,488 of 2,488 printed totals equal the sum of their activity lines.
  • Development detail: 86 of 86 group and vote totals equal the sum of their projects, and every vote agrees with the book's development appendix (Lampiran D).
  • 136 of 136 vote totals in the detail tables equal the same votes in the summary pages.
  • MOF's printed actuals agree with the audited statements for 278 of 278 vote figures, all within RM 0.98: MOF prints whole ringgit, and rounds either each figure or the parts it adds.
  • The book's original estimate for 2024 equals the audited statement's original estimate (Asal) for 42 of 53 operating votes. The other differences add up to exactly zero: the book restates the year in its own ministry structure, after money moved between votes when ministries were reorganised.Below vote level the book restates 2024 in its own structure (Budget 2026, for example, spreads the 2025 public service pay adjustment, SSPA, which the statement keeps as an activity of its own, across other activities), so its activity figures for that year are not the ones Parliament approved.

Activity codes are reused for different activities from one year to the next (B.64 020400 is Universiti Putra Malaysia in the 2025 statement and Universiti Sains Malaysia in Budget 2027), so the site compares budgets with spending by vote, where the budget restates past actuals itself, and never matches activities across documents by code.

Statements read by OCR

The published 2020 Statement of Operating Expenditure (Lampiran 1) has no text layer, so its figures were read from the page. The PDF still draws every character as a vector outline, so the position of each character, and the pattern of digits, commas, periods and dashes in each cell, come from the PDF itself rather than from OCR.

Each amount cell is read by OCR at 15 settings. A reading counts only if it fits the cell's drawn pattern character for character, and the cell takes a reading that at least 8 settings agree on, with no rival reading held by more than half as many. Where no reading clears that bar, the cell is read by eye from the page image and registered with an image of the cell. Every printed total is then recomputed from its rows exactly as in other years: it either matches or is a misprint confirmed on the page and listed below. Programme and activity names are OCR readings; the totals check does not cover them.

2020: tesseract 5.5.3; glyph boxes from pdftocairo version 26.10.0 -svg.

Pages missing from a published statement

The FY2019 PDF skips one page of Lampiran 1, and no complete copy is published anywhere we could find. Every row that is printed is loaded. A total whose rows were on the missing page cannot be recomputed, so it is checked against the totals printed above and below it instead, and the vote totals come from the same statement's English Attachment 1. No figure is estimated or filled in.

  • 2019 B.05 programme 030000 (activities after 030100, and its total); 2019 B.06 programme 010000 (activities before 010600)PDF p89 (book p.77) ends inside B.05 programme 030000 after 'Jumlah 030100' and '(disambung...)'; PDF p90 (book p.78) opens 'B.06 JABATAN PERDANA MENTERI – (SAMB.)' and programme 010000 '(SAMB.)' at activity 010600. The appendix's own page counter, printed beside the book page, goes from 41 to 43: one page of Lampiran 1 is not in the file. Missing: the rest of B.05 programme 030000, its programme and vote totals, B.06's heading and programme 010000's activities before 010600. B.05's vote totals are taken from Attachment 1 (English), PDF p335. Searched without finding a complete copy: JANM's current file and penyata-kewangan-2019.pdf, the 2022 Wayback capture, and CMD.28.2020

Totals the statements misprint

These printed totals disagree with the rows under them in the published statement itself: errors in the document, not in the load. Each is registered in the pipeline with the evidence, the load accepts exactly this difference and no other, and the site shows the printed figure. A misprint in one row repeats in every total above it, so one error can appear at programme, vote, section and statement level.

YearTotalColumnPrinted minus its rowsSource
2016programme T.08 010000 · object 40000Original budget, Revised budget, Spent+RM 39,000.00+RM 39,000.00+RM 31,587.12JANM 2016, p. 68
2016programme B.06 520000 · object 40000Spent-RM 0.13JANM 2016, p. 94
2016programme B.10 090000Original budget-RM 4,100,000.00JANM 2016, p. 111
2016programme B.31 020000 · object 20000Spent-RM 0.06JANM 2016, p. 159
2017programme T.08 010000 · object 40000Original budget, Revised budget, Spent+RM 39,000.00+RM 39,000.00+RM 15,615.00JANM 2017, p. 66
2017activity B.11 020000 020700Revised budget, Spent-RM 1,023,900.00-RM 1,023,900.00JANM 2017, p. 107
2017activity B.11 020000 020800Revised budget, Spent-RM 871,900.00-RM 871,808.37JANM 2017, p. 107
2018programme B.09 030000 · object 40000Revised budget+RM 5,152,600.00JANM 2018, p. 95
2018programme B.28 050000 · object 20000Revised budget+RM 280,000.00JANM 2018, p. 145
2018programme B.28 050000 · object 30000Revised budget-RM 280,000.00JANM 2018, p. 145
2018vote B.28 · object 20000Revised budget+RM 280,000.00JANM 2018, p. 145
2018vote B.28 · object 30000Revised budget-RM 280,000.00JANM 2018, p. 145
2018programme B.63 080000 · object 10000Revised budget+RM 41,069,600.00JANM 2018, p. 200
2018programme B.63 080000 · object 20000Revised budget+RM 30,929,340.00JANM 2018, p. 200
2018programme B.63 090000 · object 10000Revised budget+RM 33,476,032.00JANM 2018, p. 200
2018programme B.63 090000 · object 20000Revised budget-RM 4,559,212.00JANM 2018, p. 200
2018programme B.63 100000 · object 10000Revised budget+RM 15,901,084.00JANM 2018, p. 201
2018programme B.63 100000 · object 20000Revised budget+RM 6,385,524.00JANM 2018, p. 201
2018programme B.63 110000 · object 10000Revised budget+RM 24,522,465.00JANM 2018, p. 201
2018programme B.63 110000 · object 20000Revised budget+RM 22,446,602.00JANM 2018, p. 201
2018section · object 20000Revised budget+RM 280,000.00JANM 2018, p. 204
2018section · object 30000Revised budget-RM 280,000.00JANM 2018, p. 204
2018statement · object 20000Revised budget+RM 280,000.00JANM 2018, p. 204
2018statement · object 30000Revised budget-RM 280,000.00JANM 2018, p. 204
2019programme B.03 010000Revised budget, Spent-RM 40,000.00-RM 29,294.45JANM 2019, p. 75
2019programme B.10 040000Revised budget, Spent-RM 4,863,400.00-RM 4,901,640.58JANM 2019, p. 89
2019programme B.23 050000Spent-RM 234,320,457.63JANM 2019, p. 110
2019programme B.43 030000Revised budget, Spent+RM 9,234,420.00+RM 9,234,253.88JANM 2019, p. 140
2019programme B.47 010000 · object 30000Revised budget-RM 287,100.00JANM 2019, p. 145
2019programme B.47 020000 · object 30000Revised budget-RM 6,772,374.00JANM 2019, p. 146
2020programme B.27 060000 · object 20000Spent-RM 0.20JANM 2020, p. 141
2020programme B.27 060000 · object 30000Spent-RM 0.23JANM 2020, p. 141
2020programme B.32 030000 · object 40000Original budget, Revised budget, Spent+RM 21,000.00+RM 18,000.00+RM 17,130.00JANM 2020, p. 152
2020vote B.32 · object 40000Original budget, Revised budget, Spent+RM 21,000.00+RM 18,000.00+RM 17,130.00JANM 2020, p. 152
2020vote B.32 · object 50000Original budget, Revised budget, Spent-RM 21,000.00-RM 18,000.00-RM 17,130.00JANM 2020, p. 152
2020activity B.42 070000 070300Spent-RM 0.32JANM 2020, p. 160
2020programme B.42 070000 · object 20000Spent-RM 0.32JANM 2020, p. 160
2020programme B.42 070000Spent-RM 0.32JANM 2020, p. 160
2020vote B.42 · object 20000Spent-RM 0.32JANM 2020, p. 160
2020vote B.42Spent-RM 0.32JANM 2020, p. 160
2020section · object 20000Spent-RM 0.32JANM 2020, p. 190
2020section · object 40000Original budget, Revised budget, Spent+RM 21,000.00+RM 18,000.00+RM 17,130.00JANM 2020, p. 190
2020section · object 50000Original budget, Revised budget, Spent-RM 21,000.00-RM 18,000.00-RM 17,130.00JANM 2020, p. 190
2020section Spent-RM 0.32JANM 2020, p. 190
2020statement · object 20000Spent-RM 0.32JANM 2020, p. 190
2020statement · object 40000Original budget, Revised budget, Spent+RM 21,000.00+RM 18,000.00+RM 17,130.00JANM 2020, p. 190
2020statement · object 50000Original budget, Revised budget, Spent-RM 21,000.00-RM 18,000.00-RM 17,130.00JANM 2020, p. 190
2020statement Spent-RM 0.32JANM 2020, p. 190
2021programme B.24 060000Spent-RM 1,000,000.00JANM 2021, p. 130