---
title: "The UCITS KID / PRIIPs KID explained for developers: every field you can extract"
description: "What the PRIIPs KID is, how it replaced the UCITS KIID, every section it contains (SRI, scenarios, costs, holding period) and which fields map to API paths."
canonical: https://fundfactsapi.com/blog/ucits-kid-explained-for-developers
published: 2026-09-04
updated: 2026-09-04
publisher: FundFacts API
---

# The UCITS KID / PRIIPs KID explained for developers: every field you can extract

> What the PRIIPs KID is, how it replaced the UCITS KIID, every section it contains (SRI, scenarios, costs, holding period) and which fields map to API paths.

Every UCITS fund sold to retail investors in the EU must publish a Key Information Document, and it is the most standardised document a fund house produces: fixed sections, fixed order, a three-page limit and regulated wording. This guide walks through it section by section, explains what changed when the PRIIPs KID replaced the UCITS KIID, and shows which fields you can extract and where they land in a [FundFacts API](https://fundfactsapi.com/) response.

## KIID, KID and PRIIPs: which one are we talking about?

Two documents share almost the same name.

- The **UCITS KIID** (Key Investor Information Document) was introduced by the UCITS IV directive. Two pages, a seven-step **SRRI** risk scale and past-performance bar charts.
- The **PRIIPs KID** (Key Information Document) comes from the PRIIPs Regulation and covers every "packaged" retail product: structured products, insurance wrappers and, since **1 January 2023**, UCITS funds sold to EU retail investors. Three pages, a seven-step **SRI** risk scale and forward-looking performance scenarios.

Until the end of 2022 UCITS funds were exempt from PRIIPs and kept producing the KIID. That exemption ended, so an EU UCITS fund you look up today should have a PRIIPs KID. The United Kingdom is the important exception. After leaving the EU, the UK retained the PRIIPs rules but extended the UCITS exemption, so **UK UCITS funds have continued to publish a UCITS KIID** while the UK designs its own retail disclosure regime. If your product covers both markets, expect to parse both documents and treat the UK position as something to re-check, not a fixed fact. The glossary has short definitions of [KID](https://fundfactsapi.com/glossary/kid) and [PRIIPs](https://fundfactsapi.com/glossary/priips).

## The sections of a PRIIPs KID

The regulation prescribes the headings and their order. That consistency is exactly what a parser wants.

| Section | What it contains | Structured value you can extract |
| --- | --- | --- |
| Product | Name, ISIN, manufacturer, regulator, date of the document | `isin`, `name`, manufacturer, document date |
| Comprehension alert | Optional warning for complex products | Boolean flag |
| What is this product? | Type, term, objectives, intended retail investor | Objective text, legal structure, target investor |
| What are the risks and what could I get in return? | SRI on a 1–7 scale plus performance scenarios | `riskRating`, scenario table |
| What happens if the manufacturer is unable to pay out? | Depositary and compensation-scheme wording | Rarely structured |
| What are the costs? | Costs over time and composition of costs | Entry, exit, ongoing, transaction and performance fees |
| How long should I hold it and can I take money out early? | Recommended holding period | Integer number of years |
| Other relevant information | Links to past performance and previous scenarios | URLs |

"Purpose" and "How can I complain?" are fixed wording and contact details; skip them. The rest deserve a closer look.

### Objectives

The "What is this product?" section states the investment objective in plain language, the benchmark if there is one, whether the fund is active or tracks an index, the replication method for ETFs, and the distribution policy. In a FundFacts API response this arrives as `investmentObjective`, with the benchmark in `benchmarkName` and the policy in `keyFacts.distribution`.

### Summary Risk Indicator (SRI)

The SRI is a single integer from 1 (lowest risk) to 7 (highest). It is printed as a row of seven boxes with one highlighted, and the document must say which recommended holding period it assumes. The API exposes it as `riskRating`.

### Performance scenarios

The KIID showed a bar chart of up to ten calendar years of realised returns. The PRIIPs KID replaced that with a table of four scenarios — stress, unfavourable, moderate and favourable — each showing what a fixed investment (commonly 10,000 in the fund currency) might be worth after one year and after the recommended holding period, plus the annualised percentage. These are not forecasts; they are computed from historical data using a prescribed method, and can change materially between annual updates. Past performance moved out of the KID into a separate document that the KID links to. FundFacts API reads realised performance from the factsheet and performance pages instead, and returns it as `calendarReturns`, `cumulativePerformance` and `annualisedReturns` — see [fund performance data explained](https://fundfactsapi.com/blog/fund-performance-data-explained).

### Costs over time and reduction in yield

The cost section has two tables. **Costs over time** shows total costs in currency and as an annual percentage impact if you exit after one year and after the recommended holding period. In the original 2018 PRIIPs templates this percentage was labelled **reduction in yield (RIY)**; the revised templates that arrived with the UCITS switch call it the **annual cost impact**, but it is the same idea: how much lower your yearly return is because of costs. **Composition of costs** then breaks the total down into one-off entry and exit costs, ongoing management and administrative costs, transaction costs and incidental costs such as performance fees.

The ongoing-cost line is the closest cousin of the TER or ongoing charges figure on the factsheet, but not always identical, because PRIIPs includes transaction costs that the UCITS ongoing charges figure excludes. When you store `headlineMetrics.ter` from the API next to a KID cost line, label each with its source. See [TER vs ongoing charges](https://fundfactsapi.com/blog/ter-ongoing-charges-fund-fees).

### Recommended holding period

A single number of years, chosen by the manufacturer. It drives the scenario horizon and the cost projection, so two funds' KID costs are only comparable if they share the same holding period.

### Comprehension alert

If a product is considered complex the KID must carry the sentence "You are about to purchase a product that is not simple and may be difficult to understand." Most plain UCITS index funds do not carry it. Treat it as a boolean.

## SRI vs SRRI: not the same scale

Both indicators run from 1 to 7; the similarity ends there.

| Aspect | SRRI (UCITS KIID) | SRI (PRIIPs KID) |
| --- | --- | --- |
| Input | Five years of historical return volatility | A market-risk measure derived from a VaR-equivalent volatility over the holding period, combined with a credit-risk measure |
| Credit risk | Not included | Included |
| Horizon | Fixed look-back | Depends on the recommended holding period |
| Typical result for a broad equity index fund | Often 6 | Often 4 |
| Liquidity | Not covered | Can trigger an additional liquidity warning |

The practical consequence: a 6 from a UK KIID and a 4 from an EU KID can describe the same portfolio. Never mix the two in one column without a scale indicator. The API's `riskRating` is the indicator published in the fund's current document, so store the document type alongside it if you serve both regimes. The older scale is covered in [SRRI explained](https://fundfactsapi.com/blog/srri-risk-indicator-explained).

## Mapping KID fields to API paths

| KID field | API path |
| --- | --- |
| ISIN and fund name | `isin`, `name` |
| Objectives text | `data.investmentObjective` |
| Benchmark | `data.benchmarkName` |
| Distribution policy | `data.keyFacts.distribution` |
| Fund currency | `data.keyFacts.currency` |
| Legal structure / type | `data.structure`, `data.securityType` |
| Summary Risk Indicator | `data.riskRating` (1–7) |
| Ongoing costs | `data.headlineMetrics.ter` |
| Document date | `data.dataAsOf` |

A short TypeScript helper that fetches a fund and returns a KID-shaped summary:

```typescript
type KidSummary = {
  isin: string;
  name: string;
  objective: string;
  sri: number;
  ongoingCostPct: number | null;
  distribution: string | null;
  asOf: string;
};

export async function kidSummary(isin: string): Promise<KidSummary> {
  const res = await fetch(`https://fundfactsapi.com/api/v1/funds/${isin}`, {
    headers: { Authorization: `Bearer ${process.env.FUNDFACTS_API_KEY}` },
  });
  if (!res.ok) throw new Error(`FundFacts API ${res.status}`);
  const { data, name } = await res.json();

  return {
    isin,
    name,
    objective: data.investmentObjective,
    sri: data.riskRating,
    ongoingCostPct: data.headlineMetrics?.ter ?? null,
    distribution: data.keyFacts?.distribution ?? null,
    asOf: data.dataAsOf,
  };
}
```

Example output for `IE00B4L5Y983` (example values, shape only):

```json
{
  "isin": "IE00B4L5Y983",
  "name": "iShares Core MSCI World UCITS ETF USD (Acc)",
  "objective": "The Fund aims to achieve a return on your investment, through a combination of capital growth and income, which reflects the return of the MSCI World Index.",
  "sri": 4,
  "ongoingCostPct": 0.2,
  "distribution": "Accumulating",
  "asOf": "2026-08-31"
}
```

## Things that trip up parsers

- **Language versions.** A fund distributed in ten countries has ten KIDs with identical numbers and translated text. Pick one language for text fields and record which.
- **Annual refresh.** KIDs are reviewed at least yearly and re-issued when scenarios or the SRI change materially. Keep the document date.
- **One KID per share class.** Costs, and sometimes the SRI, differ between classes of the same fund, so key everything by ISIN.
- **UK vs EU.** A GB-domiciled fund and its Irish sibling may carry different indicators for the same strategy purely because of the SRRI/SRI difference.

FundFacts API handles the reading, the refresh and the share-class keying and returns the structured result in one call, refreshed every 24 hours. [Create a free key](https://fundfactsapi.com/signup) to try it on a KID you have in front of you.

## 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.
