---
title: "France"
url: "https://developer.incode.com/general-reference/france/"
section: "general-reference"
group: "eKYB Reference / eKYB Prefill Coverage"
version: "v1.1"
status: "live"
---
# France

eKYB Prefill in France leverages France's source of truth to automatically retrieve and populate business information based on a company's SIREN, SIRET, RCS, RC, or VAT number, including the business name, registered address, entity type, registration status, directors, shareholders, and additional financial and corporate data, without requiring manual input from the user.

## Source

| Country | Source | Description |
| --- | --- | --- |
| France | `FR_KYB_PREFILL` | Returns matching French business details from France's source of truth for pre-fill. |

## Direct API approach

For general integration notes and shared response semantics, see the [eKYB Prefill API Reference](/general-reference/ekyb-prefill-api-reference/).

All module configurations and user data can be forwarded directly in the request for performing a Prefill lookup. This overrides existing configuration and data collected about the user.

### Endpoint

`POST /omni/externalVerification/ekyb-prefill`

### Request parameters

| Parameter | Required | Description |
| --- | --- | --- |
| plugins | Mandatory | String array. Must be `["ekyb-prefill"]`. Specifies the Prefill flow. |
| source | Mandatory | String. Must be `FR_KYB_PREFILL`. Identifies the Prefill source. |
| country | Mandatory | String. Two-letter Alpha-2 country code. Must be `FR`. |
| taxId | Mandatory | String. French business identifier. See Tax ID formats for details. |
| businessName | Optional | String. Registered name of the business. When provided, adds `nameMatch` to the response. |
| address | Optional | String. Business address as a freeform string. When provided, adds `addressMatch` to the response. |

### Tax ID formats

The `taxId` field accepts five French business identifier types. Routing between them is determined automatically by the format of the submitted value.

| **ID Type** | **Description** | **Format** | **Example** |
|---|---|---|---|
| **SIREN** | Company-level identifier issued by INSEE | 9 numeric digits | `775670417` |
| **SIRET** | Establishment-level identifier (SIREN + NIC suffix) | 14 numeric digits (9-digit SIREN + 5-digit NIC) | `12345678901234` |
| **RCS** | Registre du Commerce et des Sociétés number | `RCS` + registering court city + SIREN | `RCS Paris 775 670 417` |
| **RC** | Registre du Commerce number for artisans/crafts | `RC` + city + registration number | Paris 123 456 789 |
| **VAT number** | French intra-community VAT identifier | `FR` + 2-digit check code + 9-digit SIREN (13 characters total) | `FR81775670417` |

Inputs that do not match any of the above formats return a 400 error.

### Sample request

```json
{
    "plugins": ["ekyb-prefill"],
    "source": "FR_KYB_PREFILL",
    "country": "FR",
    "taxId": "12345678901234",
    "businessName": "Entreprise Exemple SAS",
    "address": "10 Rue de Rivoli, 75001 Paris, France"
}
```

### Sample response

The Prefill response returns business data retrieved directly from the source of truth. Fields are returned as-is from the source. `nameMatch` and `addressMatch` are only present when `businessName` or `address` were submitted in the request. `vatNo` and `leiNumber` are only present when available on file for the company.

**Example 1 — ABERMIDONE (small company)**

```json
{
  "kyb-prefill": [
    {
      "tin": "12345678901234",
      "vatNo": "FR12345678901",
      "name": "ABERMIDONE",
      "nameMatch": "Verified",
      "address": "10 Rue de Rivoli, 75001 Paris, France",
      "city": "Paris",
      "postalCode": "75001",
      "entityType": "Simplified joint stock company",
      "registrationStatus": "Active",
      "registrationDate": "2013-09-25T00:00:00Z",
      "creditRating": "B",
      "creditRatingDescription": "Low Risk",
      "industryDesc": "Retail sale via home-shopping by general catalogue",
      "activityDesc": "Retail sale via home-shopping by general catalogue",
      "employeeCount": "7 to 9 employees",
      "otherAddresses": [
        { "type": null, "otherAddress": "33185 LE HAILLAN" },
        { "type": null, "otherAddress": "75008 PARIS" }
      ],
      "shareholders": [
        { "name": "Groupe Exemple SA", "percentSharesHeld": 100 }
      ],
      "directors": [
        { "name": "Groupe Exemple SA", "positionName": "President" }
      ],
      "ultimateParent": { "name": "Groupe Exemple SA", "country": "FR" },
      "immediateParent": { "name": "Groupe Exemple SA", "country": "FR" }
    }
  ]
}
```

**Example 2 — LVMH MOET HENNESSY LOUIS VUITTON (large public company)**

```json
{
  "kyb-prefill": [
    {
      "tin": "12345678901234",
      "vatNo": "FR12345678901",
      "leiNumber": "549300ECLIPSELUXE199",
      "name": "Maison Éclipse Luxe SAS",
      "nameMatch": "Verified",
      "address": "108 AVENUE RIVIÈRE 75008 PARIS",
      "city": "PARIS",
      "postalCode": "75008",
      "entityType": "European Company",
      "registrationStatus": "Active",
      "registrationDate": "1989-01-13T00:00:00Z",
      "creditRating": "A",
      "creditRatingDescription": "Very Low Risk",
      "industryDesc": "Activities of head offices",
      "activityDesc": "Activities of head offices",
      "turnover": { "currency": "EUR", "value": 748000000 },
      "employeeCount": "20",
      "shareholders": [
        { "name": "FINANCIÈRE ÉCLAT", "percentSharesHeld": 6.73 },
        { "name": "FAMILLE BEAUMONT", "percentSharesHeld": 0.57 }
      ],
      "directors": [
        { "name": "M BERNARD BEAUMONT", "positionName": "Chairman of the Board" },
        { "name": "Mme LYDIA ANNA-NOËLLE DUNE", "positionName": "Administrator" }
      ]
    }
  ]
}
```

