The SEC's own API will hand you a number 1,000 times too large

Vince Holding's net income is $6.378 million in its 10-K and $6,378 million in the frames API. Both come from the SEC. Here is why, and how to catch it.

Published Data as of Aug 24, 2026 Sources 4 primary By Yu Han

VNCE

In short

The SEC's XBRL frames API reports Vince Holding's fiscal 2025 net income as $6,378,000,000. The company's own 10-K reports $6,378,000. The gap is exactly 1,000x.

Means
The API took the figure from a DEF 14A proxy statement where it was tagged in the wrong units. Frames selects by period and tag; it does not care which form a number came from.
Market
This is not an error response. It returns HTTP 200 with valid JSON, and every type and null check passes. Only a comparison against the annual report catches it.
Watch
Any screen with a size threshold inherits it. A company with $6.4m of profit lands in a list of billion-dollar earners, and nothing in the response says so.

Ask the SEC how much money Vince Holding made last year and you can get two answers, both from the SEC, that differ by a factor of a thousand.

The same figure, two SEC endpoints

Form 10-K $6,378,000 XBRL frames API $6,378,000,000 ────────────── 1,000×

Both retrieved 24 August 2026 for the fiscal year ended 31 January 2026. Vince Holding is a clothing retailer; CIK 0001579157.

We hit this while building a screen. It is worth writing down, because nothing about the wrong answer looks wrong.

What actually happened

The frames API answers a question of the form “give me this tag, in this unit, for this period, across every filer.” It returns one value per company.

To do that it has to choose. A company may report the same figure in several documents, and for Vince Holding’s fiscal 2025 there were two: the annual report, and the proxy statement sent to shareholders before the annual meeting.

DocumentPeriodReported
Form 10-K2 Feb 2025 – 31 Jan 2026$6,378,000
Form DEF 14Asame period$6,378,000,000

The proxy is tagged in the wrong units. The 10-K is right. Frames returned the proxy.

The same thing happened the year before, in the same direction: $19,047,000 in the 10-K, $19,047,000,000 in the proxy.

This is not the SEC making an error. The endpoint selects by period and tag; it does not promise to prefer a 10-K, and the documentation does not say it will. It relayed a number a company filed. The company filed a bad number in one of its documents.

Why it survives every check you would normally run

Here is the part that matters if you build anything on this data.

CheckResult
HTTP status200
JSON validYes
Field present, correct typeYes
Value non-null, non-zero, positiveYes
Units field says USDYes
Value inside a plausible range for “a company”Yes — $6.4bn is an ordinary number

Every defensive check most pipelines have passes. The value is only wrong relative to the same company’s other filings, and nothing in the response points there.

The first seven traps we have written up in this project were of a different kind: a tag missing, a period mislabelled, a company switching tags mid-series. Those make a number absent or inconsistent, and absence is loud — the missing-tag case, where 526 filers use an element most screens never query, is one of three ways reported capex understates spending. This one makes a number present and wrong, which is quiet.

What it breaks

Anything with a threshold or a ranking.

Our screen asked for companies above $1 billion of net income whose free cash flow had fallen — the screen itself is published here. Vince Holding entered that list. It is a clothing retailer whose operating cash flow for the year was $2,987,000 — a company whose entire cash generation is a third of one percent of the profit the API attributed to it.

That mismatch is what made us look. It is also not a rule you can automate, because most companies with odd cash-to-profit ratios are simply companies with odd cash-to-profit ratios.

The check that works

One extra request per company that survives your screen.

The company concept endpoint returns every filing of a given tag for one company, each labelled with its form. Ask for the same tag and compare.

https://data.sec.gov/api/xbrl/companyconcept/CIK0001579157/us-gaap/NetIncomeLoss.json

The response puts them side by side:

FormValue
10-K6,378,000
10-K6,378,000
DEF 14A6,378,000,000

If the frames figure does not match an annual report figure for the same period, drop the company and say so.

Do not require an exact match

This is the part we got wrong first, and it cost us three healthy companies.

Proxy statements routinely round to the nearest million. Our first version required the frames value to equal a 10-K value exactly, and it threw out Thermo Fisher, Chipotle and Corpay — none of which had anything wrong with them.

0x 250x 500x 750x 1000x $1,535,761,000 in the 10-K, $1,536,000,000 in the proxy — a 0.016% difference Chipotle (rounding) 1.00016x $6,378,000 in the 10-K, $6,378,000,000 in the proxy Vince Holding 1000x
Two discrepancies at very different scales. A tolerance anywhere between them separates rounding from a units error; we use 1%, which is 64 times the rounding gap and a hundredth of the real one. Source: SEC company concept API, retrieved 24 August 2026

