---
title: "What happens if I send a stock, bond or index ISIN?"
description: "The API only knows funds. A valid ISIN that is a stock, bond, certificate or index returns 404 fund_not_found with reason not_a_fund and an empty data skeleton, and is not counted. How to tell the cases apart."
canonical: https://fundfactsapi.com/answers/what-happens-if-the-isin-is-a-stock-or-index
published: 2026-09-12
updated: 2026-10-01
publisher: FundFacts API
---

# What happens if I send a stock, bond or index ISIN?

**Short answer:** A syntactically valid ISIN that is not a covered fund (a share, bond, certificate, index or a delisted fund) returns 404 fund_not_found with the empty data skeleton and an error.reason: not_a_fund for a share or bond, issuer_not_covered or documents_unreadable for a fund FundFacts cannot read yet. It is not counted (up to 15 misses a month or the plan's allowance if larger), and neither is a malformed ISIN, which returns 400 invalid_isin. Validate the format locally first, treat not_a_fund as final, and let FundFacts recheck the others: it e-mails you when they are covered.

## The two errors

| Status | `error.code` | When | Counted |
|---|---|---|---|
| 400 | `invalid_isin` | Not 12 characters, wrong pattern or bad check digit | No |
| 404 | `fund_not_found` | Valid ISIN, but no fund data: stock, bond, index, structured product, delisted or not-yet-covered fund | No, up to 15 misses a month (or the plan's allowance if larger) |

```json
{ "error": { "code": "fund_not_found", "reason": "not_a_fund", "instrument": "common stock", "message": "This ISIN is a common stock, not a fund or ETF. FundFacts only covers funds. This lookup was not counted." }, "isin": "US0378331005", "billed": false }
```

## Why a 404 is free

The API cannot know an ISIN is a stock without trying, and a fund it cannot read yet is a gap on FundFacts' side, not a use of the data. So a miss is not counted, up to 15 a month or the plan's allowance if larger; past that, misses count like answers, so they cannot be used to run the loader without limit. Pending and invalid entries are never counted.

## Avoiding it

- **Validate locally.** 12 characters, two letters, nine alphanumerics, one Luhn check digit; the [ISIN validator](https://fundfactsapi.com/tools/isin-validator) page shows the algorithm and the SDKs include it.
- **Know the prefixes.** Fund ISINs are mostly IE, LU, FR, DE, GB, CH, AT, NL, BE, DK, FI, SE, NO, IT, ES; a US-prefixed ISIN is usually a stock, though US-listed ETFs also exist.
- **Search first.** `GET /search?q=` (free) confirms a fund is in the store before you spend a request.
- **Remember the answer.** Store the 404 with its `reason` and do not re-send a `not_a_fund` ISIN. Coverage gaps are rechecked for you, and you get an e-mail when one loads.

## A real fund that returns 404

It happens when the fund house is not yet covered (`reason: issuer_not_covered`), its documents cannot be read (`documents_unreadable`) or the share class is delisted. The ISIN is queued automatically: FundFacts reloads it regularly and e-mails you when it has data. [Reporting it](https://fundfactsapi.com/contact) speeds that up; adapters are added by demand. For a PDF you already have, `POST /extract` (Pro and above) returns the same JSON shape.

## FAQ

### What does 502 upstream_error mean?

The fund house's site or document could not be fetched at that moment. Retry after a minute, at most twice; it is not counted.

## About FundFacts API

FundFacts turns any fund or ETF ISIN into one dated factsheet (fees and KID costs, the 1–7 risk indicator, holdings, sector and country exposure, returns) read from the fund house's own documents: as a client-ready PDF under your firm's name for advisers and wealth managers, as JSON through its API for developers, or inside ChatGPT and Claude through its MCP server.

FundFacts works inside ChatGPT and Claude as a connector (a remote MCP server): ask about any fund or ETF by ISIN, ticker or name and the assistant answers from FundFacts' dated figures, fees, risk, holdings, exposure and returns, with fund cards, side-by-side comparisons, holdings overlap and portfolio look-through.

- Free API key, no card: https://fundfactsapi.com/signup
- Documentation: https://fundfactsapi.com/docs (OpenAPI: https://fundfactsapi.com/openapi.json)
- MCP server: https://fundfactsapi.com/api/mcp (set-up for every client: https://fundfactsapi.com/mcp-server)
- Pricing: https://fundfactsapi.com/pricing
- Site index for AI assistants: https://fundfactsapi.com/llms.txt
- Informational data, not investment advice.
