US Census of Governments Finance API
Built with the support of the Southern Economic Advancement Project.
Live API /api/v1/ — JSON envelope, governments & finance series Swagger / OpenAPI Interactive docs + schema Agent guide llms.txt — the full parameter contract, for LLM agents Bulk downloads Hugging Face — hive-partitioned parquet

Issue register

Every dataset of this size has errors in it. Most projects do not tell you what theirs are.

This page lists what we have found in the US Census of Governments Finance data — what was wrong, how it surfaced, and what we did about it. It includes problems we have not fixed yet and problems we do not expect to fix, because how some categorization and definitional issues get resolved is an analytic choice for the end user.

This publication is a vintage, not a verdict. Data gets better with use and this page is how we document that improvement.

Every entry names whoever found it. If that is you, tell us and we will credit you.


Resolved

E-001 — Hospital spending missing for seven years

Affects: Health & Hospitals category · all government types · FY2005–FY2011 Found: A summary of hospital spending showed the category present in FY2004 and FY2012 but nearly empty in between. Every figure the API returns lists which underlying Census codes went into it, and for the missing years that list was short: the codes covering hospital construction and equipment had stopped being added in, leaving only day-to-day operating costs. Impact: Roughly $70–90 billion per year — over half the Health & Hospitals category in each of those seven years — was missing from the dataset. Status: Resolved 2026-08-07 Credit: Civilytics (internal)

E-002 — Five years of state assignments were wrong for half the rows

Affects: Special districts and school districts · FY2012–FY2016 · internal validation frames Found: While fixing E-003. The Census Bureau numbered states in its own alphabetical scheme before FY2017 and switched to the standard federal numbering afterward. We read both as though they were the federal scheme, so for five years roughly half the rows carried another state’s identity. Impact: None on published figures — the published dataset was clean. The damage was to the internal comparisons we check our own totals against, which means five years of those checks had been run against partly wrong state assignments. Status: Resolved 2026-08-07. A permanent check now rejects any state number that is not a real one, and the conversion itself is verified row by row against each source file. Credit: Civilytics (internal)

E-003 — State comparison figures were meaningless for FY2012–FY2016

Affects: State-level reconciliation against Census published totals · FY2012–FY2016 Found: The same numbering change as E-002, this time in the Census file we compare our own totals against. Each state’s published figures were being checked against a different state’s figures from the dataset. The tell was in the numbering itself: the FY2012 file counts straight up with no gaps, while the FY2017 file skips three numbers. The federal scheme has gaps in it, because some numbers were never assigned. A sequence without gaps is not that scheme. Status: Resolved 2026-08-07 Credit: Civilytics (internal)

E-004 — Every recovery query stopped a year short of the data

Affects: All 24 recovery queries · FY2024 Found: When the Census Bureau changes how it groups a category, we publish a named query that rebuilds the original series across the change. All 24 of them carried an end year of 2023 while the data ran through FY2024. The giveaway was uniformity — 24 different series do not all genuinely end in the same year, so the date had been stamped in at build time rather than measured. Impact: Intergovernmental revenue series built from those queries returned nothing for FY2024, silently. Status: Resolved 2026-08-11 Credit: Civilytics (internal)

E-005 — Two unemployment-trust balances matched when they should not have

Affects: State insurance-trust balances · most state-years from FY2012 Found: A walkthrough audit. One balance is money a state holds on deposit with the US Treasury; the other is a separate reconciling figure. They measure different things and should not match — but they did in most state-years. Status: Resolved 2026-07-29 Credit: Civilytics (internal)

E-006 — Whole families of codes vanished in FY2022 with no explanation

Affects: Capital spending detail, and the breakdown of aid states pass to local governments · FY2022 onward Found: One family of codes — 42,985 records in FY2021 — is simply absent from the FY2022 source files. A second family, covering the aid states pass down to local governments, collapses rather than disappears: 27 of its 28 categories go to zero and everything lands in a single leftover “other” category. That is why a plain count of records in that family goes up across the boundary even though almost every category inside it vanished. Impact: Not a pipeline error — a real change at the Census Bureau. But because nothing was catalogued, the API said nothing about it, so a series crossing FY2022 would step down with no warning. Status: Resolved 2026-08-07 by cataloguing the break, so the API now discloses it alongside any affected figure. Credit: Civilytics (internal)

