How the numbers are made
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
| Year | Document | Operating totals matched | Development totals matched | COVID-19 Fund total | SHA-256 |
|---|---|---|---|---|---|
| 2025 | Penyata Kewangan Kerajaan Persekutuan 2025 | 2,474 of 2,474 | 89 of 89 | – | 5dd1673c6c42420be1b1f70cd68881358e21768e82850e864c26f2421b24a515 |
| 2024 | Penyata Kewangan Kerajaan Persekutuan 2024 | 2,280 of 2,280 | 89 of 89 | – | 779d4d313583dbeef14fbd3adfab9475305d7128165af7ae6ad8702124700d87 |
| 2023 | Penyata Kewangan Kerajaan Persekutuan 2023 | 2,201 of 2,201 | 89 of 89 | 1 of 1 | 5181b69847f4a76446453d543832a2434b9553d6e7bb543484330874e37abf77 |
| 2022 | Penyata Kewangan Kerajaan Persekutuan 2022 | 2,162 of 2,162 | 86 of 86 | 1 of 1 | 32a37d4d8ef374e92710bc987ccbf4ec63a847609accc56941c124d7c8b80871 |
| 2021 | Penyata Kewangan Kerajaan Persekutuan 2021 | 2,209 of 2,2101 printed misprint | 101 of 101 | 1 of 1 | 8fe75e5b7d7e1c839bd3f426a97d941ca76e732501dc17d5baaceb773e96763f |
| 2020 | Penyata Kewangan Kerajaan Persekutuan 2020 | 2,272 of 2,29018 printed misprints | 93 of 93 | 1 of 1 | 9f11465bd467e29e828a589875ba7e7e5dc85c2691b76bcbf259b4fde55e6695 |
| 2019 | Penyata Kewangan Kerajaan Persekutuan 2019 | 1,964 of 1,9996 printed misprints · 29 on the missing page | 95 of 95 | – | b69e78c0f0a31f14b0e48f1f83716c578ab09330dbef65cbb408d5c4c8495c36 |
| 2018 | Penyata Kewangan Kerajaan Persekutuan 2018 | 2,579 of 2,59617 printed misprints | 95 of 96 | – | 6a3a5936dc682e31a058956cdfc9c23a87fd3d507e415b18701b0c02792c30e7 |
| 2017 | Penyata Kewangan Kerajaan Persekutuan 2017 | 2,884 of 2,8873 printed misprints | 94 of 94 | – | d3a9e1d4de3af0c20a0e54984fd3a834f5f7410bee1f4a22e402c4d58ed3eae9 |
| 2016 | Penyata Kewangan Kerajaan Persekutuan 2016 | 3,017 of 3,0214 printed misprints | 95 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.
| Year | Total | Column | Printed minus its rows | Source |
|---|---|---|---|---|
| 2016 | programme T.08 010000 · object 40000 | Original budget, Revised budget, Spent | +RM 39,000.00+RM 39,000.00+RM 31,587.12 | JANM 2016, p. 68 |
| 2016 | programme B.06 520000 · object 40000 | Spent | -RM 0.13 | JANM 2016, p. 94 |
| 2016 | programme B.10 090000 | Original budget | -RM 4,100,000.00 | JANM 2016, p. 111 |
| 2016 | programme B.31 020000 · object 20000 | Spent | -RM 0.06 | JANM 2016, p. 159 |
| 2017 | programme T.08 010000 · object 40000 | Original budget, Revised budget, Spent | +RM 39,000.00+RM 39,000.00+RM 15,615.00 | JANM 2017, p. 66 |
| 2017 | activity B.11 020000 020700 | Revised budget, Spent | -RM 1,023,900.00-RM 1,023,900.00 | JANM 2017, p. 107 |
| 2017 | activity B.11 020000 020800 | Revised budget, Spent | -RM 871,900.00-RM 871,808.37 | JANM 2017, p. 107 |
| 2018 | programme B.09 030000 · object 40000 | Revised budget | +RM 5,152,600.00 | JANM 2018, p. 95 |
| 2018 | programme B.28 050000 · object 20000 | Revised budget | +RM 280,000.00 | JANM 2018, p. 145 |
| 2018 | programme B.28 050000 · object 30000 | Revised budget | -RM 280,000.00 | JANM 2018, p. 145 |
| 2018 | vote B.28 · object 20000 | Revised budget | +RM 280,000.00 | JANM 2018, p. 145 |
| 2018 | vote B.28 · object 30000 | Revised budget | -RM 280,000.00 | JANM 2018, p. 145 |
| 2018 | programme B.63 080000 · object 10000 | Revised budget | +RM 41,069,600.00 | JANM 2018, p. 200 |
| 2018 | programme B.63 080000 · object 20000 | Revised budget | +RM 30,929,340.00 | JANM 2018, p. 200 |
| 2018 | programme B.63 090000 · object 10000 | Revised budget | +RM 33,476,032.00 | JANM 2018, p. 200 |
| 2018 | programme B.63 090000 · object 20000 | Revised budget | -RM 4,559,212.00 | JANM 2018, p. 200 |
| 2018 | programme B.63 100000 · object 10000 | Revised budget | +RM 15,901,084.00 | JANM 2018, p. 201 |
| 2018 | programme B.63 100000 · object 20000 | Revised budget | +RM 6,385,524.00 | JANM 2018, p. 201 |
| 2018 | programme B.63 110000 · object 10000 | Revised budget | +RM 24,522,465.00 | JANM 2018, p. 201 |
| 2018 | programme B.63 110000 · object 20000 | Revised budget | +RM 22,446,602.00 | JANM 2018, p. 201 |
| 2018 | section · object 20000 | Revised budget | +RM 280,000.00 | JANM 2018, p. 204 |
| 2018 | section · object 30000 | Revised budget | -RM 280,000.00 | JANM 2018, p. 204 |
| 2018 | statement · object 20000 | Revised budget | +RM 280,000.00 | JANM 2018, p. 204 |
| 2018 | statement · object 30000 | Revised budget | -RM 280,000.00 | JANM 2018, p. 204 |
| 2019 | programme B.03 010000 | Revised budget, Spent | -RM 40,000.00-RM 29,294.45 | JANM 2019, p. 75 |
| 2019 | programme B.10 040000 | Revised budget, Spent | -RM 4,863,400.00-RM 4,901,640.58 | JANM 2019, p. 89 |
| 2019 | programme B.23 050000 | Spent | -RM 234,320,457.63 | JANM 2019, p. 110 |
| 2019 | programme B.43 030000 | Revised budget, Spent | +RM 9,234,420.00+RM 9,234,253.88 | JANM 2019, p. 140 |
| 2019 | programme B.47 010000 · object 30000 | Revised budget | -RM 287,100.00 | JANM 2019, p. 145 |
| 2019 | programme B.47 020000 · object 30000 | Revised budget | -RM 6,772,374.00 | JANM 2019, p. 146 |
| 2020 | programme B.27 060000 · object 20000 | Spent | -RM 0.20 | JANM 2020, p. 141 |
| 2020 | programme B.27 060000 · object 30000 | Spent | -RM 0.23 | JANM 2020, p. 141 |
| 2020 | programme B.32 030000 · object 40000 | Original budget, Revised budget, Spent | +RM 21,000.00+RM 18,000.00+RM 17,130.00 | JANM 2020, p. 152 |
| 2020 | vote B.32 · object 40000 | Original budget, Revised budget, Spent | +RM 21,000.00+RM 18,000.00+RM 17,130.00 | JANM 2020, p. 152 |
| 2020 | vote B.32 · object 50000 | Original budget, Revised budget, Spent | -RM 21,000.00-RM 18,000.00-RM 17,130.00 | JANM 2020, p. 152 |
| 2020 | activity B.42 070000 070300 | Spent | -RM 0.32 | JANM 2020, p. 160 |
| 2020 | programme B.42 070000 · object 20000 | Spent | -RM 0.32 | JANM 2020, p. 160 |
| 2020 | programme B.42 070000 | Spent | -RM 0.32 | JANM 2020, p. 160 |
| 2020 | vote B.42 · object 20000 | Spent | -RM 0.32 | JANM 2020, p. 160 |
| 2020 | vote B.42 | Spent | -RM 0.32 | JANM 2020, p. 160 |
| 2020 | section · object 20000 | Spent | -RM 0.32 | JANM 2020, p. 190 |
| 2020 | section · object 40000 | Original budget, Revised budget, Spent | +RM 21,000.00+RM 18,000.00+RM 17,130.00 | JANM 2020, p. 190 |
| 2020 | section · object 50000 | Original budget, Revised budget, Spent | -RM 21,000.00-RM 18,000.00-RM 17,130.00 | JANM 2020, p. 190 |
| 2020 | section | Spent | -RM 0.32 | JANM 2020, p. 190 |
| 2020 | statement · object 20000 | Spent | -RM 0.32 | JANM 2020, p. 190 |
| 2020 | statement · object 40000 | Original budget, Revised budget, Spent | +RM 21,000.00+RM 18,000.00+RM 17,130.00 | JANM 2020, p. 190 |
| 2020 | statement · object 50000 | Original budget, Revised budget, Spent | -RM 21,000.00-RM 18,000.00-RM 17,130.00 | JANM 2020, p. 190 |
| 2020 | statement | Spent | -RM 0.32 | JANM 2020, p. 190 |
| 2021 | programme B.24 060000 | Spent | -RM 1,000,000.00 | JANM 2021, p. 130 |