### Response fields

| Key | Value | Description |
| --- | --- | --- |
| tin | SIREN or SIRET | The company registration number as confirmed by the source of truth. |
| vatNo | VAT number | The French VAT number (TVA intracommunautaire) as returned from the source of truth (for example, `FR81775670417`). Only present when available on file for the company. |
| leiNumber | LEI number | The Legal Entity Identifier as returned from the source of truth. Only present when available — not all French companies have one. |
| name | Business name | The registered legal name of the business as returned from the source of truth. |
| nameMatch | Verified, Approximate Match, Unverified | Match result comparing the submitted `businessName` against the name on file. Only present when `businessName` was submitted in the request. See Name and address match values for details. |
| address | Registered address | The primary registered address of the business as returned from the source of truth. |
| addressMatch | Verified, Approximate Match, Unverified | Match result comparing the submitted `address` against the registered address on file. Only present when `address` was submitted in the request. See Name and address match values for details. |
| city | City | The city of the registered address as returned from the source of truth. |
| postalCode | Postal code | The postal code of the registered address as returned from the source of truth. |
| entityType | Entity type | The legal form of the business as returned from the source of truth (for example, `Simplified joint stock company`, `European Company`). Defaults to `Unknown` when not available. |
| registrationStatus | Registration status | The current company status as returned from the source of truth (for example, `Active`). Defaults to `Unknown` when not available. |
| registrationDate | Date | The date the company was registered, as returned from the source of truth. May not be present for all companies. |
| creditRating | Credit rating value | The standardized credit rating value (for example, `A`). Defaults to `Unknown` when not available. |
| creditRatingDescription | Credit rating description | A human-readable description of the credit rating (for example, `Very Low Risk`). |
| industryDesc | Industry description | The primary activity description as returned from the source of truth (for example, `Activities of head offices`). |
| activityDesc | Activity description | The principal activity description as returned from the source of truth. For France, this is typically identical to `industryDesc`. |
| turnover | `{currency, value}` object or string range | The latest turnover figure or range as returned from the source of truth. Passed through as-is — may be an exact `{currency, value}` object for larger companies or absent entirely for smaller companies. May not be present for all companies. |
| employeeCount | String | The latest employee count as returned from the source of truth. May be an exact number (for example, `"20"`) or a range (for example, `"6 to 9 employees"`) depending on the company. Always returned as a string. May not be present for all companies. |
| otherAddresses | Array of `{type, otherAddress}` | Additional addresses on file, other than the primary registered address. May not be present for all companies. |
| websites | Array of strings | Website URLs associated with the business as returned from the source of truth. May not be present for all companies. |
| shareholders | Array of `{name, percentSharesHeld}` | Shareholders associated with the business as returned from the source of truth. May not be present for all companies. |
| directors | Array of `{name, positionName}` | Current directors and officers as returned from the source of truth. `positionName` reflects the primary position title on file. May not be present for all companies. |
| ultimateParent | `{name, country, registrationNumber}` | Ultimate parent company, if available. Absent when the entity sits at the top of its own group structure. |
| immediateParent | `{name, country, registrationNumber}` | Immediate parent company, if available. Absent when the entity sits at the top of its own group structure. |

### Name and address match values

| Status | Description |
| --- | --- |
| Verified | Exact match found against registry data. |
| Approximate Match | Similar match found; may reflect minor differences in naming or address formatting. |
| Unverified | No match found in registry data. |

### Registration status values

| Status | Description |
| --- | --- |
| Active | The company is currently active and registered. |
| Inactive | The company registration is dissolved, struck off, or no longer active. |
| Unknown | The registration status could not be determined. |

## Error responses

For standard HTTP response codes, see the API Error Response page. France Prefill returns the following country-specific 400 errors.

`taxId` is missing, empty, or does not match a supported French identifier format (SIREN, SIRET, RCS, RC, or VAT number):

```json
{
    "timestamp": 1782851408892,
    "status": 400,
    "error": "Bad Request",
    "message": "taxId must be a valid French identifier: SIREN (9 digits), SIRET (14 digits), RCS (RCS + city + number), RC (RC + city + number), or VAT number (FR + 11 characters)",
    "path": "/omni/externalVerification/ekyb-prefill"
}
```

Any mandatory field (`plugins`, `source`, `country`, or `taxId`) is missing:

```json
{
    "timestamp": 1782851468367,
    "status": 400,
    "error": "Bad Request",
    "message": "must not be blank",
    "path": "/omni/externalVerification/ekyb-prefill"
}
```





No business match is found for the submitted `taxId`:

```json
{
    "timestamp": 1782851583695,
    "status": 200,
    "message": "No business found matching the provided tax ID.",
    "path": "/omni/externalVerification/ekyb-prefill"
}
```

## Single Session Dashboard results

Prefill results are available on the Business tab in [single Session view](/dashboard-platform-administration/single-session-view/).