Skip to content

Instantly share code, notes, and snippets.

@komuw
Last active June 11, 2025 06:24
Show Gist options
  • Save komuw/b7fc41d1cf018bc14f945a010a2045f0 to your computer and use it in GitHub Desktop.
Save komuw/b7fc41d1cf018bc14f945a010a2045f0 to your computer and use it in GitHub Desktop.
cost/spending of public primary, jss and secondary education in kenya
# we are going to try estimate the amount of money the govt(ahem, taxpayer) spends per public school student per year/term.
# We are only interested in the figures for students in PUBLIC primary, jss AND secondary schools.
# All the figures here come from the 2024/25 supplementary estimates I.
# see: https://mwangocapital.com/wp-content/uploads/2024/07/fy-24-25-supplementary-1-.pdf
# aka, the one that was sent to parliament after the 2024/25 finance bill was rejected.
# 2025/26
# https://www.treasury.go.ke/wp-content/uploads/2025/05/FY-2025-26-Program-Based-Budget-Book.pdf
# https://www.treasury.go.ke/budget-books-1/
# https://openbudget.or.ke/
# Number of learners.
# We are only interested in primary, jss & secondary school figures.
# See page 221 of the supplementary estimates.
learners_in_public_primary_sch = 6_450_133 # 6million
learners_in_jss = 3_312_865
learners_in_sec_sch = 3_244_325
learners_in_adult_education = 151_000
learners_provided_with_sch_meals = 4_000_000
total_public_learners = learners_in_public_primary_sch + learners_in_jss + learners_in_sec_sch
total_public_learners = 13_007_323 # 13million.
# Spending for basic education
# See page 229 of the supplementary estimates.
free_primary_education = 21_633_795_702 # KES 21 billion
pri_special_needs_education = 681_248_083
ecde = 18_448_319
pri_teachers_training_in_servicing = 389_469_379
adult_education = 55_275_376
expanding_edu_in_asals = 400_000_000
free_sec_edu = 94_599_910_071 # KES 94 billion
sec_teachers_services = 231_689_981
sec_teachers_training_in_servicing = 252_582_688
sec_special_needs_education = 200_000_000
curriculum_devpt = 1_098_221_559
exams_and_certification = 1_827_000_000
co_curriculum_activities = 1_329_508_180
hq_admin_services = 1_537_919_228
county_admin_services = 3_070_957_202
total_basic_education = (
free_primary_education
+ pri_special_needs_education
+ pri_teachers_training_in_servicing
+ expanding_edu_in_asals
+ free_sec_edu
+ sec_teachers_services
+ sec_teachers_training_in_servicing
+ sec_special_needs_education
+ curriculum_devpt
+ exams_and_certification
+ co_curriculum_activities
+ hq_admin_services
+ county_admin_services
)
assert total_basic_education == 127_252_302_073 # KES 127 billion
# Spending for TSC. We are only interested in TSC spending specifically for primary, jss & secondary(ie, excluding tertiary)
# See page 865 of the supplementary estimates.
teacher_mgmnt_primary = 196_127_073_024 # KES 196 billion
teacher_mgmnt_secondary = 137_015_327_079
teacher_mgmnt_tertiary = 4_533_870_504
governance_and_standards = 1_104_431_830
general_admin = 9_107_215_823
# For `governance_and_standards` & `general_admin`, it is not broken down. ie, it's hard to know what percentage of say `general_admin` is dedicated
# for the general_admin of primary, secondary or tertiary.
# But since `teacher_mgmnt_tertiary` is 1.34% of the total for teacher_mgmnt. We will aportion `governance_and_standards`, `general_admin` in same ratios.
# ie,
governance_and_standards_primary_and_secondary = 1_104_431_830 - ((1.34 / 100) * 1_104_431_830)
governance_and_standards_primary_and_secondary = int(governance_and_standards_primary_and_secondary)
assert governance_and_standards_primary_and_secondary == 1_089_632_443
general_admin_primary_and_secondary = 9_107_215_823 - ((1.34 / 100) * 9_107_215_823)
general_admin_primary_and_secondary = int(general_admin_primary_and_secondary)
assert general_admin_primary_and_secondary == 8_985_179_130
# Thus
total_tsc_for_primary_and_secondary = (
teacher_mgmnt_primary
+ teacher_mgmnt_secondary
+ governance_and_standards_primary_and_secondary
+ general_admin_primary_and_secondary
)
assert total_tsc_for_primary_and_secondary == 343_217_211_676 # KES 343 billion
total_basic_education_budget_spending = total_basic_education + total_tsc_for_primary_and_secondary
assert total_basic_education_budget_spending == 470_469_513_749 # 470 billion
total_spending_per_learner_per_year = total_basic_education_budget_spending / total_public_learners
total_spending_per_learner_per_year = int(total_spending_per_learner_per_year)
assert total_spending_per_learner_per_year == 36_169 # KES 36k per learner per year.
total_spending_per_learner_per_term = total_spending_per_learner_per_year / 3
total_spending_per_learner_per_term = int(total_spending_per_learner_per_term)
assert total_spending_per_learner_per_term == 12_056 # KES 12k per learner per term.
# Do note that the maths is not perfect.
# For instance, the country spends KES 1.8 billion on exams and certification per year.
# I have counted that money as part of the expense for public education.
# But strictly speaking, that money is spent on both public & private
# Since private schools use the same kcpe/kcse provided by govt.
# But this estimates are not meant to be a perfect.
# In any case, if we assume that curriculum_devpt, exams_and_certification, hq_admin_services &
# governance_and_standards_primary_and_secondary are shared between public & private schools
# And we thus exclude them from the calculation.
# The cost drops from KES 36,169 to KES 35,742 per public student per year.
#
@komuw
Copy link
Author

