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-2024.

Year coverage
20112024
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 Student Achievement (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 2023-24. District and state detail only: the source never publishes school-level revenues. The spending side of the same GOSA 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_amountRevenue 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
yearYearintegernoEnding (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 CodestringyesGOSA 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). 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). NULL on state-level rows — the bronze sentinel 'ALL' is mapped to NULL.

Joins districts; adds its label columns.

school_codeSchool CodestringyesAlways 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 SourcestringnoFunding 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 every year in this source (lottery dollars evidently flow outside this ledger) — the category is kept for grid completeness, faithful to bronze. 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.
6 allowed values
  • federal
  • local
  • other
  • state_lottery
  • state_other
  • state_qbe
revenue_amountRevenue AmountnumbercurrencyyesTotal 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 PupilnumbercurrencyyesPer-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) publish revenue_per_pupil equal to revenue_amount verbatim in EVERY year including 2023-2024 (all 438 nonzero verbatim rows across all years are exactly those RESAs). 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) publish revenue_per_pupil equal to revenue_amount verbatim in EVERY year including 2023-2024 (all 438 nonzero verbatim rows across all years are exactly those RESAs). 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 2024

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

Filtered to revenue_source = federal for 2024

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

One district (code 644), 2024

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

Download 2024 as CSV

curl "https://georgiacivicdata.org/api/v1/education/k12_revenues?year=2024&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) — exclude them when analyzing traditional districts only. State rows are published independently of district rows and do not always equal the sum of district values within a source — treat each detail level as its own published series. revenue_per_pupil is not a true per-pupil amount everywhere: a few dozen district rows per year publish it equal to revenue_amount verbatim (entities with no FTE denominator, mostly RESA rollups). 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.