Chipotle’s proxy figure differs from its 10-K by 0.016%. Vince Holding’s differs by 99,900%. A 1% tolerance sits comfortably between them — 64 times the rounding gap, and nowhere near the real error. We settled there.

The point generalises: you are not hunting for disagreement, you are hunting for a change in magnitude. Write the rule that way and it stays quiet on the cases that do not matter.

What this does not mean

It does not mean the data is unreliable. The SEC’s structured filings are the best public financial dataset that exists, they are free, and the overwhelming majority of what is in them is clean. In the screen that turned this up, one company out of forty-six was affected.

It means the dataset is exactly as good as what was filed into it, and that a pipeline which never looks at a second document has no way of knowing which is which. The safeguard costs one request per surviving company and a few lines of code.

What would make this wrong

  • We have not audited how frames chooses. We observed the behaviour on two consecutive years for one company. The SEC does not document a form-type preference, and we are not claiming to know the selection rule.
  • The proxy may be tagged correctly for a purpose we do not understand. We treat the 10-K as authoritative because it is audited; that is a judgement, not a rule the API states.
  • One company is one company. We are not claiming a rate. What we can say is that a screen of 3,631 filers surfaced this once, and that once was enough to put a wrong name in a published table if we had not checked.
  • The 1% tolerance is a choice, calibrated on the four examples we hit. A different dataset may need a different number, and the reasoning matters more than the value.

Check it yourself

Open the company concept link below. Search the response for 6378000 and you will find both values, each with its form field. The frames link returns the larger one for CIK 1579157.

Our implementation of the comparison is a function called verifyAgainstFilings in the screen script in this site’s repository, and the tolerance is one constant at the top of it.

If a figure here does not match a filing, tell us and it will be corrected on the article and on the corrections log, with the date.

Questions this answers

Is there an error in the SEC's XBRL frames API?
The API faithfully relays what companies file, and companies sometimes file the same figure differently in different documents. For Vince Holding's fiscal year ended 31 January 2026, the 10-K reports net income of $6,378,000 while a DEF 14A proxy statement reports $6,378,000,000. The frames endpoint returns the second figure, because it selects by period and tag rather than by form type.
How do you detect a misfiled XBRL value?
Compare the frames value against the same company's annual report using the company concept endpoint, which returns every filing of that tag side by side with its form type. If the frames figure does not match a 10-K, 20-F or 40-F value for the same period within a small tolerance, treat it as suspect.
Why not require an exact match against the 10-K?
Because proxy statements routinely round to the nearest million. Chipotle's 10-K figure of $1,535,761,000 appears as $1,536,000,000 in its proxy, a difference of 0.016%. An exact-match rule drops healthy companies. A 1% tolerance keeps them and still catches a 1,000x error.
What kinds of analysis does this break?
Anything with a size threshold or a ranking. A screen for companies above $1 billion of net income will include a company that earned $6.4 million. A sum across filers will be overstated. A 'largest movers' list will be led by an artefact. None of these produce an error message.
Does this mean XBRL data cannot be trusted?
It means it cannot be trusted alone. The SEC's structured data is the best public financial dataset available and most of it is clean. The safeguard is cheap: one extra API call per company that survives your screen, comparing the value you are about to publish against the annual report it should have come from.

Verify this yourself

4 primary sources

Every figure on this page came from the documents below — not from summaries, databases, or other articles. Open them and check the numbers.

  1. SEC company concept API — Vince Holding Corp, NetIncomeLoss The 10-K value ($6,378,000) and the DEF 14A value ($6,378,000,000) appear in the same response, each labelled with its form OPEN ↗
  2. SEC XBRL frames API — NetIncomeLoss, CY2025 Returns 6378000000 for CIK 1579157 · re-verified 24 August 2026 OPEN ↗
  3. Vince Holding Corp — SEC EDGAR filing history (CIK 0001579157) Fiscal year ends the Saturday closest to 31 January OPEN ↗
  4. SEC — Frames API documentation The endpoint selects one fact per entity per period; the documentation does not promise a form type OPEN ↗

Data as of Aug 24, 2026 · figures may be restated by the issuer after this date

Found a number that doesn't match the filing? Confirmed corrections are published on the corrections log, with the date and what changed.

This article is for informational purposes only and is not investment advice. Figures come from public filings as of the date noted above and may be restated later. Verify independently before making any investment decision.