Spots

I built an API that checks whether SEC financial data adds up

I'm a solo developer in Canada, and I built BalanceProof: an API for SEC EDGAR fundamentals on 6,000+ US public companies, where every balance sheet, income statement and cash flow is checked against its own totals before you get it.

The video above is the 33-second version. This

The video above is the 33-second version. This post is the longer one: what it does, why I bothered, and how to try it for free.

If you have ever pulled fundamentals out of

If you have ever pulled fundamentals out of SEC filings yourself, you know the numbers are not as tidy as the filings look on paper. XBRL is flexible, which is great for filers and painful for anyone reading it in bulk. The same concept can be tagged several ways. Segment figures sit next to consolidated ones. Later filings recast earlier periods. A pipeline that grabs "the" total assets for a company can quietly grab the wrong one.

Most data sources hand you a number either

Most data sources hand you a number either way. You find out it was wrong when a ratio looks strange, or you never find out. I hit every one of these while building the data load: An early load dropped 37 companies because of a CIK-to-ticker mapping bug.

8-K recast filings once made Stryker's Q4 and

8-K recast filings once made Stryker's Q4 and full-year figures collide. The fix was to read only periodic reports (10-K and 10-Q) and purge 81,397 rows that came from non-periodic filings. JPMorgan tags "Total assets" in 23 different ways in one filing.

None of those show up as an error

None of those show up as an error. The request succeeds, the numbers look plausible, and they are quietly wrong or missing. That is what pushed me to test the data against itself.

So that became the product. Every period is

So that became the product. Every period is tested against accounting identities that must hold if the figures are right: Balance sheet: assets = liabilities + equity Income statement: revenue - cost of revenue = gross profit Cash flow: operating + investing + financing + FX = change in cash

A filing that does not add up is

A filing that does not add up is not passed through silently. It is flagged, with the reason. Figures are as filed, not smoothed over.

For a concrete example, Apple's 10-Q for the

For a concrete example, Apple's 10-Q for the quarter ended 27 Jun 2026 (filed 31 Jul 2026) reports total assets of $383.27B, liabilities of $275.75B and shareholders' equity of $107.52B. 275.75 + 107.52 = 383.27, so it passes. Microsoft's 10-K for the year ended 30 Jun 2026: assets $758.38B, liabilities $315.99B, equity $442.39B. Also passes. (Company numbers here are examples of data checks, not investment advice.) Python quickstart (free tier) Grab a free key at https://balanceproof.dev/dashboard (no card), then:

balance_sheet returns the latest filed balance sheet, with

balance_sheet returns the latest filed balance sheet, with assets, liabilities and equity line items and a list of any data quality issues. statements returns one entry per period with the income statement, the cash flow, the filing date, a derived list, and a checks list. Each check has a name, the rule it tested, and a status of passed, failed or not_testable (the last one names the missing figures).

News

I built an API that checks whether SEC financial data adds up

I'm a solo developer in Canada, and I built BalanceProof: an API for SEC EDGAR fundamentals on 6,000+ US public companies, where every balance sheet, income statement and cash flow is checked against its own totals before you get it.

@spots #dev
Source: Dev.to
See more like this