E-007 — Codes carrying real money belonged to no category

Affects: Category-level queries · multiple years Found: An audit looking for codes that had dollars attached but no place in any published category. It turned up a whole family covering direct assistance and subsidies to individuals. Impact: Money present in the dataset that no category-level query would return. Status: Resolved Credit: Civilytics (internal)

E-011 — Southern guide was a snapshot of an older version of the data

Affects: Working with the COG Finance API — a Southern guide Found: The guide fetches every figure live at the moment it is built, which makes it honest and also makes it a snapshot. It was built 8 August 2026; the data were rebuilt on 12 August, and several corrections landed at or after that point, including E-004, resolved 11 August. Resolution: Rebuilt against the current dataset on 26 August 2026. The guide carries 30 checks that hold verified figures in place and stop the build if any of them move. Exactly one fired, and no published figure changed:

Every other figure in the guide — every dollar amount, count, and finding — came out identical. The corrections between the two vintages did not move anything the guide reports. Status: Resolved 2026-08-26 Credit: Civilytics (internal)

A note on why this entry stays here even though nothing was wrong. A register that only records errors teaches you nothing about how often the checks find nothing. This is what a clean re-verification looks like, and the reason we can say the figures held is that the guide is built to stop itself if they do not.

The durable fix shipped with it. The guide now stamps which version of the the data it was built against, read from the API at build time rather than typed in, so a reader can see which snapshot they are looking at without asking us. That was the thing that made the staleness invisible, and it is closed.


Open

We have not fixed these. They are listed because you should know about them before you rely on the affected figures.

E-008 — State aid loses all detail on what it was for, from FY2022

Affects: Intergovernmental revenue from state governments · FY2022 onward What: From FY2022 the Census Bureau stopped publishing what state aid to local governments was actually for. 93% of $593 billion now arrives in a single “other” category. State education aid — $424.9 billion in FY2021, 71.7% of all state aid — can no longer be separated from highway or health aid. Why it is open: It is not recoverable. The source does not carry the detail, so no amount of work on our side restores it. What we can do is make sure no series crosses that year without saying so, and that is done. The trap: the leftover “other” category changed meaning rather than ending. It carried $40.6 billion in FY2021, 6.9% of state aid, and $661.7 billion in FY2022, which is all of it. A series built on that category alone steps up roughly sixteenfold at the seam with nothing to warn you. Status: Open — documented, not fixable

E-009 — Our own aggregate check covers only 40% of what it should

Affects: Internal validation coverage What: One of our checks confirms that a Census total equals the sum of its parts. It can only do that for groups of codes we have mapped out in advance, and we have mapped 42 of 107. For the other 65 it runs and finds nothing, because there is nothing there for it to compare. This is the gap that let E-001 go undetected as long as it did. Since fixed, and worth separating: the silence is closed even though the gap is not. Each of the 65 now carries a written reason, and the build fails if a group is neither checked nor accounted for — 36 deferred with a reason on record, 12 with no underlying detail to compare against, one where the comparison would be circular, and 16 with no decision recorded yet. The coverage figure is written out on every build instead of going unmentioned. Why it is open: Closing the gap itself means working out what belongs in each of the missing groups. That is research, not configuration. Status: Open — a hole in our testing rather than in the data

E-010 — County codes are wrong on unmatched rows

Affects: County identifiers on rows we could not match to a known government What: The county half of E-002. State numbering was fixed; county numbering on unmatched rows still carries the older scheme. Status: Open


Found a number that looks wrong?

Tell us. This is the most useful thing anyone outside this project can do.

We test the data many ways before publishing, but we cannot hand-verify a dataset of this extent, and the person comparing our figure for their county against that county’s audited financial report is a verification resource no internal process can replicate.

Email data@civilytics.com. A useful report has:

What happens next. We reply. If it is a real problem, it gets an entry on this page whether or not we can fix it. If we cannot reproduce it, we will say so and show you what we ran, because sometimes the disagreement is the finding.

Credit. Every entry names who found it, unless you ask us not to. We would rather this page filled up with other people’s names than ours — a register with only internal entries describes a project nobody is checking.

You are not required to be right. A question about a figure that looks off is welcome even if it turns out to be correct; several entries above started that way.


Sponsored by the Southern Economic Advancement Project.