Guide · 20 filers read from SEC EDGAR on 14 October 2026
Which XBRL tag is free cash flow, and why the obvious one is wrong
There is no tag for free cash flow. You build it from two, and both of them have aliases that a lot of large companies quietly stopped using years ago. The old tag does not disappear when a company abandons it. It keeps answering, with whatever number was true the last time anyone filed it, and nothing in the response says so.
Ask SEC EDGAR for Amazon's capital expenditure using the tag everyone reaches for first and you get $6,737m. Amazon spent $131,819m. The first figure is real, correctly filed and ten years old. That is the whole problem in one line: the failure mode here is not an error message, it is a plausible number.
The two tags, and the arithmetic
Free cash flow, in the form almost every valuation uses, is cash generated by the business minus what it spent on the assets it runs on:
NetCashProvidedByUsedInOperatingActivities minus
PaymentsToAcquirePropertyPlantAndEquipment
Both come from the cash flow statement, both are tagged in the us-gaap namespace,
and you fetch each one on its own from the company concept endpoint:
https://data.sec.gov/api/xbrl/companyconcept/CIK0001018724/us-gaap/PaymentsToAcquireProductiveAssets.json
That is it for the happy path. The rest of this page is the ways it goes wrong, every one of them checked against live filings rather than remembered.
Two details that are easy to miss before anything else can be right. Filter to
annual forms, which means 10-K for domestic filers and 20-F or
40-F for foreign ones, because the same tag also carries quarterly facts. And check
the period length: subtract start from end and keep only facts covering
roughly a year, since a 52-week retailer year and a leap year are both normal and a stray
nine-month stub is not.
Trap one: the tag that answers but stopped years ago
Five of the twenty companies below report capital expenditure under
PaymentsToAcquireProductiveAssets. Several of those used
PaymentsToAcquirePropertyPlantAndEquipment first and moved. EDGAR keeps serving the
old tag, because the old filings are still real filings. If your code takes the first tag that
returns HTTP 200, this is what you get:
| Company | Tag you probably tried first | What it returns | Tag the company actually uses now | What it returns |
|---|---|---|---|---|
| Amazon | PaymentsToAcquirePropertyPlantAndEquipment | $6,737m FY2016 |
PaymentsToAcquireProductiveAssets | $131,819m FY2025 |
| Nvidia | PaymentsToAcquirePropertyPlantAndEquipment | $139m FY2012 |
PaymentsToAcquireProductiveAssets | $6,042m FY2026 |
| AT&T | PaymentsToAcquirePropertyPlantAndEquipment | $20,647m FY2017 |
PaymentsToAcquireProductiveAssets | $20,842m FY2025 |
Amazon is a twentyfold error. Nvidia is worse in proportion and obvious enough that somebody would probably catch it. AT&T is the dangerous one: $20,647m against $20,842m, a difference of one percent, from a filing eight years apart. Nothing about that number looks wrong. It would sit in a model for years.
The same thing happens on the cash flow side.
NetCashProvidedByUsedInOperatingActivitiesContinuingOperations still answers for Apple
with FY2016, for Microsoft with FY2017, for Intel with FY2018 and for Exxon with FY2016, long after
each moved to the shorter tag. Twelve of the twenty companies have at least one abandoned tag that
is still happily returning a frozen number.
The rule that fixes it. Ask every candidate tag, then keep the one whose newest annual fact is newest. Never the first that returns something. It costs one extra request per field and it is the difference between a valuation and a fabrication.
Trap two: there is no single capex tag to begin with
Here is what twenty large filers actually use, read on 14 October 2026:
| Capital expenditure tag | Companies | Which ones |
|---|---|---|
| PaymentsToAcquirePropertyPlantAndEquipment | 13 | AAPL, MSFT, GOOGL, META, TSLA, XOM, JNJ, WMT, PG, PFE, INTC, BA, MRK |
| PaymentsToAcquireProductiveAssets | 5 | NVDA, AMZN, CVX, T, GE |
| No capital expenditure tag at all | 1 | JPM |
| Endpoint returns nothing (see trap four) | 1 | KO |
Operating cash flow is tidier but not tidy. Eighteen use
NetCashProvidedByUsedInOperatingActivities, General Electric uses the continuing
operations variant as its live tag, and Coca-Cola returns nothing at all.
Two more capex spellings exist and are worth asking for even though they are rare here:
PaymentsForCapitalImprovements, which Walmart last used in FY2012, and
PaymentsToAcquireOtherPropertyPlantAndEquipment, which none of these twenty use.
Trap three: when both tags are live and they disagree
General Electric files both operating cash flow tags for the same year, FY2025, with different values:
| Tag | Period | Value |
|---|---|---|
| NetCashProvidedByUsedInOperatingActivities | FY2025 | $8,537m |
| NetCashProvidedByUsedInOperatingActivitiesContinuingOperations | FY2025 | $8,543m |
Six million dollars apart on eight and a half billion, so it changes nothing in a valuation. But it breaks the rule from trap one, because newest-wins cannot choose between two facts with the same date. You have to decide which question you are asking. Continuing operations excludes businesses being sold or wound down, which is usually what you want when you are forecasting forward. The total is what the company actually banked.
For a company in the middle of a large disposal those two numbers are not six million apart. Prefer one explicitly, record which you used, and show it next to the figure.
Trap four: a 200 that contains nothing
Ask the company concept endpoint for Coca-Cola's operating cash flow and it answers normally.
Status 200, valid JSON, a units object with a USD key. The array under
that key is empty. Asked four times in a row, it was empty every time.
The same tag, for the same company, fetched through the bulk company facts endpoint, holds 51 annual facts, the most recent being FY2025 at $7,408m. Capital expenditure is the same story: nothing from one endpoint, 51 annual facts and $2,112m from the other.
So an empty answer is not evidence that a company does not report something. Treat zero facts and a 404 as different things: the 404 means the tag was never used, the empty array means you have learned nothing and should ask somewhere else before concluding anything.
This one cost us a live bug, found while writing this page. Ask the lookup behind our own calculator for Coca-Cola today and it fails outright rather than returning the figures that a different endpoint would have given it. Failing is better than inventing a number, but it is not the right answer when the data exists one endpoint over, and it is being fixed.
Trap five: some companies have no free cash flow to compute
JPMorgan has never used any of the four capital expenditure tags. Not once. And its FY2025 operating cash flow is negative $147,782m, which is not distress, it is what a bank's cash flow statement looks like when lending and deposits move through it.
Subtracting a missing capex from that produces a number, and that number means nothing. Banks, insurers and most financial companies need a different approach entirely. The honest response from a tool is to say so rather than to show a confident figure built on an irrelevant one.
What a correct lookup does, in order
- Ask every candidate tag for the field, not the first one.
- Keep only annual forms, and only facts whose period is roughly a year long.
- Among the tags that returned facts, use the one whose newest fact is newest.
- When two tags are live for the same period, pick one deliberately and say which.
- Treat an empty array and a 404 as different outcomes.
- Anchor every balance sheet figure to the annual period end and drop anything more than about 45 days away, instead of mixing dates.
- When a field cannot be filled, leave it blank and say so. Never carry over the value from the company you looked at before. That one has bitten us, and the output looked perfectly reasonable, which is what made it dangerous.
All seven rules are in the code behind this site's calculator and its company pages, which is why those pages print the tag and the period next to every figure. If a number is wrong there, you can see immediately whether the arithmetic or the source is at fault.
Check this yourself
Every figure above comes from one script hitting SEC EDGAR, and both the script and its output are published rather than described:
- fcf-tag-survey.json, the full result for all twenty companies, including the tags that returned nothing.
- fcf-tag-survey.py, the script that produced it. Run it and the numbers regenerate. If it disagrees with this page, the script is right and the page is stale.
EDGAR itself is free, needs no key, and asks only for a descriptive User-Agent and no more than ten requests a second.
Read from SEC EDGAR on 14 October 2026 · figures are annual filings only · corrections welcome at [email protected]
Want the arithmetic without the plumbing? The calculator applies all seven rules to any SEC filer and shows you the tag behind every number it filled in.
Open the calculator