devlog · · 3 min read

Why some values from SEC filings don't appear in our tables

Before Invest collects more data than it shows. Here's why.

One of Before Invest’s features lets you click on any figure in a financial table to pull up the official document filed with the SEC by the company.

If you do this, you might notice that some values present in the official document don’t appear in our table for certain years, despite our promise to display financial data as reported. This isn’t a bug, and I’ll explain why with a concrete example.

The Costco case

Take Costco. If you open the income statement and click on “Total revenue” for fiscal year 2025, the official document appears, and you’ll notice two lines that are present in that document but missing from the Before Invest table: Net sales and Membership fees. Yet those same lines do appear in our table up through 2017, and then vanish.

Costco 10-K · fiscal 2025 What the SEC filing shows Open the 10-K →
$ in millionsAug 31, 2025Sep 1, 2024Sep 3, 2023
Net sales269,912249,625237,710
Membership fees5,3234,8284,580
Total revenue275,235254,453242,290
Before Invest · income statement What our table shows See Costco on Before Invest →
Declared by segmentDeclared consolidated
Declared by segmentDeclared consolidated
Fiscal year2025…2024…20182017…20162015
Net sales–…–…–126,172…116,073113,666
Membership fees–…–…–2,853…2,6462,533
Total revenue275,235…254,453…141,576129,025…118,719116,199

Why the discrepancy?

Under the hood: XBRL contexts

To understand it, you need to look at how these figures are declared in the XBRL file, the standardized format that all listed companies use to submit their financial data to the SEC.

Here’s what you’ll find in Costco’s 2025 filing:

<!-- Net sales -->
<us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax contextRef="c-4" ...>
  269912000000
</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>

<!-- Membership fees -->
<us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax contextRef="c-7" ...>
  5323000000
</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>

<!-- Total revenue -->
<us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax contextRef="c-1" ...>
  275235000000
</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>

All three lines use the exact same accounting concept (RevenueFromContractWithCustomerExcludingAssessedTax), but with different contexts. That’s where everything hinges.

c-1 is the consolidated context: it represents the company as a whole over the period. This is the one Before Invest uses to build its tables.

c-4 and c-7 are dimensional contexts: they use the same accounting concept, but scoped to a specific segment, here ProductMember (merchandise sales) and MembershipMember (membership fees). In XBRL, this is called an explicit member on an axis (ProductOrServiceAxis).

This wasn’t the case in 2017, when Net sales and Membership fees were declared in the consolidated context, which is why they appear in the Before Invest table up to that year. Starting with fiscal 2018, Costco moved those two lines into dimensional contexts. Same data, different declaration.

The SEC itself shows the same thing. EDGAR, its filing system, has its own XBRL viewer. Instead of showing the document as Costco laid it out, it rebuilds the financial statements from the XBRL data alone, the same data Before Invest reads. Open Costco’s 2025 filing in that viewer, click Consolidated Statements Of Income in the menu, and you’ll see exactly what our table shows: Total revenue, with no Net sales or Membership fees line.

What Before Invest does with this data

Before Invest collects and stores all the dimensional data in every document filed with the SEC, but doesn’t display it in the tables yet.

The reason is straightforward: breakdown axes vary considerably from one year to the next, and from one company to another. Without reliable normalization, it’s impossible to build tables that are comparable over time, which is the whole point of Before Invest. Displaying raw segment data without being able to unify it wouldn’t deliver the analytical value it deserves.

The groundwork is done. Finding the best way to surface this data is the next challenge, maybe with some help from AI.

Vincent Lagache · Founder