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.France coverage, pricing, and sources
Table of Contents
- Data Sources
- Company Identifiers
- Search Capabilities
- Prefill mode (fast retrieval)
- Quirks & Gotchas
- Mappings
- Data Availability
- 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.
When do non-profits appear in RNE vs RNA vs SIRENE?
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
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.- RNE (INPI) — Query to the INPI registry (with automatic fallback if the live API is temporarily unavailable)
- SIRENE-only — For entities in INSEE but not in RNE (limited dataset: name, legal form, activity, status, employee count)
- RNA tables — Waldec, Import, and Alsace-Moselle (first match wins)
- BODACC — Last resort, for entities with legal announcements but no registry data (data extracted from announcement text)
- Check if the RNA number has a SIREN in SIRENE. If yes, check if that SIREN exists in RNE. If yes, use RNE data
- RNA Waldec — Non-profits created or modified since 2009
- RNA Import — Historical non-profits (no changes declared since 2009)
- RNA Alsace-Moselle — Local law non-profits (departments 57, 67, 68)
Verification Status and Source Labels
In verification mode, current RNE data is reported aslive_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:UBO Data Handling
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 theROLE_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
ultimateBeneficialOwnersdatapoint is fetched under your INPI account and carries the un-redacted personal fields. - The
ultimateBeneficialOwnersCertificatedocument (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.
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.
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 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.Company Identifiers
Query Identifiers
Identifiers in API Response
Once you retrieve company data, theidentifiers object contains all available identifiers for that entity:
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 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 Source Priority
Search queries are dispatched across five sources in priority order:- Index lookup by ID — Pre-built search index for identifier-based searches (SIREN, SIRET, VAT, RNA, Alsace-Moselle)
- RNE by ID — Live INPI API lookup for identifier-based searches
- Index search by Name — Pre-built search index for name-based fuzzy searches
- RNE by Name — Live INPI API for name-based searches
- BODACC by ID — Last resort, SIREN/SIRET only
Active companies only
Search can return companies that are no longer active.activeOnly=true 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)
UsePOST /v2/company with mode: "prefill" 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).
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).
Quirks & Gotchas
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:SIRENE (fallback source)
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 staysactive: true), and the closure of a liquidation moves it to Closed. A status the register already reports as closed is never changed.
RNA Waldec / RNA Import
active and no standardized status.
RNA Alsace-Moselle
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.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.Key Business Forms
Sole Entrepreneurs
Cooperatives
Civil Companies
Non-Profits
RNA Non-Profit Legal Forms (deterministic, no AI)
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).
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.Public Entities
Foreign Entities
Other Private Structures
Social Security & Mutual Organizations
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, andisLegalRepresentative flag based on French corporate law. No AI is involved.
Complete RNE Role Mapping (84 roles)
Legal Representatives (30 roles) -- registered representative capacities
Legal Representatives (30 roles) -- registered representative capacities
Board & Supervisory Roles (19 roles) -- no separate representation mandate recorded
Board & Supervisory Roles (19 roles) -- no separate representation mandate recorded
Audit & Control Roles (6 roles) -- NOT legal representatives
Audit & Control Roles (6 roles) -- NOT legal representatives
Partner & Associate Roles (9 roles) -- NOT legal representatives
Partner & Associate Roles (9 roles) -- NOT legal representatives
Non-Profit Functional Roles (6 roles) -- no representation inferred from title
Non-Profit Functional Roles (6 roles) -- no representation inferred from title
Other & Administrative Roles (14 roles) -- NOT legal representatives
Other & Administrative Roles (14 roles) -- NOT legal representatives
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).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: theshareholders 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: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.
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).We read that assignment directly. For a company INSEE recorded as 86.90F (NAF rev. 2) and assigned 86.93Y (NAF 2025):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.NAF_REV2, with INSEE’s official French label.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: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.isMainActivity: true, and the NACE and ISIC codes derived from it inherit the flag.isAIInferred flag to distinguish official vs. AI-derived codes. NAF_REV2 and NACE codes are never AI-inferred for France.company.establishments[] carries its own activities object (NAF_REV2 + NACE + ISIC), in the same shape as the company-level activities.Activity Codes by Source
Data Availability
Data Availability Matrix
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 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 guide for the response shape.
Employee Count Tranches (SIRENE)
Documents by Company Type
Commercial companies & sole entrepreneurs (SIREN)
Non-profits (RNA Waldec, RNA Import, Alsace-Moselle)
otherDocuments[]. It contains registration details, activity code, and address from the SIRENE directory.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) and include two sources: JOAFE (gazette publications) and DCA (annual accounts).Example API Responses
All examples use placeholder data. Query:POST /v2/company with { "id": "<id>", "countryCode": "FR", "dataPoints": ["company", "legalRepresentatives"] }
Active SAS (Source: RNE) -- with UBOs
Active SAS (Source: RNE) -- with UBOs
Closed SARL (Source: RNE)
Closed SARL (Source: RNE)
active: false, status Fermé, and endDate on establishments. The K-Bis, the uncertified extract and the UBO extract are not available for closed companies.Sole Entrepreneur -- EI (Source: RNE)
Sole Entrepreneur -- EI (Source: RNE)
shareholders datapoint returns datapoint_not_applicable at no charge. legalName is the individual’s name.Non-profit -- Association déclarée (RNA Waldec)
Non-profit -- Association déclarée (RNA Waldec)
Non-profit -- Association de droit local (RNA Alsace-Moselle)
Non-profit -- Association de droit local (RNA Alsace-Moselle)
ALSACE_MOSELLE classification instead of RNA nomenclature. Status Inscrite (not Active). Court codes: THI (Thionville), MET (Metz), SAG (Sarreguemines).UBO Response (dedicated datapoint)
UBO Response (dedicated datapoint)
"dataPoints": ["ultimateBeneficialOwners"]:control.details, each marked direct or indirect.Available Documents (company example)
Available Documents (company example)
"dataPoints": ["availableDocuments"] is requested.Commercial companies & sole entrepreneurs (SIREN):