komuw commented May 29, 2025

To understand the appropriations bill;

There are about 5 books/pdfs per year:

  1. Program-Based-Budget-Book
  2. Development-Budget-Book-Vol-1
  3. Development-Budget-Book-Vol-2
  4. Development-Budget-Book-Vol-3
  5. Recurrent-Budget-Book-Vol-1
  6. Recurrent-BudgetBook-Vol-2
    This can be downloaded from https://www.treasury.go.ke/budget-books-1/
    Also compare with https://openbudget.or.ke/
  7. Estimates of revenue grants and loans:
  • In each book you want to search for Total Voted Expenditure.
  • The values for Total Voted Expenditure in each Development budget book are going to be equal to each other, ie; it contains the total for all the devpt buget books instead of each book recording a total of just its book.
  • The values for Total Voted Expenditure in each Recurrent budget book are going to be equal to each other, ie; it contains the total for all the recurrent buget books instead of each book recording a total of just its book.
  • The values for Total Voted Expenditure in the Program-Based-Budget-Book contains the total of both the development and recurrent books.
    Let's take an example from the 2025/2026 books and take State Department for Forestry.
    In the Program-Based-Budget-Book it is listed as; KES 8,932,168,653(gross current estimates) 4,057,041,057(gross capital estimates) 12,989,209,710(gross total estimates)
    In the Recurrent budget book it is listed as; KES 8,932,168,653(gross estimates) 4,950,000,000(aia) 3,982,168,653(net estimates)
    In the Development budget book it is listed as; KES 4,057,041,057(gross estimates) 1,276,000,000(aia) 2,781,041,057(net estimates)
    See; 12,989,209,710 = 8,932,168,653 + 4,057,041,057. ie, the total in program-based-budget is equal to total from recurrent and development budgets.
    Notice also that the gross/total amounts in both recurrent and development budget books already includes AIA/loans/grants. eg 4,057,041,057 == 1,276,000,000 + 2,781,041,057
    This also means that the total amounts in Program-Based-Budget-Book also include AIA/loans/grants.
  • In the Program-Based-Budget-Book;
    (a) the term gross current estimates means the value from the recurrent expenditure. ie, current == recurrent
    (b) the term gross capital estimates means the value from the development expenditure. ie, capital == development
    (c) the term Appropriations in Aid(AIA/aia) means either grants, loans or fees collected by the agency in question.
  • In Program-Based-Budget-Book look for CONSOLIDATED FUND SERVICES;
    (a) GRAND TOTAL INTERNAL DEBT - INTEREST
    (b) Interest - Internal
    (c) Interest- External
    (d) PENSIONS, SALARIES & ALLOWANCES AND OTHERS
  • In the 2025/2026 Program-Based-Budget-Book, the total expenditure is KES 2,428,394,968,440 (kes 2.43trillion).
    This is the total government expenditure(both recurrent + development).
    Note that this figure is inclusive of AIA/grants/loans.
    This is about KES 2.43 trillion.
  • In the 2025/2026 Program-Based-Budget-Book, the total consolidated fund services had expenditure of KES 2,141,025,101,165 (kes 2.14trillion).
    This includes; internal & external debt interests, internal & external debt redemptions, pensions, subscriptions to international organisations(like UN, etc), salaries & allowances for constitutional office holders.
    Interest is KES ~850b(internal), 240b(external)
    Redemptions is KES ~460b(internal), 340b(external)
    Pensions is KES ~230b
  • To find road maintenance levy, search for sub programme Maintenance of Roads under State Department for Roads in Program-Based-Budget-Book. The key outputs are named Transfer of receipts.
    For example for 2025/2026 it is listed as (115,582,269,200). This figure matches the one reported in the news of 115b; https://www.businessdailyafrica.com/bd/economy/where-rise-in-road-maintenance-levy-will-hurt-most-4692312
    .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment