Skip to content
← All datasets

K-12 Revenues by Funding Source

K-12 dollars taken in by Georgia public school districts, broken out by funding source (local, federal, state QBE, lottery, other), 2011-2025.

Year coverage
2011–2025
Updated
annual
Version
1.0.0
Schema hash
4907a5512e84

Detail levels available

StateDistrict · default

Overview

K-12 revenues for every Georgia public school district and the state as a whole, by funding source, published by the Governor's Office of Education and Workforce Strategy (GOEWS, formerly GOSA). Each row reports the total dollar amount and the per-FTE (full-time-equivalent student) dollar amount for one of 6 revenue sources — local, federal, state QBE (Quality Basic Education formula), state lottery, state other, and other — covering school years 2010-11 through 2024-25. District and state detail only: the source never publishes school-level revenues. The spending side of the same report lives in the sibling topic `k12_expenditures` (K-12 expenditures by spending function, school detail included); the two topics split the retired combined `revenues_and_expenditures` topic (one measure family per fact table) and share one bronze source, so they join cleanly on year and district_code.

Row grain: One row per year, district_code, school_code, revenue_source.

Key metric

revenue_amount — Revenue Amount (currency)

The single headline value most answers want.

Variables

Every column in the fact table. The code is the exact field name the API returns.

ColumnTypeUnitRangeNull?Description
yearYearinteger——noEnding (spring) calendar year of the school year (e.g. 2024 for 2023-24), parsed from the source's SCHOOL_YEAR / LONG_SCHOOL_YEAR column and cross-checked against the filename year.
Full description
Ending (spring) calendar year of the school year (e.g. 2024 for 2023-24), parsed from the source's SCHOOL_YEAR / LONG_SCHOOL_YEAR column and cross-checked against the filename year.
district_codeDistrict Codestring——yesGOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit compound codes for commission / state charter schools. Codes 850-888 are RESA service agencies (typed 'resa' in the dimension; present 2011-2024 only, none in 2025). NULL on state-level rows — the bronze sentinel 'ALL' is mapped to NULL.
Full description
GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit compound codes for commission / state charter schools. Codes 850-888 are RESA service agencies (typed 'resa' in the dimension; present 2011-2024 only, none in 2025). NULL on state-level rows — the bronze sentinel 'ALL' is mapped to NULL.

Joins districts; adds its label columns.

school_codeSchool Codestring——yesAlways NULL: the source publishes revenues at district and state detail only — there are no school-level revenue rows in any year (enforced by a quality check and a transform-time assertion). The column exists so every education fact table shares the same key-column shape. For school-level finance, see the sibling topic k12_expenditures (expenditures only).
Full description
Always NULL: the source publishes revenues at district and state detail only — there are no school-level revenue rows in any year (enforced by a quality check and a transform-time assertion). The column exists so every education fact table shares the same key-column shape. For school-level finance, see the sibling topic k12_expenditures (expenditures only).

Joins schools; adds its label columns.

revenue_sourceRevenue Sourcestring——noFunding source of the revenue: local, federal, state_qbe, state_lottery, state_other, or other.
Full description
Funding source of the revenue (6 values): local (local taxes and other local funds), federal, state_qbe (Georgia's Quality Basic Education formula allotment), state_lottery, state_other (state funds outside QBE and lottery), and other. NOTE: state_lottery revenue_amount is published as 0.0 on every row of 2011-2024 in this source (lottery dollars evidently flow outside this ledger); the category is kept for grid completeness, faithful to bronze. The 2025 file publishes the first nonzero lottery revenue: one district row, Cherokee County (district_code 628, 115,609.07), plus the matching state row (115,609.07); every other 2025 lottery row is 0.0 (both facts enforced by quality checks). Every district and state row set carries all 6 sources in every year (enforced by quality checks), so summing revenue_amount over the 6 sources gives the entity's total revenue as this report counts it. The federal figures suggest that is narrower than all district revenue (see limitations).
6 allowed values
  • federal
  • local
  • other
  • state_lottery
  • state_other
  • state_qbe
revenue_amountRevenue Amountnumbercurrency—yesTotal dollars received from this revenue source at the row's level; negatives are real budget adjustments.
Full description
Total dollar amount received from this revenue source at the row's detail level. Never NULL (enforced by a quality check — the source publishes no suppression). Negative values are legitimate budget adjustments / corrections and are preserved; no range check applies.
revenue_per_pupilRevenue per Pupilnumbercurrency—yesPer-FTE (full-time-equivalent student) dollar amount received from this revenue source. Can be negative (budget adjustments). NULL only in 2013-2014 where the bronze FTE denominator was missing (192 district rows; enforced by a quality check). Caution — not always a true per-pupil amount: the 16 RESA service-agency district rows (codes 850-888, no FTE denominator; published 2011-2024 only) carry revenue_per_pupil equal to revenue_amount verbatim in 2011-2012 and 2015-2024; in 2013-2014 those same 96 RESA rows per year are the NULL revenue_per_pupil rows (no FTE denominator). This includes the 2023-2024 DOE-OTHER-routed rows (all 438 nonzero verbatim rows across 2011-2024 are exactly those RESAs). The 2025 file has no RESA rows and no verbatim rows. Standard-district and state rows carry true per-FTE values. Verify revenue_per_pupil <> revenue_amount (or sanity-check the magnitude) before treating a value as per-pupil revenue.
Full description
Per-FTE (full-time-equivalent student) dollar amount received from this revenue source. Can be negative (budget adjustments). NULL only in 2013-2014 where the bronze FTE denominator was missing (192 district rows; enforced by a quality check). Caution — not always a true per-pupil amount: the 16 RESA service-agency district rows (codes 850-888, no FTE denominator; published 2011-2024 only) carry revenue_per_pupil equal to revenue_amount verbatim in 2011-2012 and 2015-2024; in 2013-2014 those same 96 RESA rows per year are the NULL revenue_per_pupil rows (no FTE denominator). This includes the 2023-2024 DOE-OTHER-routed rows (all 438 nonzero verbatim rows across 2011-2024 are exactly those RESAs). The 2025 file has no RESA rows and no verbatim rows. Standard-district and state rows carry true per-FTE values. Verify revenue_per_pupil <> revenue_amount (or sanity-check the magnitude) before treating a value as per-pupil revenue.

Filters

Query parameters the fact endpoint accepts. Comma-separated values are OR within a parameter; multiple parameters AND together.

ParameterKindAllowed valuesNotes
yearyear_exactany value—
year_minyear_rangeany value—
year_maxyear_rangeany value—
detaildetaildistrictsstatesenum-enforced, default: districts
district_codeforeign_keyany valuemulti-value
school_codeforeign_keyany valuemulti-value
revenue_sourcecategoricalfederallocalotherstate_lotterystate_otherstate_qbemulti-value, enum-enforced, pick one
district_typedimension_attribute
7 allowed values
  • commission_charter
  • resa
  • standard
  • state_agency
  • state_charter
  • state_school
  • state_special
multi-value, enum-enforced
school_leveldimension_attributeelementarymiddlehighk12othermulti-value, enum-enforced
localedimension_attributecitysuburbtownruralmulti-value, enum-enforced

Example requests

Run these against the base URL — they return live data.

All rows (first page), districts level

curl "https://georgiacivicdata.org/api/v1/education/k12_revenues"

districts data for 2025

curl "https://georgiacivicdata.org/api/v1/education/k12_revenues?year=2025"

Filtered to revenue_source = federal for 2025

curl "https://georgiacivicdata.org/api/v1/education/k12_revenues?year=2025&revenue_source=federal"

One district (code 644), 2025

curl "https://georgiacivicdata.org/api/v1/education/k12_revenues?district_code=644&year=2025&detail=districts"

Download 2025 as CSV

curl "https://georgiacivicdata.org/api/v1/education/k12_revenues?year=2025&format=csv"

Notes & limitations

NULL handling

  • Zero is a real, reported value.

Limitations

District and state detail only — the source never publishes school-level revenues, so school_code is always NULL (school-level finance exists only on the expenditure side; see the sibling topic k12_expenditures). State rows have NULL district_code and school_code. District detail includes the 16 RESA service-agency rollups (district codes 850-888) in 2011-2024 only (the 2025 file has none) — exclude them when analyzing traditional districts only. 29 of the 52 single-school charters (7-character district codes) have no 2025 revenue rows: the 2025 file publishes no district-level row for them, so a 2025 sum over district rows is not comparable with 2024 for charters (2025 district entities: 180 standard districts + 23 charters; 2024: 180 + 52 charters + 16 RESAs). State rows do not always equal the sum of all district rows within a revenue source: in 2011-2013 the state row equals the sum of all district rows (within $0.43), but from 2014 on it equals the sum of the standard districts only, excluding the charter and RESA district rows, so a sum over all district rows overstates the state total (e.g. the 2025 district rows carry $129.9M of charter state_qbe revenue that the state row leaves out; Talbot County (730) is absent from the 2018 file entirely, so the 2018 state row excludes it too) — exclude charters and RESAs to reconcile to the state row from 2014 on, and otherwise treat each detail level as its own published series. The six revenue sources look narrower than all the revenue a district takes in (the figures look like general-fund scope; GOEWS has not documented the scope): statewide federal revenue is $67.7M in 2025, 0.3% of the $25.0B total (0.3-0.5% in every year 2012-2025; 3.0% in 2011), 96 of the 180 standard districts report $0 federal revenue in 2025, DeKalb County (644) reports $0 in 2015-2023 and 2025, and Cherokee County (628) falls from $10.6M in 2011 to $0.14M in 2025. Do not read federal as all the federal aid a district receives, or the six-source sum as all district revenue. revenue_per_pupil is not a true per-pupil amount everywhere: a few dozen district rows per year in 2011-2012 and 2015-2024 publish it equal to revenue_amount verbatim (exactly the 16 RESA rollups, district codes 850-888, which have no FTE denominator; in 2013-2014 the same RESA rows are NULL instead; none in 2025). No suppression exists in this topic — NULL never means suppressed; the only NULL metric values are 192 revenue_per_pupil district rows in 2013-2014 with a missing FTE denominator. Negative dollar values are legitimate budget adjustments and are preserved.