> ## Documentation Index
> Fetch the complete documentation index at: https://docs.topograph.co/llms.txt
> Use this file to discover all available pages before exploring further.

# France

> Country-specific identifiers, data sources, and implementation details

<Warning>
  This guide is outdated and will be removed on 1 November 2026. The up-to-date France reference is on the [France country page](https://www.topograph.co/countries/fr).
</Warning>

## Start here

This guide contains public integration notes for France. Use it for identifier formats, search behavior, and country-specific caveats. The live source of truth for coverage, pricing, data sources, documents, legal forms, roles, and status values is the pricing page.

<Card title="France coverage, pricing, and sources" icon="arrow-up-right-from-square" href="https://topograph.co/pricing/fr">
  Open the current catalog for supported datapoints, documents, sources, identifiers, and availability.
</Card>

<Note>
  Country details below are preserved as integration notes. If a table or example conflicts with the live pricing page, use the pricing page as the source of truth and contact support.
</Note>

## Table of Contents

* [Data Sources](#data-sources)
* [Company Identifiers](#company-identifiers)
* [Search Capabilities](#search-capabilities)
* [Prefill mode (fast retrieval)](#prefill-mode-fast-retrieval)
* [Quirks & Gotchas](#quirks--gotchas)
* [Mappings](#mappings)
* [Data Availability](#data-availability)
* [Example API Responses](#example-api-responses)

## Data Sources

France uses multiple official registries. For a given entity, **company data comes from a single primary source**, chosen by a deterministic priority chain that returns data from the first matching source. A few enrichments are layered on top: the employee count from SIRENE, collective proceedings from BODACC on the company status, and the VIES VAT check in verification mode.

### Commercial companies & sole entrepreneurs

* **RNE (Registre National des Entreprises)** -- Operated by the INPI since January 1, 2023, the RNE replaced and unified three former registries: the RNCS (Registre National du Commerce et des Societes), the Repertoire des Metiers, and the Registre des Actifs Agricoles. This is our **primary source for the vast majority of French entities**. When a company is found in the RNE, all structured attributes come from the RNE: company name, legal form, status, incorporation date, registered address, share capital, activity codes, legal representatives, UBOs, and establishments.
* **SIRENE (INSEE)** -- The SIRENE repertoire, managed by the INSEE since 1973, covers \~25 million enterprises. Used in two ways: **(1)** as a **supplement to RNE** for employee count range (expressed in tranches, e.g. "50 to 99 employees" -- note: figures can be 2-3 years old per INSEE methodology); **(2)** as a **standalone fallback** for entities that exist in INSEE but are not yet in the RNE, providing a limited dataset only (company name, legal form, activity code, status, employee count, and the entrepreneur as legal representative for sole entrepreneurs -- no other legal representatives, and no UBOs).
* **BODACC (Bulletin Officiel des Annonces Civiles et Commerciales)** -- Operated by the DILA. Used in two ways: **(1)** its collective-proceeding announcements (redressement, liquidation judiciaire, sauvegarde) update the status of companies found in the RNE or SIRENE; **(2)** as an **exceptional last resort** when an entity appears in none of the above registries (not in RNE, not in SIRENE, not in RNA). This represents a negligible fraction of queries. When used as the source, company data and current office holders are extracted from legal announcement text, with representative and other key person capacities returned separately.
* **Infogreffe** -- Used only for **documents**: the K-Bis (certified trade register extract) and the trade register history (Historique des modifications). It is **not** a structured data source for company attributes.

### Non-profits

* **RNA Waldec** -- Non-profits (associations declarees) that have been created or have declared a modification since 2009. Our primary source for non-profits. Enriched with SIRENE data when a SIREN is available.
* **RNA Import** -- Historical non-profits created since 1901 that have not declared any change since 2009. Fallback when not found in RNA Waldec.
* **RNA Alsace-Moselle** -- Non-profits (associations de droit local) in departments 57 (Moselle), 67 (Bas-Rhin), and 68 (Haut-Rhin), which operate under local law and are excluded from the national RNA.

<Note>
  **RNA data is periodically synchronized** (monthly from data.gouv.fr) because no live API exists for the RNA registries. This is the only available access method provided by the French government for non-profit data.
</Note>

<AccordionGroup>
  <Accordion title="When do non-profits appear in RNE vs RNA vs SIRENE?">
    * **RNA**: All non-profits are automatically registered when declared at the prefecture (RNA number: W + 9 digits)
    * **SIRENE**: Non-profits must register if they seek public subsidies, employ staff, or are subject to VAT/corporate tax (SIREN: 9 digits)
    * **RNE**: Non-profits with SIRENE registration and business-like activities may also appear in INPI's unified register, which provides comprehensive data including UBOs

    **Key Takeaway:** All non-profits are in RNA, but only those with economic activities may also appear in RNE. Prefer the RNA number as the API identifier.
  </Accordion>
</AccordionGroup>

### Data Source Priority & Routing

For a given entity, **data comes from a single primary source** -- the system does not merge attributes from multiple registries (all-or-nothing model). The exceptions are the **employee count**, always sourced from SIRENE; the **company status**, which BODACC collective-proceeding announcements can update; and the **VIES VAT check**, added in verification mode.

<Note>
  **Source Priority for Commercial Companies & Sole Entrepreneurs (SIREN lookup):**

  1. **RNE (INPI)** -- Query to the INPI registry (with automatic fallback if the live API is temporarily unavailable)
  2. **SIRENE-only** -- For entities in INSEE but not in RNE (limited dataset: name, legal form, activity, status, employee count)
  3. **RNA tables** -- Waldec, Import, and Alsace-Moselle (first match wins)
  4. **BODACC** -- Last resort, for entities with legal announcements but no registry data (data extracted from announcement text)

  **Source Priority for Non-profits (RNA lookup):**

  1. Check if the RNA number has a SIREN in SIRENE. If yes, check if that SIREN exists in RNE. If yes, use RNE data
  2. **RNA Waldec** -- Non-profits created or modified since 2009
  3. **RNA Import** -- Historical non-profits (no changes declared since 2009)
  4. **RNA Alsace-Moselle** -- Local law non-profits (departments 57, 67, 68)

  **Recommended:** query non-profits by their RNA number. It reaches the RNA records and the JOAF publications. A SIREN also resolves, but returns the trade register or SIRENE view of the entity.
</Note>

### Verification Status and Source Labels

In verification mode, current RNE data is reported as `live_from_registry` with `register: "inpi"`, including when its freshness has been confirmed without a new register lookup. This applies to RNE fields in company details, legal representatives, other key persons, and establishments.

Check `request.dataStatus.dataPoints` for each requested datapoint's `status` and `authoritative` value. Check `dataSources` for the source of individual fields. These describe different aspects of the response: an authoritative result can still contain fields from other sources, such as INSEE employee counts or BODACC proceedings.

If RNE freshness cannot be confirmed and a previous record is returned as a fallback, its fields retain `cached_from_registry`. Prefill results can also carry this label. Selecting verification mode does not make every fallback or supplementary field live.

### Attribute-Level Source Mapping

When data comes from the RNE (the vast majority of commercial companies and sole entrepreneurs), the following table shows the source for each attribute:

| Attribute | Source | Notes |
| - | - | - |
| Company name, legal form, status | **RNE** | From formality data |
| Registered address | **RNE** | Registered address from the RNE filing |
| Share capital | **RNE** | Amount, currency, variable/fixed |
| Activity codes (APE/NAF) | **RNE** | Supplemented by SIRENE for some entities |
| Business purpose description | **RNE** | Corporate purpose from the RNE filing |
| Legal representatives | **RNE** | From formality *pouvoirs* data |
| Shareholders | **Filed documents at INPI** | AI-extracted from the documents the company filed (statutes, capital changes, annual filings) |
| UBOs | **RNE** | From *beneficiaires effectifs* with ownership modalities |
| Establishments | **RNE** | Main + secondary, each with its own activity codes (APE/NAF, NACE, ISIC) when the register records them |
| **Employee count range** | **SIRENE (INSEE)** | Always from SIRENE, even when RNE is primary -- expressed in tranches, can be 2-3 years old |
| **Former legal names** | **SIRENE (INSEE)** | `legacyLegalNames`, most recent first. Legal names a company held before its current one, from INSEE's name history. Not returned for sole entrepreneurs or associations. Changes to this list do not trigger monitoring notifications; a rename is reported through `legalName` |

When the primary source is SIRENE-only or BODACC, the available attributes are significantly more limited (see Data Availability Matrix below).

### UBO Data Handling

<Tip>
  **Live UBO Fetching:** When UBO data is not yet available for a company, the system automatically fetches it live from the INPI registry. This ensures UBO data is always current, even for newly registered companies.
</Tip>

<Info>
  **Data Lineage (Upcoming):** We are planning to add explicit source traceability to our data model, so that each attribute group in the API response will carry metadata indicating the source registry name and retrieval timestamp.
</Info>

#### Enriched UBO data with customer INPI credentials

By default, Topograph queries INPI with a service account that returns UBO
data with personal fields (date of birth, full address, nationality, place
of birth) redacted per RGPD. If your organisation has one or more INPI
accounts that carry the `ROLE_RBE_BENEFICIAL_OWNERS` and
`ROLE_RBE_BENEFICIAL_OWNERS_PDF` roles (granted by INPI to obliged
entities), you can provide those credentials to unlock the full UBO dataset
and a richer synthesis PDF (`ultimateBeneficialOwnersCertificate` document) for your own requests.

You can register several INPI accounts. Requests are spread across them and
fail over automatically if one account expires, is locked, or hits its
rate limit, so your enriched UBO access stays available.

When customer credentials are provisioned:

* The `ultimateBeneficialOwners` datapoint is fetched under your INPI
  account and carries the un-redacted personal fields.
* The `ultimateBeneficialOwnersCertificate` document (synthesis PDF) is fetched under your INPI
  account and contains the richer content that INPI reserves for
  RBE-authorised accounts.
* Both the datapoint result and the downloaded PDF are isolated to your account.
  No other customer can observe or read your enriched response.

When no customer credentials are provisioned, Topograph returns the default redacted INPI response. Switching from the default path to customer credentials, or rotating them, always produces a fresh INPI fetch; no stale cross-regime data is ever served.

The `inpi_extract` (uncertified trade register extract) document always
uses the default service account, even when customer credentials are
provisioned. RBE enrichment only affects the UBO-focused synthesis PDF.

<Info>
  You add your INPI accounts yourself, on the workspace that should use them:
  in the dashboard under **Workspaces → Vault**, or with
  `PUT /v2/workspaces/{name}/vault/fr_inpi`. Credentials are encrypted on
  write, are never returned back, and can be rotated at any time without data
  loss. See [Register Credentials](/essentials/register-credentials) for the
  payload shape and how a workspace inherits credentials. If you are not sure
  which RBE roles your INPI account carries, contact **[support@topograph.co](mailto:support@topograph.co)**.
</Info>

## Company Identifiers

### Query Identifiers

| Company Type | Source | Format | Example | Notes |
| - | - | - | - | - |
| **Commercial companies & sole entrepreneurs** | RNE | 9 digits (SIREN), leading zeros significant | `932884117` | Standard business identifier. The ninth digit is a check digit (Luhn) |
| **Non-profits** | RNA | W + 9 digits | `W073000441` | Recommended, even if a SIREN exists. In Corsica: `W2A` or `W2B` + 7 digits |
| **Older non-profits (RNA Import)** | RNA | Up to 15 letters, digits and hyphens, typically 3 digits + a letter + digits | `332P2214500` | Non-profits with no change declared since 2009. Other shapes we return: `382S03394`, `051S00-011`, `623S0623001470` |
| **Alsace-Moselle non-profits** | RNA AM | A + year(4) + court(3) + seq(6), 14 characters | `A2002THI000075` | AMALIA number, the id search returns for these non-profits |

<Tip>
  **Alsace-Moselle Format Breakdown:** `A2002THI000075` = `A` (prefix) + `2002` (usually the year of registration) + `THI` (code of the registering court, e.g. THI = Thionville, MET = Metz, SAG = Sarreguemines) + `000075` (sequence)
</Tip>

<Warning>
  **Strict format validation on `/v2/company`**

  The `id` of a company request must be a 9-digit SIREN or an RNA non-profit id, exactly as `/v2/search` returns it. A 14-digit SIRET, a VAT number (`FRXX` + SIREN or 11 bare digits) or any other all-digit input is rejected immediately with **HTTP 400 (`invalid_request`)**, before any request is created or billed. This is distinct from `resource_not_found`, which means the identifier was well-formed but no entity exists behind it.

  SIRET and VAT numbers are supported in `/v2/search`, which resolves them to the canonical SIREN. Pass that SIREN to `/v2/company`. For a SIRET you can also simply take its first 9 digits.
</Warning>

<Warning>
  **Critical: RNA vs SIREN for Non-profits**

  Non-profits may have both an RNA number and a SIREN number. **Use the RNA number as the API ID**: it reaches the RNA records and the JOAF publications. Querying by SIREN also resolves, but returns the trade register or SIRENE view of the entity.
</Warning>

### Identifiers in API Response

Once you retrieve company data, the `identifiers` object contains all available identifiers for that entity:

| Identifier Type | Format | Example | Found In |
| - | - | - | - |
| `siren` | 9 digits, leading zeros significant | `932884117` | Commercial companies, sole entrepreneurs, some non-profits |
| `siret` | 14 digits (head office SIRET); the last digit is a check digit | `93288411700023` | Entities registered in SIRENE, some non-profits |
| `VAT` | 11 digits (2 check digits + SIREN; the FR prefix is stripped) | `21932884117` | Commercial companies, sole entrepreneurs |
| `rna` | W + 9 digits (W + 2A/2B + 7 digits in Corsica), or an RNA-Import id of up to 15 letters, digits and hyphens | `W073000441` | Non-profits |
| `rnaAlsaceMoselle` | A + year(4) + court(3) + seq(6) | `A2002THI000075` | Alsace-Moselle non-profits (with `rna` when one exists) |

### Legal Entity Identifier (LEI)

GLEIF is the supplementary data source for this identifier.

`company.identifiers.lei` is optional. It is returned when the SIREN (`siren`) matches exactly one LEI through a GLEIF registration or validation reference.

The [Legal Entity Identifier](https://www.gleif.org/en/about-lei/introducing-the-legal-entity-identifier-lei) has 20 uppercase alphanumeric characters, ending in two check digits.

Coverage varies by entity. An absent `lei` does not prove that the company has no LEI. Lapsed, retired or merged LEIs may be returned; annulled LEIs are excluded.

## Search Capabilities

| Search Type | Pattern | Example | Match Type | Expected Results |
| - | - | - | - | - |
| By SIREN | 9 digits | `932884117` | Exact | Exact match returned first (matchType: id); other results may follow |
| By SIRET | 14 digits | `93288411700023` | Exact | Exact match returned first (matchType: id, converted to parent SIREN); other results may follow |
| By RNA | W + 9 characters, or an RNA-Import id | `W073000441` | Exact | Exact match returned first (matchType: id); other results may follow |
| By Alsace-Moselle ID | A + year(4) + court(3) + seq(6) | `A2002THI000075` | Exact | Exact match returned first (matchType: id); other results may follow |
| By VAT Number | FR + 11 digits, or 11 digits | `FR21932884117` | Exact | Exact match returned first (matchType: id); other results may follow |
| By Name | Text string | `"TOPOGRAPH"` | Fuzzy | Multiple results across all sources |

### Search Source Priority

Search queries are dispatched across five sources in priority order:

1. **Index lookup by ID** -- Pre-built search index for identifier-based searches (SIREN, SIRET, VAT, RNA, Alsace-Moselle)
2. **RNE by ID** -- Live INPI API lookup for identifier-based searches
3. **Index search by Name** -- Pre-built search index for name-based fuzzy searches
4. **RNE by Name** -- Live INPI API for name-based searches
5. **BODACC by ID** -- Last resort, SIREN/SIRET only

<Tip>
  **Search Performance:** Use identifier-based searches (SIREN, RNA, VAT) for
  best performance and exact matching. Name searches may return multiple results
  from different registers (RNE, RNA Waldec, RNA Import, Alsace-Moselle).
</Tip>

<Note>
  **Search uses both pre-built indexes and live lookups.** Name searches query a pre-built index for fast results. Identifier searches (SIREN, RNA, VAT) also perform live registry lookups to ensure the most up-to-date data.
</Note>

### Active companies only

Search can return companies that are no longer active. [`activeOnly=true`](/essentials/search#active-companies-only) removes those whose status is known at search time; the others are kept. Status is known for nearly every result. A registration-number match found only in official announcements (typically a very recent company) may be returned whatever its status, as may a company whose only closure signal is a dormancy declaration.

## Prefill mode (fast retrieval)

Use [`POST /v2/company`](/essentials/retrieve_company) with [`mode: "prefill"`](/essentials/modes) for low-latency access in prefill flows. Prefill mode covers `company`, `legalRepresentatives`, `otherKeyPersons`, `establishments` and `ultimateBeneficialOwners`. `shareholders` and `subsidiaries` are available in verification mode only.

Prefill reads the same register data as verification, and its results are authoritative. Both modes use our daily-synchronized copy of the INPI RNE and read INPI live when that copy is behind or does not have the company yet, with SIRENE, RNA and BODACC for entities outside the RNE. RNE fields are labelled `live_from_registry` when INPI answered live or our daily copy is confirmed up to date. `cached_from_registry` appears on activity codes and employee counts from INSEE, on insolvency status from BODACC, on companies outside the RNE (SIRENE-only entities and associations), and on RNE fields whenever our copy is behind and INPI cannot be reached live, which can affect most requests during an INPI outage (see [Verification Status and Source Labels](#verification-status-and-source-labels)).

The one difference is VAT. In prefill mode, `company` carries the calculated VAT number without the VIES check and its consultation number. Request verification mode when you need that proof.

UBOs are the same in both modes: personal fields are redacted per RGPD by default, and un-redacted for accounts that have provided their own INPI credentials (see [Enriched UBO data with customer INPI credentials](#enriched-ubo-data-with-customer-inpi-credentials)).

## Quirks & Gotchas

| Quirk | Details |
| - | - |
| **All-or-nothing data model** | Data comes from a single source per entity -- no cross-registry merging. Exceptions: employee count always from SIRENE, BODACC collective proceedings on the company status, and the VIES VAT check in verification mode. |
| **Query non-profits by RNA number** | Even if a non-profit has a SIREN, prefer its RNA number: it reaches the RNA records and JOAF publications. A SIREN query returns the trade register or SIRENE view. |
| **Non-diffusible sole entrepreneurs** | \~30% of EIs are marked non-diffusible by INSEE. Only minimal data returned (identifiers + VAT). No workaround. |
| **SIRENE employee data lag** | Employee count ranges (tranches) from SIRENE can be **2-3 years old** per INSEE methodology. |
| **BODACC = AI-extracted text** | When BODACC is the source (rare last resort), company data and legal reps are extracted from announcement text by AI. Quality is lower. |
| **Register extracts only for active companies** | The K-Bis (`certifiedTradeRegisterExtract`), the uncertified extract (`tradeRegisterExtract`) and the UBO extract are unavailable for closed/dissolved companies. Filed actes and financial statements stay available. |
| **Alsace-Moselle is separate** | Departments 57/67/68 non-profits use local law (German heritage). Different identifier format, different activity codes, different registry. |
| **ISIC sometimes AI-inferred** | NAF\_REV2-to-NACE mapping is deterministic. NACE-to-ISIC uses formal tables when possible, but falls back to AI. Check `isAIInferred` flag. |
| **RNE replaced 3 registries in 2023** | Since Jan 1 2023, RNE unified RNCS + Repertoire des Metiers + Registre des Actifs Agricoles. Some legacy data may still reference old registries. |
| **JOAF docs are paid** | Non-profit documents from Journal Officiel are paid per document — see the pricing page for current rates. Not all non-profits publish to JOAF. |
| **SIRET auto-converted to SIREN (search only)** | In `/v2/search`, a 14-digit SIRET is automatically resolved to its parent 9-digit SIREN. In `/v2/company`, a SIRET is rejected with HTTP 400: pass the SIREN instead. |

## Mappings

### Company Status

Company status is determined **deterministically** from RNE and SIRENE data, updated by BODACC collective-proceeding announcements -- no AI inference is involved.

#### RNE (primary source)

Status is derived from historical events, cessation indicators, and dormancy flags:

| Local Status | English | Standardized Status | Notes |
| - | - | - | - |
| Actif | Active | Active | No closure indicators |
| En sommeil | Dormant | Closed | Dormancy is the only closure signal; see the dormancy note below |
| Fermé | Closed | Closed | Has cessation events, radiation dates, or closure events |
| Fermé or En sommeil | Under insolvency | Under Insolvency Proceeding | A closed company whose register history shows a faillite, redressement or sauvegarde |

<Note>
  A dormancy declaration ("en sommeil") does not always get updated when the company resumes activity. To avoid reporting a resumed company as inactive, dormancy is only treated as Closed when no other closure indicator is present **and** SIRENE's independent administrative status does not also confirm the company as active. If SIRENE confirms activity, the standardized status is Active. Any stronger closure signal (radiation, liquidation, insolvency, an explicit dissolution event) always takes precedence over this check.
</Note>

**Closure reasons** (when status is Closed or Under Insolvency Proceeding):

| French Event | Standardized Closure Reason |
| - | - |
| Faillite | Bankruptcy |
| Redressement judiciaire / Sauvegarde | Court Order |
| Dissolution avec liquidation | Liquidation |
| Dissolution volontaire / sur decision | Voluntary Dissolution |
| Radiation / dissolution administrative | Administrative Dissolution |
| Nature cessation code (fallback) | Other |

#### SIRENE (fallback source)

| Code | Local Status | Standardized Status |
| - | - | - |
| A | Actif | Active |
| C | Cessé | Closed |

<Note>
  SIRENE provides only a binary active/ceased status with no closure reasons or detailed dates. When RNE is the primary source (vast majority of cases), the richer RNE status logic is used.
</Note>

#### BODACC collective proceedings

RNE and SIRENE keep a company active until it is struck off, even during a redressement or liquidation judiciaire. When the RNE or SIRENE status is still active, the latest collective-proceeding judgment published in BODACC (redressement, liquidation judiciaire, sauvegarde) updates it: an open proceeding moves the status to Under Insolvency Proceeding (the company stays `active: true`), and the closure of a liquidation moves it to Closed. A status the register already reports as closed is never changed.

| Latest judgment | Local Status | Standardized Status | `active` |
| - | - | - | - |
| Liquidation judiciaire (opening, conversion, extension) | En liquidation judiciaire | Under Insolvency Proceeding | `true` |
| Redressement judiciaire | En redressement judiciaire | Under Insolvency Proceeding | `true` |
| Sauvegarde | En procédure de sauvegarde | Under Insolvency Proceeding | `true` |
| Plan (continuation, safeguard or sale) | Sous plan (procédure collective) | Under Insolvency Proceeding | `true` |
| Clôture of a liquidation (insufficient assets) | Clôturée (liquidation judiciaire) | Closed | `false` |

#### RNA Waldec / RNA Import

| Code | Local Status | `active` |
| - | - | - |
| A | Active | `true` |
| D | Dissoute | `false` |
| S | Supprimée | `false` |
| other | Inconnu | `false` |

The RNA records no closure reason, so association statuses carry `active` and no standardized status.

#### RNA Alsace-Moselle

| Code | Local Status | `active` |
| - | - | - |
| INSCRITE | Inscrite | `true` |
| DISSOUTE | Dissoute | `false` |
| RADIEE | Radiée | `false` |
| other | Inconnu | `false` |

### Legal Forms

France uses the **INSEE catégorie juridique nomenclature** (4-digit codes covering all entity types). Every code is mapped **deterministically** to a standardized legal form, English translation, and **ISO 20275 (ELF)** code via a static lookup table -- no AI is involved at runtime. The table covers the 260 INSEE codes and the 209 additional codes of the RNE (INPI) nomenclature, 469 in all. Each INPI code carries the ISO 20275 code of its INSEE parent form, checked against GLEIF's French list; forms GLEIF does not list carry none.

<Note>
  Legal form mapping is **fully deterministic**. `localName` is the label of the RNE (INPI) nomenclature, which the register's formalities use; for some INSEE codes it is worded differently from INSEE's own label (for example 5599, "Société anonyme à conseil d'administration (sans autre indication)"). A company known only from BODACC announcements gets the listed form its announcement names; an announcement wording no listed form keeps its own text.
</Note>

#### Key Business Forms

| Code | French Name | Abbr. | Standardized |
| - | - | - | - |
| 5710 | SAS, société par actions simplifiée | SAS / SASU | Corporation |
| 5499 | SARL, Société à responsabilité limitée (sans autre indication) | SARL | Limited Liability Company |
| 5498 | Société d'attribution d'immeuble en jouissance à temps partagé à responsabilité limitée | -- | Limited Liability Company |
| 5599 | Société anonyme à conseil d'administration (sans autre indication) | SA | Corporation |
| 5308 | SCA, Société en commandite par actions | SCA | Partnership |
| 5202 | SNC, Société en nom collectif | SNC | Partnership |
| 5306 | SCS, Société en commandite simple | SCS | Partnership |
| 5485 | SELARL, Société d'exercice libéral à responsabilité limitée | SELARL | Limited Liability Company |
| 5310 | SLP, Société en libre partenariat | SLP | Partnership |

#### Sole Entrepreneurs

| Code | French Name | Standardized |
| - | - | - |
| 1000 | Entrepreneur individuel | Sole Proprietorship |

#### Cooperatives

| Code | French Name | Abbr. | Standardized |
| - | - | - | - |
| 5458 | Société coopérative ouvrière de production (SCOP) à responsabilité limitée | SCOP | Cooperative |
| 5462 | Société coopérative d'intérêt collectif à responsabilité limitée | SCIC | Cooperative |
| 5461 | Société coopérative à responsabilité limitée | -- | Cooperative |
| 5192 | Société coopérative de banque populaire | -- | Cooperative |
| 5195 | Association coopérative inscrite (droit local Alsace Moselle) | -- | Cooperative |
| 5463 | Société coopérative d'activité et d'emploi à responsabilité limitée | -- | Cooperative |
| 5465 | Société coopérative d'habitants à responsabilité limitée | -- | Cooperative |

#### Civil Companies

| Code | French Name | Abbr. | Standardized |
| - | - | - | - |
| 6540 | Société civile immobilière (SCI) | SCI | Partnership |
| 6561 | SCP d'avocats | SCP | Partnership |
| 6533 | GAEC, Groupement agricole d'exploitation en commun | GAEC | Cooperative |

#### Non-Profits

| Code | French Name | Standardized |
| - | - | - |
| 9220 | Association déclarée | Nonprofit Organization |
| 9221 | Association déclarée d'insertion par l'économique | Nonprofit Organization |
| 9222 | Association intermédiaire | Nonprofit Organization |
| 9230 | Association déclarée, reconnue d'utilité publique | Nonprofit Organization |
| 9300 | Fondation | Nonprofit Organization |

#### RNA Non-Profit Legal Forms (deterministic, no AI)

| Nature Code | French Name | ISO 20275 |
| - | - | - |
| R | Association reconnue d'utilité publique | XH8C |
| U, C | Association cultuelle | BEWI |
| M | Association de recherche médicale | BEWI |
| X (RNA Import) | Congrégation | PWKL |
| any other (D, A, B, G, I, L, S, …) | Association déclarée | BEWI |

A union or a federation of associations (`groupement` U or F) carries a prefix: "Union d'associations - Association déclarée", "Fédération d'associations - Association reconnue d'utilité publique", and so on. Every association legal form is standardized as Nonprofit Organization. Associations of Bas-Rhin, Haut-Rhin and Moselle, registered outside the RNA, are returned as "Association de droit local Alsace-Moselle" (ISO 20275 `HF2L`).

<Note>
  RNA legal form mapping is **stable and deterministic** -- no AI parsers. The Ministry of the Interior does not publish the meaning of each `nature` letter, so a letter gets its own label only where the register data confirms it; every other association is returned as "Association déclarée", which holds for every association in the RNA.
</Note>

#### Public Entities

| Code | French Name | Standardized |
| - | - | - |
| 4110 | Établissement public national à caractère industriel ou commercial doté d'un comptable public | Government-Owned Entity |
| 4120 | Établissement public national à caractère industriel ou commercial non doté d'un comptable public | Government-Owned Entity |
| 4130 | Exploitant public | Government-Owned Entity |
| 4140 | Établissement public local à caractère industriel ou commercial | Government-Owned Entity |
| 4150 | Régie d'une collectivité locale à caractère industriel ou commercial | Government-Owned Entity |
| 4160 | Institution Banque de France | Government-Owned Entity |

#### Foreign Entities

| Code | French Name | Standardized |
| - | - | - |
| 3110 | Représentation ou agence commerciale d'état ou organisme public étranger immatriculé au RCS | Branch or Representative Office |
| 3120 | Société commerciale étrangère immatriculée au RCS | Branch or Representative Office |
| 3205 | Organisation internationale | Other |
| 3210 | État, collectivité ou établissement public étranger | Government-Owned Entity |
| 3220 | Société étrangère non immatriculée au RCS | Branch or Representative Office |
| 3290 | Personne morale de droit étranger (autre que société étrangère) non immatriculée au registre du commerce et des sociétés | Other |

#### Other Private Structures

| Code | French Name | Standardized |
| - | - | - |
| 2110 | Indivision entre personnes physiques | Other |
| 2210 | Société créée de fait entre personnes physiques | Partnership |
| 2310 | Société en participation entre personnes physiques | Partnership |
| 2400 | Fiducie | Trust |
| 2700 | Paroisse hors zone concordataire | Nonprofit Organization |
| 2800 | Assujetti unique à la TVA | Other |

#### Social Security & Mutual Organizations

| Code | French Name | Standardized |
| - | - | - |
| 8110 | Régime général de la Sécurité Sociale | Government-Owned Entity |
| 8210 | Mutuelle | Cooperative |
| 8250 | Assurance mutuelle agricole | Cooperative |

<Tip>
  The full INSEE nomenclature is available at [INSEE](https://www.insee.fr/fr/information/2028129). All 469 codes (260 INSEE, 209 RNE) are statically mapped with English translations, standardized categories, and ISO 20275 (ELF) codes. The [pricing page](https://topograph.co/pricing/fr) lists every code.
</Tip>

### Legal Representatives

Legal representatives are extracted from the officers (*pouvoirs*) recorded in the RNE. The classification of a role as **legal representative vs. other key person** is **fully deterministic** -- a static mapping covers all 84 RNE role codes, each with a standardized role, English translation, and `isLegalRepresentative` flag based on French corporate law. No AI is involved.

#### Complete RNE Role Mapping (84 roles)

<AccordionGroup>
  <Accordion title="Legal Representatives (30 roles) -- registered representative capacities">
    | Code | French Role | English | Standardized | Notes |
    | - | - | - | - | - |
    | 30 | Gérant | Manager (Gérant) | Managing Director | Most common for SARL/SNC |
    | 28 | Gérant et associé indéfiniment et solidairement responsable | Manager and Unlimited Joint-Liability Partner | Managing Director | SNC gérant |
    | 29 | Gérant et associé indéfiniment responsable | Manager and Unlimited Liability Partner | Managing Director | SCS gérant |
    | 52 | Président du directoire | President of the Management Board | President | SA with directoire |
    | 53 | Directeur Général | Chief Executive Officer (Directeur Général) | Chief Executive Officer | SA executive |
    | 60 | Président du conseil d’administration et directeur général | Chairman and CEO (PDG) | Chief Executive Officer | Combined role in SA |
    | 69 | Directeur général unique de SA à directoire | Sole General Director (SA with Management Board) | Chief Executive Officer | SA directoire variant |
    | 70 | Directeur général délégué | Deputy CEO (Directeur Général Délégué) | Managing Director | SA deputy executive |
    | 73 | Président de SAS | President of SAS | President | Most common for SAS |
    | 55 | Dirigeant à l’étranger d’une personne morale étrangère | Director of Foreign Entity (Abroad) | Managing Director | Foreign entity management |
    | 56 | Dirigeant en France d’une personne morale étrangère | Director of Foreign Entity (in France) | Managing Director | Foreign entity French branch |
    | 66 | Personne ayant le pouvoir d’engager à titre habituel la société | Authorized Signatory (Company) | Authorized Signatory | General signing authority |
    | 67 | Personne ayant le pouvoir d’engager l'établissement | Authorized Signatory (Establishment) | Authorized Signatory | Establishment-level authority |
    | 100 | Repreneur | Business Acquirer (Repreneur) | Owner | Business acquisition |
    | 101 | Entrepreneur | Entrepreneur | Owner | Individual entrepreneur |
    | 140 | Président de l'EPIC | President of Public Commercial Establishment | President | EPIC entity |
    | 200 | Fiduciaire | Fiduciary | Managing Director | Trust management |
    | 201 | Dirigeant | Director (Dirigeant) | Managing Director | Generic executive |
    | 203 | Membre bénéficiant d'un mandat général d'administration | Member with General Administration Mandate | Administrator | Non-profit admin |
    | 204 | Personne capable d'engager l'entité | Person Authorized to Bind the Entity | Authorized Signatory | Non-profit signing authority |
    | 205 | Président | President | President | Non-profit/generic president |
    | 206 | Directeur | Director | Director | Generic director |
    | 212 | Personne désignée par les statuts | Person Designated by Bylaws | Managing Director | Bylaws-designated authority |
    | 214 | Personne ayant le pouvoir d’engager à titre habituel l’entité | Person Authorized to Habitually Bind the Entity | Authorized Signatory | Non-profit habitual signing authority |
    | 215 | Personne ayant le pouvoir de représenter l’entité | Person Authorized to Represent the Entity | Authorized Signatory | Non-profit representation authority |
    | 40 | Liquidateur | Liquidator | Liquidator | Legal rep during liquidation |
    | 86 | Exploitant pour le compte de l’indivision | Operator on behalf of Joint Ownership | Managing Director | Joint ownership operator |
    | 90 | Personne physique, exploitant en commun | Joint Operator (Individual) | Partner | Joint exploitation |
    | 98 | Administrateur provisoire | Provisional Administrator | Administrator | Court-appointed, scope defined by the order |
    | 231 | Gouverneur | Governor | President | Banque de France |
  </Accordion>

  <Accordion title="Board & Supervisory Roles (19 roles) -- no separate representation mandate recorded">
    | Code | French Role | English | Standardized |
    | - | - | - | - |
    | 61 | Président du conseil de surveillance | Chairman of the Supervisory Board | Chairman of the Board |
    | 63 | Membre du directoire | Member of the Management Board | C-Level Executive |
    | 64 | Membre du conseil de surveillance | Member of the Supervisory Board | Supervisory Board Member |
    | 65 | Administrateur | Board Member (Administrateur) | Board Member |
    | 110 | Vice-Président | Vice-President | Vice Chairman of the Board |
    | 111 | Vice-Président du Directoire | Vice-President of the Management Board | Vice Chairman of the Board |
    | 120 | Vice-Président du Conseil d'Orientation et de Surveillance | Vice-President of Orientation and Supervision Board | Vice Chairman of the Board |
    | 121 | Président du Conseil d'Orientation et de Surveillance | President of Orientation and Supervision Board | Chairman of the Board |
    | 122 | Membre du Conseil d'Orientation et de Surveillance | Member of Orientation and Supervision Board | Board Member |
    | 210 | Membre du conseil syndical | Member of the Syndicate Council | Board Member |
    | 211 | Président du conseil syndical | President of the Syndicate Council | Chairman of the Board |
    | 135 | Administrateurs représentant les salariés | Employee Representative Director | Board Member |
    | 213 | Vice-Président du conseil de surveillance | Vice-Chairman of the Supervisory Board | Vice Chairman of the Board |
    | 218 | Membre de l’organe collégial de contrôle | Member of the Collegial Control Body | Supervisory Board Member |
    | 219 | Président de l’organe collégial de contrôle | Chairman of the Collegial Control Body | Chairman of the Board |
    | 51 | Président du conseil d’administration | Chairman of the Board of Directors | Chairman of the Board |
    | 232 | Premier sous-gouverneur | First Deputy Governor | C-Level Executive |
    | 233 | Deuxième sous-gouverneur | Second Deputy Governor | C-Level Executive |
    | 234 | Conseiller général | Member of the General Council | Board Member |
  </Accordion>

  <Accordion title="Audit & Control Roles (6 roles) -- NOT legal representatives">
    | Code | French Role | English | Standardized |
    | - | - | - | - |
    | 71 | Commissaire aux comptes titulaire | Statutory Auditor (Titular) | Auditor |
    | 72 | Commissaire aux comptes suppléant | Statutory Auditor (Substitute) | Auditor |
    | 13 | Contrôleur de gestion | Management Controller | Auditor |
    | 14 | Contrôleur des comptes | Accounts Controller | Auditor |
    | 104 | Personne chargée du contrôle | Person in Charge of Control | Auditor |
    | 220 | Auditeur de durabilité | Sustainability Auditor | Auditor |
  </Accordion>

  <Accordion title="Partner & Associate Roles (9 roles) -- NOT legal representatives">
    | Code | French Role | English | Standardized |
    | - | - | - | - |
    | 74 | Associé indéfiniment et solidairement responsable | Unlimited Joint-Liability Partner | Other |
    | 75 | Associé indéfiniment responsable | Unlimited Liability Partner | Other |
    | 131 | Associé commandité | General Partner (Commandité) | Other |
    | 132 | Associé commanditaire | Limited Partner (Commanditaire) | Other |
    | 23 | Autre associé majoritaire | Other Majority Partner | Other |
    | 95 | Associé qui participe à la gestion | Partner Participating in Management | Other |
    | 96 | Associé non salarié | Non-Salaried Partner | Other |
    | 130 | Associé unique qui récupère le patrimoine | Sole Associate Recovering Assets | Other |
    | 41 | Associé unique (qui participe à l’activité EURL) | Sole Associate (Active in EURL) | Other |
  </Accordion>

  <Accordion title="Non-Profit Functional Roles (6 roles) -- no representation inferred from title">
    | Code | French Role | English | Standardized |
    | - | - | - | - |
    | 207 | Trésorier | Treasurer | Other |
    | 208 | Secrétaire | Secretary | Secretary |
    | 209 | Secrétaire général | Secretary General | Secretary |
    | 216 | Trésorier adjoint | Deputy Treasurer | Other |
    | 217 | Secrétaire adjoint | Deputy Secretary | Secretary |
    | 202 | Représentant de l'assujetti unique | Representative of VAT Group | Other |
  </Accordion>

  <Accordion title="Other & Administrative Roles (14 roles) -- NOT legal representatives">
    | Code | French Role | English | Standardized |
    | - | - | - | - |
    | 11 | Membre | Member | Other |
    | 77 | Représentant fiscal d’une entreprise personne étrangère sans établissement en France | Tax Representative of Foreign Entity | Other |
    | 82 | Indivisaire | Joint Owner (Indivisaire) | Other |
    | 94 | Membre non salarié participant aux travaux | Non-Salaried Worker-Member | Other |
    | 97 | Mandataire ad hoc | Ad Hoc Agent (Mandataire) | Other |
    | 99 | Autre | Other | Other |
    | 103 | Suppléant | Substitute | Other |
    | 105 | Personne décisionnaire désignée | Designated Decision-Maker | Other |
    | 106 | Comptable | Accountant | Other |
    | 107 | Héritier indivisaire | Joint Heir (Indivisaire) | Other |
    | 108 | Loueur | Lessor | Other |
    | 109 | Mandataire fiscal | Tax Representative | Other |
    | 150 | Avocat | Lawyer | Other |
    | 76 | Représentant social d’une entreprise personne étrangère sans établissement en France | Social Representative of Foreign Entity | Other |
  </Accordion>
</AccordionGroup>

<Note>
  The classification of each role as **legal representative** or **other key person** is **deterministic** and based on French corporate law. For example, a "Gérant" (code 30) is always a legal representative, while an "Administrateur" (code 65) is always an other key person. Representation is qualified by the legal form and source: foreign offices follow their governing law; association offices depend on statutes or delegation; establishment signatories act within the establishment mandate; provisional administrators within the court order. No sole or joint signing rule is inferred from an office title. A secretary general (209) is an other key person unless a separately recorded office establishes representation. A member of a management board (63) is kept as an other key person; a separate appointment as director general carries representation under [Code de commerce L225-66](https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000006224266). A person the register records with a second role (`secondRoleEntreprise`, for example a gérant who is also empowered to bind the company) is returned once per role, each entry under the datapoint its role belongs to. An officer with an unknown or absent role code is retained as "Autre" rather than dropped. For individual entrepreneurs (catégorie juridique 1000), the register records no role code: the entrepreneur is always returned as the sole legal representative with the role "Entrepreneur Individuel" (English "Sole Proprietor", standardized Managing Director).
</Note>

<Tip>
  All 84 codes from the RNE role nomenclature (INPI dictionary, June 2026) are statically mapped with standardized roles, English translations, and legal representative classification. No code is missing and no AI is involved. The `standardized` value of a legal representative comes from the legal-representative role list; the `standardized` value of an other key person comes from the other-key-person role list (`otherKeyPersons[].role.standardized`), where a role with no closer equivalent is `Other` and keeps its meaning in `localName` and `englishTranslation`.
</Tip>

### Shareholders

Shareholders are **AI-extracted from the documents the company filed at INPI** (statutes, capital changes, annual filings). They are not read from structured register data, so verify them against the filing before relying on them for compliance. Not all legal forms must file an updated shareholder list each year. Shareholders are available in verification mode only.

Non-profits (queried by RNA number) and sole entrepreneurs have no share capital: the `shareholders` datapoint returns `datapoint_not_applicable` at no charge. A sole entrepreneur appears under `legalRepresentatives` and `ultimateBeneficialOwners` instead.

Both individual and corporate shareholders are supported.

### Activity Code Mapping

France uses the **NAF\_REV2** (Nomenclature d'Activites Francaise, Revision 2) classification, which extends the European NACE Rev. 2 standard with a trailing letter suffix. The system maps activity codes across three levels:

```
NAF_REV2 (French) -> NACE Rev. 2.1 (European) -> ISIC Rev. 5 (International)
```

| Classification | Source | Example | AI Inferred? |
| - | - | - | - |
| **NAF\_REV2** | RNE / SIRENE (APE code) | `5829C` | No (official) |
| **NACE** | The NACE Rev. 2.1 class of the company's NAF 2025 code (first four digits); INSEE's NAF rev. 2 -> NAF 2025 correspondence when INSEE has not assigned one | `58.29` | No (register / formal mapping) |
| **NAF\_2025** | INSEE's NAF 2025 code for the company (Sirene, provisional until 2027-01-01) | `58.29Y` | No (official) |
| **NACE\_REV2** | The APE code's own class level (first four digits) | `58.29` | No (the register's own class) |
| **ISIC** | Derived from NACE (formal mapping) or AI | `5829` | Sometimes |
| **RNA** | RNA Waldec / Import (objet\_social codes) | `011000` (Sports) | No (official) |
| **ALSACE\_MOSELLE** | RNA Alsace-Moselle (regional classification) | `SOCIAL-SOLIDARITE` | No (official) |

**One code in, one code out.** You get one `NACE` and one `ISIC` code per declared NAF/APE code. Where a NAF/APE code has no single equivalent in the target revision, the shared parent class is returned rather than every candidate — see [One code in, one code out](/guides/standardization#one-code-in-one-code-out).

<Note>
  **Your NACE class is the one INSEE assigned the company, not a conversion of its old code.** INSEE has published NAF 2025, the French implementation of NACE Rev. 2.1: « la structure de la NAF 2025 s'emboîte strictement dans celle de la nomenclature européenne NACE Rev.2.1 ; jusqu'au niveau le plus détaillé de la NACE (niveau des classes ; codes à 4 chiffres), les deux nomenclatures coïncident rigoureusement » ([INSEE, Structure de la NAF 2025](https://www.insee.fr/fr/information/8181066)). A NAF 2025 code is therefore a NACE Rev. 2.1 class followed by one French letter (`Y` when the class has no French subdivision, `G`/`H`/`J`... when it has), and INSEE already assigns every active company its NAF 2025 code in Sirene, « à titre informatif » until NAF 2025 becomes the reference nomenclature for APE codes on 1 January 2027 ([INSEE, Sirene open data](https://www.insee.fr/fr/information/9019311)).

  We read that assignment directly. For a company INSEE recorded as `86.90F` (NAF rev. 2) and assigned `86.93Y` (NAF 2025):

  ```json theme={null}
  "activities": {
    "NAF_REV2":    [{ "code": "8690F",  "description": "Activités de santé humaine non classées ailleurs" }],
    "NAF_2025":   [{ "code": "86.93Y", "description": "Activités des psychologues et psychothérapeutes, à l'exception des médecins" }],
    "NACE":       [{ "code": "86.93",  "description": "Activities of psychologists and psychotherapists, except medical doctors" }],
    "NACE_REV2":  [{ "code": "86.90",  "description": "Other human health activities" }]
  }
  ```

  This is more precise than any conversion of the old code can be, because INSEE recodes each company on its actual activity: a consultancy filed as `62.02A` can come back as `73.12Y` (media representation). In a live sample of 598 units (2026-09-03), 99.5 % of active companies carried a NAF 2025 code; the ones that don't are units still coded in a pre-2008 nomenclature, almost all ceased, and for those the correspondence rules below apply.
</Note>

<Note>
  **The APE sub-class letter is used, not discarded.** The letter on an APE code is a French subdivision of the NACE class, and it often pins the NACE Rev. 2.1 class that the bare class cannot. We resolve it through INSEE's own *Table de correspondances NAF rev.2 -> NAF 2025* (NAF 2025 sits strictly inside NACE Rev. 2.1), which names a single Rev. 2.1 class for 541 of the 732 French sub-classes:

  | APE code | NACE from the class alone | NACE we publish |
  | - | - | - |
  | `6420Z` Activites des societes holding | `64.2` (group) | `64.21` |
  | `8690A` Ambulances | `86.9` (group) | `86.92` |
  | `1071B` Cuisson de produits de boulangerie | `10.71` (food manufacturing) | `47.24` (retail) |
  | `8690F` Activites de sante humaine n.c.a. | `86.9` (group) | `86.9` — INSEE itself splits this sub-class across `86.93`, `86.96` and `86.99`, so no 4-digit class is supported by the data |

  Where the sub-class straddles several Rev. 2.1 classes the class-level answer stands, so this is never less precise than the code alone. The register's own 5-character APE code is always published in full under `NAF_REV2`, with INSEE's official French label.
</Note>

<Note>
  **Need a 4-digit class on every company, including units INSEE has not assigned a NAF 2025 code? Read `NACE_REV2`.** NAF rev. 2 is the French implementation of NACE Rev. 2, so an APE code's first four digits *are* a NACE Rev. 2 class. We publish that class verbatim under `NACE_REV2` whenever we hold an APE code — no conversion, no guessing:

  ```json theme={null}
  "activities": {
    "NAF_REV2":    [{ "code": "8690F", "description": "Activites de sante humaine non classees ailleurs" }],
    "NACE_REV2":  [{ "code": "86.90", "description": "Other human health activities" }],
    "NACE":       [{ "code": "86.9",  "description": "Other human health activities" }]}
  ```

  This is the key to read when your parser needs a 4-digit class for every company. It also answers for the classes NACE Rev. 2.1 dropped entirely — `41.20A` (construction de maisons individuelles), `45.11Z` (car sales), `96.01A/B` (laundry) and others have no honest Rev. 2.1 code, so `NACE` is absent for them while `NACE_REV2` is not.

  The two are different revisions of the same classification: `86.90` is not a NACE Rev. 2.1 code, and `86.9` is not a Rev. 2 class. Do not mix them in one field.
</Note>

<Note>
  **Main activity:** the APE code is the company's declared main activity ("activite principale exercee"): the register publishes exactly one per company. The NAF\_REV2 entry carries `isMainActivity: true`, and the NACE and ISIC codes derived from it inherit the flag.
</Note>

<Note>
  **AI Enrichment:** When ISIC codes cannot be derived from NACE via formal mapping tables, the system uses AI to match activity descriptions to ISIC Rev. 5 codes. Every activity item includes an `isAIInferred` flag to distinguish official vs. AI-derived codes. NAF\_REV2 and NACE codes are **never** AI-inferred for France.
</Note>

<Note>
  **Establishment-level activity:** in France each establishment (SIRET) can have its own activity, which may differ from the company-level activity. When the register records it, every establishment in `company.establishments[]` carries its own `activities` object (NAF\_REV2 + NACE + ISIC), in the same shape as the company-level `activities`.
</Note>

#### Activity Codes by Source

| Source | Classifications returned | Notes |
| - | - | - |
| **RNE** | NAF\_REV2 + NACE + ISIC | APE code from the RNE filing |
| **SIRENE** | NAF\_REV2 + NACE + ISIC | APE code from the SIRENE directory |
| **RNA Waldec** | RNA + (NAF\_REV2 + NACE if SIREN exists) + ISIC | RNA nomenclature codes + SIRENE APE if available |
| **RNA Import** | RNA + ISIC | RNA nomenclature codes only |
| **RNA Alsace-Moselle** | ALSACE\_MOSELLE + ISIC | Regional classification codes (DOMAINES/THEMES) |

## Data Availability

### Data Availability Matrix

| Data Type | Commercial companies (RNE) | SIRENE-only | BODACC | RNA Waldec | RNA Import | Alsace-Moselle |
| - | - | - | - | - | - | - |
| Company Profile | ✅ Full | ⚠️ Limited | ⚠️ Announcement fields | ✅ Basic | ✅ Basic | ✅ Basic |
| Legal Representatives | ✅ Comprehensive | ⚠️ Sole entrepreneurs only | ⚠️ AI-extracted | ❌ | ❌ | ❌ |
| Other Key Persons | ✅ Available non-representative offices | ❌ | ✅ Available administration offices | ❌ | ❌ | ❌ |
| Shareholders | ⚠️ AI-extracted from filings | ❌ | ❌ | ❌ | ❌ | ❌ |
| Subsidiaries | ⚠️ From filed bilans | ❌ | ❌ | ❌ | ❌ | ❌ |
| Ultimate Beneficial Owners | ✅ (live fetch) | ❌ | ❌ | ❌ | ❌ | ❌ |
| Establishments | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Activity Codes | ✅ NAF\_REV2/NACE/ISIC | ✅ NAF\_REV2/NACE/ISIC | ❌ | ✅ RNA + NACE/ISIC | ✅ RNA + ISIC | ✅ ALSACE\_MOSELLE + ISIC |
| Employee Count | ✅ (from SIRENE) | ✅ | ❌ | ⚠️ Via SIRENE | ❌ | ❌ |

**Legend:** ✅ Available | ❌ Not Available | ⚠️ Conditionally Available

#### Other Key Persons

`otherKeyPersons` carries board, supervisory, functional and unclassified offices for which no separate representation capacity is established. A person may also have a separately recorded representative office. The main source is the RNE role mapping. On the exceptional BODACC-only fallback, available administration office holders are classified using the same known offices; unfamiliar source titles retain contextual classification. SIRENE-only entities and RNA associations return an empty list. The full role split is in the [Complete RNE Role Mapping](#complete-rne-role-mapping-84-roles) above.

#### Subsidiaries

`subsidiaries` is available for France. It returns the equity participations the queried company holds in other entities, AI-extracted from the "Filiales et participations" annex of the latest annual financial statement (bilan) filed at INPI. Verify the values against the filing before relying on them for compliance.

Availability depends on the filing, not on our coverage: a company that has filed no bilan returns no subsidiaries, and associations (loi 1901) do not file bilans at all. `subsidiaries` is a separate data block from `company`, and it is available in verification mode only. See the [Subsidiaries](/essentials/subsidiaries-extraction) guide for the response shape.

#### Employee Count Tranches (SIRENE)

| Tranche Code | Range |
| - | - |
| 00 | 0 employees |
| 01 | 1-2 employees |
| 02 | 3-5 employees |
| 03 | 6-9 employees |
| 11 | 10-19 employees |
| 12 | 20-49 employees |
| 21 | 50-99 employees |
| 22 | 100-199 employees |
| 31 | 200-249 employees |
| 32 | 250-499 employees |
| 41 | 500-999 employees |
| 42 | 1,000-1,999 employees |
| 51 | 2,000-4,999 employees |
| 52 | 5,000-9,999 employees |
| 53 | 10,000+ employees |

### Documents by Company Type

#### Commercial companies & sole entrepreneurs (SIREN)

| Document Type | API Category | Format | Availability | Notes |
| - | - | - | - | - |
| **K-Bis (Certified Extract)** | `certifiedTradeRegisterExtract` | PDF | ✅ Active + in RNE + on Infogreffe | Official certified trade register extract |
| **Trade Register History (Historique des modifications)** | `tradeRegisterHistory` | PDF | ✅ Active + in RNE + on Infogreffe | Chronological history of the modifications registered at the RCS |
| **INPI Extract (Uncertified)** | `tradeRegisterExtract` | PDF | ✅ Active + in RNE | Non-certified trade register extract, priced as company data |
| **UBO Extract** | `ultimateBeneficialOwnersCertificate` | PDF | ✅ Active + in RNE | Ultimate beneficial owners certificate, priced as UBO data |
| **Avis de situation INSEE** | `otherDocuments[]` | PDF | ✅ Active | Identity sheet from the SIRENE directory, priced as company data |
| **Financial Statements (Bilans)** | `financialStatements[]` | PDF | ✅ When filed | Annual accounts filed with RNE (formal mapping) |
| **Company Documents (Actes)** | `articlesOfAssociation[]` | PDF | ✅ When filed | Statutes, decisions, formalities (classified by the register's document type) |

#### Non-profits (RNA Waldec, RNA Import, Alsace-Moselle)

| Document Type | API Category | Format | Availability | Notes |
| - | - | - | - | - |
| **Avis de situation INSEE** | `otherDocuments[]` | PDF | ✅ Active + in SIRENE | Identity sheet from the SIRENE directory, same document as for commercial companies, independent of RNE registration |
| **JOAF Official Publications** | `officialPublications[]` | PDF | ⚠️ If published | Gazette publications (paid, see [pricing](https://www.topograph.co/pricing)) |
| **JOAF Financial Statements** | `financialStatements[]` | PDF | ⚠️ If published | Annual accounts in JOAF, priced as financial statements (see [pricing](https://www.topograph.co/pricing)) |

<Warning>
  **K-Bis Availability:** The certified K-Bis extract (`certifiedTradeRegisterExtract`) requires three conditions: company is **active**, is **in RNE**, and is **available on Infogreffe**. The uncertified extract (`tradeRegisterExtract`) and the UBO extract are also offered only for active companies in the RNE. For inactive, dissolved, or liquidated companies, the filed actes and financial statements stay available.
</Warning>

<Note>
  **Avis de situation INSEE:** Available for any active company registered in the SIRENE directory, regardless of K-Bis availability or RNE registration. This includes non-profits that are not registered in RNE: an active association registered in SIRENE always has at least this document, even when it has no trade register extract and no JOAF publication on file. Associations with no SIRENE registration have no Avis de situation. Returned in `otherDocuments[]`. It contains registration details, activity code, and address from the SIRENE directory.
</Note>

<Note>
  **JOAF Documents:** The Journal Officiel des Associations et Fondations (JOAF) publishes official documents for non-profits. These documents are conditionally available -- not all non-profits publish to JOAF, and a non-profit that has never filed a modification or published annual accounts can legitimately have none. When available, they appear under `officialPublications` and `financialStatements` categories and stay there for as long as the non-profit exists: a later administrative name change on the same registration number does not remove an earlier publication. JOAF documents are paid (see [pricing](https://www.topograph.co/pricing)) and include two sources: JOAFE (gazette publications) and DCA (annual accounts).
</Note>

### Example API Responses

All examples use **placeholder data**. Query: `POST /v2/company` with `{ "id": "<id>", "countryCode": "FR", "dataPoints": ["company", "legalRepresentatives"] }`

<AccordionGroup>
  <Accordion title="Active SAS (Source: RNE) -- with UBOs">
    ```json theme={null}
    {
      "company": {
        "id": "123456789",
        "countryCode": "FR",
        "identifiers": { "VAT": "XX123456789" },
        "taxId": { "type": "eu_vat", "value": "XX123456789", "country": "FR", "verification": { "status": "verified", "verifiedName": "SAS EXAMPLE CORP" } },
        "legalName": "Example Corp",
        "registrationDate": "2023-03-15",
        "activityDescription": "Developpement et commercialisation de logiciels professionnels.",
        "status": { "localName": "Actif", "active": true, "statusDetails": { "status": "ACTIVE" } },
        "legalForm": { "localName": "SAS, société par actions simplifiée", "standardized": "Corporation", "iso20275Code": "6CHY" },
        "capital": { "amount": 10000, "currency": "EUR" },
        "activities": {
          "NAF_REV2": [{ "code": "6201Z", "description": "Programmation informatique", "isAIInferred": false }],
          "NACE": [{ "code": "62.10", "description": "Computer programming activities", "isAIInferred": false }],
          "ISIC": [{ "code": "621", "description": "Computer programming activities", "isAIInferred": false }]
        },
        "legalAddress": { "addressLine1": "10 Rue de la Paix", "city": "Paris", "postalCode": "75002", "countryCode": "FR" }
      },
      "legalRepresentatives": [
        { "entityId": "person_001", "type": "individual", "role": { "localName": "Président de SAS", "standardized": "President" }, "individual": { "name": { "fullName": "Jean DUPONT" }, "birthDate": { "month": 6, "year": 1985 } } },
        { "entityId": "person_002", "type": "individual", "role": { "localName": "Directeur Général", "standardized": "Chief Executive Officer" }, "individual": { "name": { "fullName": "Marie MARTIN" }, "birthDate": { "month": 9, "year": 1990 } } }
      ],
      "ultimateBeneficialOwners": [
        {
          "entityId": "person_001",
          "name": { "fullName": "Jean DUPONT", "firstName": "Jean", "lastName": "DUPONT" },
          "birthDate": { "month": 6, "year": 1985 },
          "nationality": "FR",
          "control": { "types": ["ownership-of-shares", "voting-rights"], "description": "Ultimate beneficial owner", "details": [{ "type": "shares", "percentageValue": 75, "nature": "direct" }, { "type": "voting-rights", "percentageValue": 75, "nature": "direct" }] }
        },
        {
          "entityId": "person_002",
          "name": { "fullName": "Marie MARTIN", "firstName": "Marie", "lastName": "MARTIN" },
          "birthDate": { "month": 9, "year": 1990 },
          "nationality": "FR",
          "control": { "types": ["ownership-of-shares", "voting-rights"], "description": "Ultimate beneficial owner", "details": [{ "type": "shares", "percentageValue": 25, "nature": "direct" }, { "type": "voting-rights", "percentageValue": 25, "nature": "direct" }] }
        }
      ],
      "establishments": [
        { "id": "12345678900011", "name": "Example Corp", "creationDate": "2023-03-15", "active": true, "address": { "addressLine1": "10 Rue de la Paix", "city": "Paris", "postalCode": "75002", "countryCode": "FR" } }
      ]
    }
    ```
  </Accordion>

  <Accordion title="Closed SARL (Source: RNE)">
    ```json theme={null}
    {
      "company": {
        "id": "987654321",
        "countryCode": "FR",
        "identifiers": { "VAT": "YY987654321" },
        "taxId": { "type": "eu_vat", "value": "YY987654321", "country": "FR", "verification": { "status": "unverified" } },
        "legalName": "Ancienne Boutique",
        "registrationDate": "2015-01-10",
        "activityDescription": "Commerce de detail de vetements.",
        "status": { "localName": "Fermé", "active": false, "statusDetails": { "status": "CLOSED" } },
        "legalForm": { "localName": "SARL, Société à responsabilité limitée (sans autre indication)", "standardized": "Limited Liability Company", "iso20275Code": "V9QP" },
        "capital": { "amount": 5000, "currency": "EUR" },
        "activities": {
          "NAF_REV2": [{ "code": "4771Z", "description": "Commerce de detail d'habillement en magasin specialise", "isAIInferred": false }],
          "NACE": [{ "code": "47.71", "description": "Retail sale of clothing", "isAIInferred": false }],
          "ISIC": [{ "code": "4771", "description": "Retail sale of clothing", "isAIInferred": false }]
        },
        "legalAddress": { "addressLine1": "25 Rue du Commerce", "city": "Lyon", "postalCode": "69002", "countryCode": "FR" }
      },
      "legalRepresentatives": [
        { "entityId": "person_001", "type": "individual", "role": { "localName": "Gérant", "standardized": "Managing Director" }, "individual": { "name": { "fullName": "Pierre DURAND" }, "birthDate": { "month": 3, "year": 1978 } } }
      ],
      "establishments": [
        { "id": "98765432100015", "name": "Ancienne Boutique", "creationDate": "2015-01-10", "endDate": "2023-06-30", "active": false, "address": { "addressLine1": "25 Rue du Commerce", "city": "Lyon", "postalCode": "69002", "countryCode": "FR" } }
      ]
    }
    ```

    **Note:** Closed companies have `active: false`, status `Fermé`, and `endDate` on establishments. The K-Bis, the uncertified extract and the UBO extract are **not available** for closed companies.
  </Accordion>

  <Accordion title="Sole Entrepreneur -- EI (Source: RNE)">
    Sole entrepreneurs (personnes physiques) are often **non-diffusible** in SIRENE, returning minimal data. Below is a diffusible example.

    ```json theme={null}
    {
      "company": {
        "id": "111222333",
        "countryCode": "FR",
        "identifiers": { "VAT": "ZZ111222333" },
        "legalName": "Sophie BERNARD",
        "registrationDate": "2020-09-01",
        "activityDescription": "Activites de conseil en gestion.",
        "status": { "localName": "Actif", "active": true },
        "legalForm": { "localName": "Entrepreneur individuel", "standardized": "Sole Proprietorship", "iso20275Code": "ZY9X" },
        "activities": {
          "NAF_REV2": [{ "code": "7022Z", "description": "Conseil pour les affaires et autres conseils de gestion", "isAIInferred": false }],
          "NACE": [{ "code": "70.20", "description": "Business and other management consultancy activities", "isAIInferred": false }],
          "ISIC": [{ "code": "7020", "description": "Business and other management consultancy activities", "isAIInferred": false }]
        },
        "legalAddress": { "addressLine1": "5 Impasse des Lilas", "city": "Nantes", "postalCode": "44000", "countryCode": "FR" }
      },
      "establishments": [
        { "id": "11122233300012", "name": "Sophie BERNARD", "creationDate": "2020-09-01", "active": true }
      ]
    }
    ```

    **Note:** The entrepreneur is returned as the sole legal representative (role "Entrepreneur Individuel") and as the ultimate beneficial owner (100%, direct). The `shareholders` datapoint returns `datapoint_not_applicable` at no charge. `legalName` is the individual's name.
  </Accordion>

  <Accordion title="Non-profit -- Association déclarée (RNA Waldec)">
    ```json theme={null}
    {
      "company": {
        "id": "W751000001",
        "countryCode": "FR",
        "identifiers": { "rna": "W751000001" },
        "legalName": "ASSOCIATION SPORTIVE DU QUARTIER",
        "registrationDate": "2016-10-20",
        "activityDescription": "Promouvoir la pratique sportive et organiser des evenements.",
        "status": { "localName": "Active", "active": true },
        "legalForm": { "localName": "Association déclarée", "englishTranslation": "Declared association", "standardized": "Nonprofit Organization", "iso20275Code": "BEWI" },
        "activities": {
          "RNA": [{ "code": "011000", "description": "SPORTS, ACTIVITES DE PLEIN AIR" }],
          "NACE": [{ "code": "93.12", "description": "Activities of sports clubs", "isAIInferred": true }],
          "ISIC": [{ "code": "9312", "description": "Activities of sports clubs", "isAIInferred": true }]
        },
        "legalAddress": { "addressLine1": "21 Rue des Associations", "city": "Paris", "postalCode": "75007", "countryCode": "FR" }
      }
    }
    ```

    **Note:** No legal representatives, shareholders, UBOs, or establishments. Activity codes use RNA nomenclature + AI-inferred NACE/ISIC.
  </Accordion>

  <Accordion title="Non-profit -- Association de droit local (RNA Alsace-Moselle)">
    ```json theme={null}
    {
      "company": {
        "id": "A2002THI000001",
        "countryCode": "FR",
        "identifiers": { "rnaAlsaceMoselle": "A2002THI000001" },
        "legalName": "ENTRAIDE SOLIDAIRE DE THIONVILLE",
        "registrationDate": "2002-11-03",
        "activityDescription": "Soutien aux familles en difficulte et aide alimentaire.",
        "status": { "localName": "Inscrite", "active": true },
        "legalForm": { "localName": "Association de droit local Alsace-Moselle", "iso20275Code": "HF2L" },
        "activities": {
          "ALSACE_MOSELLE": [{ "code": "SOCIAL-SOLIDARITE", "description": "Divers social" }],
          "NACE": [{ "code": "88.99", "description": "Other social work activities without accommodation", "isAIInferred": true }],
          "ISIC": [{ "code": "889", "description": "Other social work activities without accommodation", "isAIInferred": true }]
        },
        "legalAddress": { "addressLine1": "1 Rue de la Gare", "city": "Thionville", "postalCode": "57100", "countryCode": "FR" }
      }
    }
    ```

    **Note:** Uses `ALSACE_MOSELLE` classification instead of RNA nomenclature. Status `Inscrite` (not `Active`). Court codes: THI (Thionville), MET (Metz), SAG (Sarreguemines).
  </Accordion>

  <Accordion title="UBO Response (dedicated datapoint)">
    Query with `"dataPoints": ["ultimateBeneficialOwners"]`:

    ```json theme={null}
    {
      "ultimateBeneficialOwners": [
        {
          "entityId": "person_001",
          "name": { "fullName": "Jean DUPONT", "firstName": "Jean", "lastName": "DUPONT" },
          "birthDate": { "month": 6, "year": 1985 },
          "nationality": "FR",
          "residenceAddress": { "city": "Paris", "postalCode": "75002", "countryCode": "FR" },
          "control": {
            "types": ["ownership-of-shares", "voting-rights"],
            "description": "Ultimate beneficial owner",
            "details": [
              { "type": "shares", "percentageValue": 75, "nature": "direct" },
              { "type": "voting-rights", "percentageValue": 75, "nature": "direct" }
            ]
          }
        }
      ]
    }
    ```

    **Note:** UBOs are only available for commercial companies in the RNE. Fetched live from INPI if not already available. Ownership and voting-right percentages are in `control.details`, each marked `direct` or `indirect`.
  </Accordion>

  <Accordion title="Available Documents (company example)">
    Documents are returned when `"dataPoints": ["availableDocuments"]` is requested.

    **Commercial companies & sole entrepreneurs (SIREN):**

    | API Category | Document | Notes |
    | - | - | - |
    | `certifiedTradeRegisterExtract` | K-Bis PDF | Active + in RNE + on Infogreffe |
    | `tradeRegisterHistory` | Historique des modifications PDF | Active + in RNE + on Infogreffe |
    | `tradeRegisterExtract` | INPI extract PDF | Active + in RNE |
    | `ultimateBeneficialOwnersCertificate` | UBO declaration PDF | Active + in RNE |
    | `otherDocuments[]` | Avis de situation INSEE | Active |
    | `financialStatements[]` | Annual accounts (bilans) | When filed (formal mapping) |
    | `articlesOfAssociation[]` | Statutes, decisions (actes) | Classified by the register's document type |

    **Non-profits (RNA):**

    | API Category | Document | Notes |
    | - | - | - |
    | `otherDocuments[]` | Avis de situation INSEE | Active and in SIRENE, regardless of RNE registration |
    | `officialPublications[]` | JOAF gazette publications | If published, paid (see [pricing](https://www.topograph.co/pricing)) |
    | `financialStatements[]` | JOAF annual accounts | If published, priced as financial statements (see [pricing](https://www.topograph.co/pricing)) |
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.