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

# Schéma de réponse KYB : référence du payload de décision

> Schéma KYB de Didit : contrôles de registre, personnes clés, KYC des bénéficiaires effectifs, documents et filtrages AML. Dès $2.00 par contrôle.

Cette page décrit la charge utile complète renvoyée par [`GET /v3/session/{id}/decision/`](https://docs.didit.me/fr/sessions-api/retrieve-session) pour une session de vérification d'entreprise (KYB). L'endpoint est unifié : lorsque vous transmettez un `session_id` d'entreprise, la réponse contient `session_kind: "business"` ainsi que les tableaux de fonctionnalités propres aux entreprises décrits ci-dessous.

## Structure de niveau supérieur

```json theme={null}
{
  "session_id": "bs_01H...",
  "session_kind": "business",
  "session_number": 89,
  "session_url": "https://verify.didit.me/...",
  "status": "Approved",
  "status_override": null,
  "workflow_id": "wf_kyb_standard",
  "features": ["KYB_REGISTRY", "AML", "KYB_DOCUMENTS", "KYB_KEY_PEOPLE"],
  "vendor_data": "biz-acme-001",
  "metadata": { },
  "callback": null,

  "registry_checks": [ ... ],
  "aml_screenings": [ ... ],
  "document_verifications": [ ... ],
  "key_people_checks": [ ... ],

  "phone_verifications": null,
  "email_verifications": null,
  "questionnaire_responses": null,
  "ip_analyses": null,

  "reviews": [ ],
  "decision_trace": { ... },
  "linked_records": null,
  "contact_details": { ... },
  "expected_details": null,
  "created_at": "...",
  "expires_at": "..."
}
```

Tous les tableaux de fonctionnalités comportent plusieurs instances : chaque élément représente un nœud dans un graphe de workflow. Null signifie que la fonctionnalité n'était pas présente dans le workflow de cette session.

## Champs de niveau supérieur communs

| Champ | Type | Description |
| - | - | - |
| `session_id` | UUID | Identifiant unique de la session |
| `session_kind` | enum | Toujours `"business"` pour les sessions KYB |
| `session_number` | int | Numéro séquentiel au sein de l'application |
| `session_url` | URL | Lien vers la page de vérification hébergée |
| `status` | enum | Statut global de la session (voir [statuts](https://docs.didit.me/fr/business-verification/statuses.md)) |
| `status_override` | object or null | `{ overridden_at, automatic_status }` lorsqu'un réviseur a défini `status` manuellement, à l'encontre de ce que la plateforme aurait défini (par exemple approuver une entreprise alors qu'une vérification d'une personne clé liée est refusée). `null` lorsque le statut est le statut automatique. Permet de distinguer une approbation manuelle d'une approbation automatique |
| `decision_trace` | object | Déroulement de la décision : `status`, `decided_by` (`manual`, `automatic` ou `investigator`), `decided_at`, `automatic_status`, `terminal_node_id`, `actor`, `warning_counts` et `status_warnings` (les avertissements qui ont défini le statut) |
| `linked_records` | object or null | Résumé des autres enregistrements liés à la session. `null` lorsqu'il n'y a rien à afficher |
| `workflow_id` | UUID | Workflow qui a piloté cette session |
| `features` | array of strings | Identifiants des fonctionnalités exécutées par le workflow (par exemple `KYB_REGISTRY`, `AML`, `KYB_DOCUMENTS`, `KYB_KEY_PEOPLE`, `PHONE`, `EMAIL`) |
| `vendor_data` | string | Votre identifiant de l'entreprise |
| `metadata` | object | JSON libre que vous avez joint à la création de la session |
| `callback` | URL or null | URL de redirection facultative, après la vérification |
| `contact_details` | object or null | `{ email, email_lang, send_notification_emails, phone }` : défini lorsque le workflow inclut des notifications par e-mail ou par téléphone |
| `expected_details` | object or null | Charge utile des données d'entreprise attendues que vous avez transmise à la création : `company_name`, `registry_country` (`XX` ou `XX-YY` avec l'État pour les registres au niveau des États, par exemple `US-CA`), `registration_number` |
| `reviews` | array | Dernières notes du réviseur sur la session |
| `created_at`, `expires_at` | horodatages ISO | — |

## `registry_checks[]`

Chaque élément correspond à une vérification auprès du registre des sociétés (généralement une par session ; plusieurs dans les workflows en graphe avec KYB UBO récursif sur les entreprises).

```json theme={null}
{
  "status": "Approved",
  "node_id": "feature_kyb_registry",
  "data_resolved": true,
  "company": { ...see below... },
  "ownership_structure": { },
  "warnings": []
}
```

| Champ | Description |
| - | - |
| `status` | Statut du cycle de vie de la fonctionnalité (`Approved`, `Declined`, `In Review`, `Not Finished`, `Resub Requested`) |
| `node_id` | Identifiant du nœud du graphe pour cette vérification |
| `data_resolved` | `true` lorsque les données du registre ont fini de se charger, ou lorsque l'utilisateur les a fournies manuellement |
| `company` | Payload complet du registre : voir le **bloc `company`** ci-dessous |
| `ownership_structure` | La table de capitalisation que le registre a confirmée lors de la livraison du niveau d'actionnariat : `shareholders[]` et `beneficial_owners[]`, chacun avec la même identité de registre et la même participation que `company.beneficial_owners[]` (`name`, `entity_type`, `roles`, `ownership_min_shares` / `ownership_max_shares`, ...) et sa `shareholding` canonique. `null` lorsque le registre n'a confirmé aucun actionnariat. Consultez `company.beneficial_owners` et `company.ownership` pour l'enregistrement en vigueur |
| `warnings` | Avertissements structurés et entrées de journal propres à cette vérification du registre. Voir [avertissements de Vérification d'entreprise (KYB)](https://docs.didit.me/fr/business-verification/warnings.md). |

### Bloc `company`

L'objet company imbriqué est la vue complète de l'entité juridique telle qu'elle ressort du registre (et, le cas échéant, telle que modifiée par l'utilisateur) :

```json theme={null}
{
  "uuid": "...",
  "node_id": "feature_kyb_registry",
  "status": "Approved",
  "registry_status": "active",
  "data_resolved": true,
  "company_name": "Acme Corporation Limited",
  "registration_number": "12345678",
  "country_code": "GBR",
  "company_type": "Private Limited",
  "incorporation_date": "2010-05-14",
  "registered_address": "1 Main Street, London EC1A 1AA, United Kingdom",
  "tax_number": "SAMPLE-TAX-12345",
  "risk_level": null,
  "verification_status": "verified",
  "is_from_registry": true,
  "fetch_status": "resolved",
  "alternative_names": "Acme Ltd",
  "nature_of_business": "Software publishing",
  "registered_capital": "100000 GBP",
  "website": "https://acme.example",
  "email": "alex.sample@example.com",
  "phone": "+15550101000",
  "legal_entity_identifier": "529900XXXXXXXXXXXXX",
  "location_of_registration": "London",
  "vat_number": "GB980780684",
  "vat_validation_status": "format_valid",
  "vat_validated_number": "GB980780684",
  "vat_validation_source": "format_rules",
  "vat_validated_name": null,
  "vat_validated_address": null,
  "vat_checked_at": "2026-04-16T10:10:00Z",
  "financial_summary": { },
  "officers": [ ... ],
  "beneficial_owners": [ ... ],
  "addresses": [
    {
      "type": "registered",
      "address": "1 Main Street, London EC1A 1AA, United Kingdom",
      "street": "1 Main Street",
      "city": "London",
      "postal_code": "EC1A 1AA",
      "region": null,
      "country_code": "GB",
      "description": null
    }
  ],
  "industries": [
    { "code": "58290", "description": "Other software publishing", "scheme": "UK SIC 2007", "is_primary": true }
  ],
  "accounts": { ... },
  "ownership": {
    "status": "delivered",
    "tier_requested": "ubo",
    "tier_delivered": "ubo",
    "unavailable_reason": null,
    "direct_ownership_complete": true,
    "unresolved": []
  },
  "registry_tier": "ubo",
  "registry_tier_delivered": "ubo",
  "registry_ownership_status": "delivered",
  "registry_monitoring": null,
  "registry_data": { },
  "user_provided_data": { },
  "confirmed_by_user_at": "2026-04-16T10:10:00Z",
  "last_console_edit_at": null,
  "is_editable": false
}
```

| Champ | Description |
| - | - |
| `registry_status` | Statut transmis par le fournisseur (`active`, `dissolved`, `struck_off`, `inactive`, etc.). Voir les [statuts](https://docs.didit.me/fr/business-verification/statuses.md#statut-du-registre-fourni-par-le-prestataire) |
| `is_from_registry` | `true` lorsque les données proviennent d'un registre officiel ; `false` pour une saisie manuelle |
| `fetch_status` | `pending`, `resolved` ou `failed` : état de la recherche dans le registre |
| `verification_status` | `verified`, `failed` ou `unknown` |
| `risk_level` | Valeur facultative transmise par la source du registre. Généralement `null` : Didit ne calcule pas de niveau de risque, utilisez donc `warnings[]` et le `status` de la session pour décider |
| `registry_monitoring` | La dernière surveillance du registre pour l'entreprise, ou `null` si aucune n'existe. Renseigné uniquement lorsque la [surveillance du registre](https://docs.didit.me/fr/business-verification/ownership.md#surveillance-des-actionnaires-et-des-ubo) est disponible. Champs : `uuid`, `status`, `unavailable_reason`, `enrolled_at`, `cancelled_at`, `last_bill_date`, `next_bill_date`, `last_event_at`, `events_count`, `watched_fields` |
| `is_editable` | `true` tant que les données issues du registre peuvent encore être modifiées par l'utilisateur final |
| `registry_data` | Détail normalisé du registre par Didit : le résultat de l'actionnariat (`ownership_error`, `section_errors`, `ubo_resolution`), les corrections effectuées avec [update-data](https://docs.didit.me/fr/sessions-api/update-data.md), et les informations du registre qui n'ont pas de champ propre. Il ne contient jamais l'enregistrement propre de la source du registre. Ses clés varient selon l'entreprise et il ne s'agit pas d'un contrat stable : lisez plutôt les champs canoniques |
| `user_provided_data` | Les champs saisis ou modifiés par l'utilisateur final (utile pour effectuer une comparaison différentielle avec les valeurs du registre) |
| `confirmed_by_user_at` | Horodatage de la confirmation ou de la modification des données du registre par l'utilisateur final |
| `vat_number` | Numéro de TVA tel que soumis, lorsqu'il a été collecté |
| `vat_validation_status` | Résultat de la validation du numéro de TVA, ou du `tax_number` lorsqu'il n'y en a pas : `valid`, `invalid`, `format_valid`, `invalid_format`, `could_not_validate` ou `not_applicable`. Voir [validation de la TVA et de l'identifiant fiscal](https://docs.didit.me/fr/business-verification/company-data.md#validation-du-numéro-de-tva-et-de-l’identifiant-fiscal) |
| `vat_validated_number` / `vat_validation_source` | Le numéro vérifié, tel que la source le connaît, et la source qui a déterminé le statut (un registre officiel ou `format_rules`) |
| `vat_validated_name` / `vat_validated_address` | Nom et adresse enregistrés auprès de la source, lorsqu'elle les communique |
| `vat_checked_at` | Horodatage de la vérification ; `null` si aucune vérification n'a été effectuée |
| `officers[]` | Dirigeants avec enrichissement KYC intégré (voir ci-dessous) |
| `beneficial_owners[]` | UBO avec enrichissement KYC intégré (voir ci-dessous) |
| `addresses[]` | Toutes les adresses que le registre indique, selon la structure canonique ci-dessous. `null` s'il n'en indique aucune |
| `industries[]` | Les activités sous lesquelles le registre classe l'entreprise, selon la structure canonique ci-dessous. `null` s'il n'en indique aucune |
| `accounts` | Dates de déclaration annuelle et d'assemblée générale, lorsqu'elles sont communiquées : `last_annual_return_date` et `last_agm_date`. Elles décrivent des dépôts et des assemblées, et non des états financiers |
| `ownership` | Le résultat du niveau d'actionnariat (actionnaires / UBO), selon la structure canonique ci-dessous |
| `registry_tier` / `registry_tier_delivered` / `registry_ownership_status` | Le niveau commandé, le niveau livré (et facturé) et le résultat de l'actionnariat. Les mêmes valeurs figurent dans `ownership` |

### Un format unique pour chaque pays et chaque source de registre

Didit consulte les registres des sociétés de nombreux pays, à travers plusieurs sources.
Chaque source publie sa propre mise en page, mais le bloc `company` a toujours la même structure : les clés ci-dessous sont toujours présentes, avec les mêmes types, quels que soient le pays et la source d'où provient l'entreprise.
Une information que le registre ne publie pas vaut `null` ; vous n'avez jamais besoin de traiter différemment selon le pays ni d'analyser `registry_data`.
La même structure est renvoyée par la [décision](https://docs.didit.me/fr/sessions-api/retrieve-session.md), par les endpoints autonomes [de registre KYB](https://docs.didit.me/fr/standalone-apis/kyb-registry-ubo.md) et par le parcours de vérification hébergé.

**Adresse** (chaque élément de `addresses`)

| Champ | Description |
| - | - |
| `type` | En minuscules. `registered` pour le siège social ; autres types tels que le registre les nomme (par exemple `postal`, `office`). `null` lorsque le registre n'indique pas la nature de l'adresse |
| `address` | L'adresse complète sur une seule ligne. Toujours présente |
| `street`, `city`, `postal_code`, `region` | L'adresse sous forme de composants, lorsque le registre les publie |
| `country_code` | ISO 3166-1 alpha-2 |
| `description` | Le libellé propre au registre pour cette adresse, lorsqu'il en fournit un |

**Industrie** (chaque élément de `industries`)

| Champ | Description |
| - | - |
| `code` | Code d'activité tel qu'il figure dans le registre |
| `description` | Libellé de l'activité, lorsque le registre en publie un |
| `scheme` | Système de classification, avec un seul nom par système quelle que soit la source qui l'a communiqué (`UK SIC 2007`, `US SIC`, `NACE Rev. 2`, `NACE Rev. 2.1`, `NAF Rev. 2`, `CNAE`, `SBI`, `NOGA 2008`, `CAE Rev. 4`, `Canada SIC 1977`). Les autres systèmes nationaux conservent le nom propre au registre ; `null` lorsque le registre ne le nomme pas |
| `is_primary` | `true` pour l'activité principale. Exactement une entrée est principale |

Lorsque le registre indique des activités mais aucune description de l'activité, `nature_of_business` est renseigné à partir des libellés d'activité.
Les coordonnées et les noms alternatifs sont renseignés lorsqu'ils sont disponibles ; les modifications explicites de l'utilisateur ou du réviseur ont toujours la priorité.

**Actionnariat** (`ownership`)

| Champ | Description |
| - | - |
| `status` | `delivered` ; `not_held` lorsque le registre de l'actionnariat a répondu et ne mentionne pas du tout cette entreprise, il n'existe alors aucun enregistrement d'actionnariat à fournir ; `unavailable` lorsque les données n'ont pas été fournies pour toute autre raison (un enregistrement qui ne nomme aucun propriétaire, une section d'actionnariat non renvoyée, ou un fournisseur qui n'a pas pu être interrogé) ; `pending` tant que le registre récupère encore la section d'actionnariat ; `not_requested` sur le niveau Basic |
| `tier_requested` / `tier_delivered` | `basic`, `shareholders` ou `ubo`. Une demande UBO à laquelle il n'est répondu que par les actionnaires directs est livrée, et facturée, comme `shareholders` |
| `unavailable_reason` | Raison pour laquelle un niveau d'actionnariat demandé n'a pas été livré : `no_owners_on_record`, `no_natural_person_owner`, `ownership_section_unavailable`, `company_not_found`, `ambiguous_company_match`, `missing_registration_number`, `entity_type_not_covered`, `provider_unavailable` ou `other`. `null` lorsque l'actionnariat a été livré |
| `direct_ownership_complete` | `true` lorsque les participations déclarées des actionnaires directs totalisent 100 % (à un point de pourcentage près, pour les arrondis), `false` lorsque ce n'est pas le cas, `null` lorsque l'actionnariat n'a pas été livré ou qu'une participation n'est pas déclarée |
| `unresolved[]` | Parties de la chaîne d'actionnariat que le registre n'a pas pu résoudre, sous la forme `{ reason, section }` (par exemple `no_group_structure_on_record` pour `group_structure` : les propriétaires directs sont connus, mais le groupe de sociétés situé au-dessus d'eux ne figure pas dans les registres) |

**Détail du registre** (`registry_data`)

Le détail propre à Didit sur la vérification au registre, jamais l'enregistrement de la source du registre.
Chaque clé est facultative et n'est présente que lorsque la société dispose d'une valeur pour cette clé ; de nouvelles clés peuvent être ajoutées : pour tout ce que couvrent les champs canoniques ci-dessus, reportez-vous à ces derniers.

| Champ | Description |
| - | - |
| Informations du registre (`legal_address`, `registered_address`, `registration_date`, `dissolution_date`, `registry_status`, `verification_status`, `company_type`, et les autres champs acceptés par [update-data](https://docs.didit.me/fr/sessions-api/update-data.md)) | Chaînes de caractères. Les corrections apportées avec update-data, et les informations que le registre déclare sans champ qui leur soit propre (`registration_date`, `dissolution_date`) |
| `ownership_error` | Raison pour laquelle un niveau d'actionnariat demandé n'a pas été livré, avec les mêmes codes que `ownership.unavailable_reason` (`no_owners_on_record`, `ownership_section_unavailable`, `company_not_found`, `provider_unavailable`, `other`, ...) |
| `section_errors` | Sections que le registre n'a pas renvoyées, par section (`officers`, `shareholders`, `group_structure`), chacune sous la forme `{ status_code }` |
| `ubo_resolution` | Comment le niveau UBO a parcouru la chaîne : `parent_chain[]` et `subsidiaries[]` sous la forme `{ name, country_code, registration_number }`, et `unresolved[]` sous la forme `{ reason, section }` |
| `lite_enrichment` | Champs Lite vides renseignés par une autre source de registre du pays : `{ fields[], people_added }` |
| `registry_metadata`, `registry_sources[]`, `previous_names[]`, `parent_companies[]`, `documents_available` | Uniquement pour les anciens enregistrements du registre : les champs propres au registre, les registres officiels consultés (`{ name, source_type }`, seuls les registres officiels sont nommés), les anciens noms, les noms des sociétés mères et le nombre de dépôts disponibles |

### Structure d'un élément dirigeant (dans `company.officers`)

```json theme={null}
{
  "uuid": "...",
  "name": "Jane Doe",
  "first_name": "Jane",
  "last_name": "Doe",
  "date_of_birth": null,
  "date_of_birth_year": 1983,
  "date_of_birth_month": 2,
  "address": "1 Example Street, London",
  "appointment_date": "2024-07-01",
  "termination_date": null,
  "designation": "Director",
  "role": "director",
  "nationality": "USA",
  "is_active": true,
  "kyc_status": "Approved",
  "kyc_session_url": "https://verify.didit.me/..."
}
```

`date_of_birth` n'est renseigné que lorsque le registre fournit une date complète.
Si le registre ne fournit qu'une année, ou un mois et une année, utilisez `date_of_birth_year` et `date_of_birth_month` ; le jour manquant n'est jamais déduit.
Les noms, les informations de naissance, l'adresse et les dates de nomination restent disponibles à la fois dans la liste des dirigeants de la société et dans la liste des personnes clés du registre.

### Structure d'un élément bénéficiaire effectif (dans `company.beneficial_owners`)

```json theme={null}
{
  "uuid": "...",
  "name": "John Doe",
  "first_name": "John",
  "last_name": "Doe",
  "entity_type": "person",
  "date_of_birth": null,
  "country_of_birth": null,
  "email": null,
  "company_name": null,
  "registration_number": null,
  "nationality": null,
  "designation": null,
  "appointment_date": null,
  "voting_min_shares": null,
  "voting_max_shares": null,
  "roles": ["ubo"],
  "ownership_min_shares": "40",
  "ownership_max_shares": "40",
  "is_active": true,
  "kyc_status": "Pending",
  "kyc_session_url": "https://verify.didit.me/...",
  "effective_ownership_percent": 40.0,
  "shareholding": {
    "share_class": "Ordinary",
    "number_of_shares": 40,
    "currency": "GBP",
    "nominal_value": 1,
    "total_value": null,
    "percentage": 40
  }
}
```

`kyc_status` utilise une projection adaptée au B2C : `Approved`, `Declined` ou `Pending` (les états complets de session sont regroupés sous `Pending` tant que le KYC n'est pas terminé).

`shareholding` indique ce que le bénéficiaire détient, avec la même structure pour chaque pays et chaque source de registre : `share_class`, `number_of_shares`, `currency`, `nominal_value`, `total_value` et `percentage` (la participation exacte, arrondie à quatre décimales).
Il vaut `null` lorsque le registre ne mentionne aucune détention.
Une tranche, comme les 25-50 % d'un PSC britannique, n'est pas une participation : `percentage` vaut `null` et la tranche reste dans `ownership_min_shares` / `ownership_max_shares`.
Les actionnaires et les bénéficiaires effectifs figurent tous deux dans `beneficial_owners` ; `roles` permet de les distinguer.

## `key_people_checks[]`

Cette vérification agrégée porte sur tous les dirigeants et bénéficiaires effectifs de la session. Elle expose deux blocs afin que la console puisse afficher côte à côte les informations « extraites du registre » et celles « soumises par l'entreprise », ainsi qu'un résumé KYC de haut niveau des bénéficiaires effectifs.

```json theme={null}
{
  "status": "Approved",
  "node_id": "feature_kyb_key_people",
  "registry": {
    "officers": [ ...registry-derived officers... ],
    "beneficial_owners": [ ...registry-derived UBOs... ]
  },
  "submitted": {
    "parties": [ ...user-submitted key-people records... ]
  },
  "ubo_kyc_summary": {
    "total": 2,
    "approved": 1,
    "flagged": 0,
    "pending": 1
  },
  "warnings": []
}
```

* **`registry.officers` / `registry.beneficial_owners`** : parties extraites de la vérification du registre.
* **`submitted.parties`** : parties que l'administrateur de l'entreprise a ajoutées explicitement pendant le flux Key People (enregistrements avec `source = "USER"`).

### `registry.officers[]` / `registry.beneficial_owners[]`

Les informations du registre correspondent à `company.officers` / `company.beneficial_owners` ci-dessus.
Key People inclut en plus le statut AML et le lien de vérification détaillé, comme `kyc_session_id` et les champs de workflow de vérification.
Les listes de l'entreprise conservent leur statut KYC simplifié existant et leur URL de vérification.

### `submitted.parties[]`

Les parties soumises par l'utilisateur portent leur lien vers la session KYC ou la session KYB enfant :

```json theme={null}
{
  "uuid": "...",
  "entity_type": "person",
  "name": "Alice Chen",
  "first_name": "John",
  "last_name": "Doe",
  "email": "alex.sample@example.com",
  "role": "ubo",
  "ownership_percent": 35.0,
  "nationality": "USA",
  "position": "CEO",
  "date_of_birth": "1990-01-01",
  "phone_number": "+34612345678",
  "source": "USER",
  "requires_verification": true,
  "is_skipped": false,
  "kyc_session_id": "sess-xyz...",
  "kyc_session_status": "Not Started",
  "kyc_session_url": "https://verify.didit.me/...",
  "kyc_session_deleted": false,
  "custom_fields": { }
}
```

Les parties de type entreprise (`entity_type: "company"`) portent en plus `company_name`, `registration_number` et `kyb_sub_session_id` / `kyb_sub_session_status` / `kyb_sub_session_deleted` lorsque le KYB imbriqué est activé pour les bénéficiaires effectifs de type entreprise.

`kyc_session_deleted` (et son équivalent pour les entreprises, `kyb_sub_session_deleted`) vaut `true` lorsque la session enfant de la partie a été supprimée. Une session enfant supprimée conserve le statut qu'elle avait au moment de la suppression et ne peut jamais aboutir. Lisez donc cet indicateur plutôt que le statut : le `*_session_url` correspondant est renvoyé avec la valeur `null` car le lien ne mène plus nulle part, et la vérification Key People passe à `In Review` au lieu d'attendre indéfiniment. La suppression d'une session enfant n'est jamais considérée comme une réussite. Pour exempter la partie, utilisez [`PATCH /v3/session/{id}/kyb/parties/{party_uuid}/`](https://docs.didit.me/fr/sessions-api/update-data#ignorer-une-partie-des-personnes-clés) afin de permettre au KYB d'aboutir.

### `ubo_kyc_summary`

Progression agrégée du KYC des bénéficiaires effectifs, utile pour une seule carte de tableau de bord :

| Champ | Signification |
| - | - |
| `total` | Nombre de bénéficiaires effectifs actifs ayant une session KYC liée |
| `approved` | Bénéficiaires effectifs dont la session KYC est `Approved` |
| `flagged` | Bénéficiaires effectifs dont la session KYC est `Declined` ou `In Review` |
| `pending` | Tous les autres (pas encore terminés) |

Renvoie `null` lorsqu'aucun bénéficiaire effectif n'a de session KYC liée.

## `document_verifications[]`

Documents regroupés par nœud :

```json theme={null}
{
  "status": "Approved",
  "node_id": "feature_kyb_documents",
  "items": [
    {
      "uuid": "...",
      "document_type": "LEGAL_PRESENCE",
      "document_subtype": "CERTIFICATE_OF_INCORPORATION",
      "document_group": "LEGAL_PRESENCE",
      "status": "Approved",
      "file_url": "https://didit-storage.s3...",
      "document_metadata": {
        "file_size": 246810,
        "content_type": "application/pdf",
        "creation_date": "2024-05-15",
        "modified_date": "2024-05-15",
        "overlay_manipulation": null
      },
      "ocr_data": {
        "company_name": "Acme Corporation Limited",
        "registration_number": "12345678",
        "incorporation_date": "2010-05-14"
      }
    }
  ],
  "groups": {
    "LEGAL_PRESENCE": { "total": 1, "approved": 1, "pending": 0, "declined": 0, "in_review": 0, "other": 0, "missing": 0 },
    "OWNERSHIP_STRUCTURE": { "total": 1, "approved": 1, "pending": 0, "declined": 0, "in_review": 0, "other": 0, "missing": 0 }
  },
  "required_groups": ["LEGAL_PRESENCE", "OWNERSHIP_STRUCTURE"],
  "warnings": []
}
```

| Champ | Description |
| - | - |
| `items[]` | Lignes de documents individuelles : chacune possède son propre `status`, `document_type` et `document_group` (le groupe), `document_subtype`, `file_url` (signée), `document_metadata` et l'extrait OCR |
| `groups` | Compteurs de progression par groupe, indexés par la valeur du groupe (`LEGAL_PRESENCE`, `COMPANY_DETAILS`, `OWNERSHIP_STRUCTURE`, `REPRESENTATIVES_AUTHORIZATION`, ainsi que `OTHER` pour les documents non classés). Chaque groupe contient `total`, `approved`, `pending`, `declined`, `in_review`, `other` et `missing`. Voir les [groupes de documents KYB](https://docs.didit.me/fr/business-verification/documents.md#groupes-de-documents) |
| `required_groups` | Groupes que votre workflow a marqués comme requis ; l'approbation de la session n'est accordée que si tous sont satisfaits |

### Métadonnées des documents d'entreprise

Pour les documents d'entreprise au format PDF, `items[].document_metadata.overlay_manipulation` peut inclure des preuves criminalistiques de modification suspectée du texte superposé. Lorsqu'elles sont présentes, elles comprennent :

| Champ | Description |
| - | - |
| `analysis_incomplete` | Présent et `true` uniquement lorsque le fichier n'a pas pu être vérifié intégralement. Ce qui a pu être vérifié conserve ses résultats, et le document déclenche `KYB_DOCUMENT_UNPROVEN_TEXT_REPLACEMENT`. |
| `detected` | Indique si des preuves de manipulation du texte superposé ont été détectées |
| `analyzed` | Indique si le PDF a pu être analysé |
| `signals` | Signaux criminalistiques déclenchés, tels que `duplicate_font_subset` ou `glyph_fragmentation` |
| `manipulated_regions` | Rectangles en coordonnées de page PDF entourant le texte suspecté d'avoir été modifié : `page`, `x`, `y`, `width`, `height`, `page_width`, `page_height` |

Le champ vaut `null` lorsqu'aucune preuve de superposition n'a été trouvée, lorsque le document n'est pas un PDF, ou lorsque le PDF n'a pas pu être analysé.

## `aml_screenings[]`

Filtrage AML au niveau de l'entreprise et, lorsque le workflow les intègre, au niveau des personnes.

```json theme={null}
{
  "node_id": "feature_aml",
  "status": "Approved",
  "total_hits": 0,
  "score": 0,
  "entity_type": "COMPANY",
  "screened_data": {
    "company_name": "Acme Corporation Limited",
    "country_code": "GBR"
  },
  "is_ongoing_monitoring_enabled": true,
  "next_ongoing_monitoring_bill_date": "2027-04-16",
  "last_ongoing_screening_at": "2026-09-12T04:03:11Z",
  "last_ongoing_screening_datasets_updated_at": null,
  "hits": [],
  "warnings": []
}
```

Lorsque `total_hits > 0`, chaque résultat comprend le score de correspondance, le score de risque, les sources de listes de surveillance et un `review_status` propre à chaque résultat, que vous pouvez mettre à jour via l'endpoint update-aml-hit-status. Consultez le [rapport de filtrage AML](https://docs.didit.me/fr/core-technology/aml-screening/report-aml-screening.md) pour la structure des résultats.

## Tableaux de fonctionnalités partagés

`phone_verifications`, `email_verifications`, `questionnaire_responses` et `ip_analyses` utilisent les mêmes formats d'éléments que les sessions utilisateur (KYC). Ils valent `null` lorsque le workflow ne les inclut pas. Consultez la [réponse KYC](https://docs.didit.me/fr/sessions-api/retrieve-session.md) pour le schéma des éléments.

`signatures` est présent lorsque le workflow comporte une étape de [signature électronique](https://docs.didit.me/fr/core-technology/electronic-signature/overview.md). Une session d'entreprise compte un élément par personne clé qui signe pour l'entreprise, avec `signer.capacity: "company"`, le nom de l'entreprise et les rôles de la personne clé. Consultez le [rapport de signature électronique](https://docs.didit.me/fr/core-technology/electronic-signature/report-electronic-signature.md).

## Groupes de fonctionnalités des avertissements

Les avertissements de la Vérification d'entreprise (KYB) sont regroupés par la fonctionnalité qui les a produits :

* `KYB_REGISTRY` pour la disponibilité du registre, l'actionnariat, l'activité de l'entreprise et les problèmes de restriction par pays.
* `KYB_DOCUMENTS` pour l'extraction des documents d'entreprise, le recoupement, les métadonnées, la manipulation, le sous-type, l'âge et les problèmes de limite de tentatives.
* `AML` pour les correspondances de filtrage AML de l'entreprise ou les données de filtrage manquantes.
* `KYB_KEY_PEOPLE` pour les problèmes au niveau des personnes liés aux administrateurs, dirigeants, bénéficiaires effectifs ou représentants.
* `PHONE` pour le risque lié au numéro de téléphone, les doublons, la liste de blocage et les problèmes liés aux tentatives de saisie du code de vérification.
* `EMAIL` pour le risque lié à l'e-mail, la délivrabilité, les doublons, la liste de blocage et les problèmes liés aux tentatives de saisie du code de vérification.
* `QUESTIONNAIRE` pour les règles de statut personnalisées déclenchées par les réponses au questionnaire.
* `LOCATION` pour l'analyse de l'appareil et de l'IP, les réseaux privés, la liste de blocage IP, la liste de blocage des appareils et les problèmes de doublons d'appareil ou d'IP.
* `SIGNATURE` pour les refus de signature électronique, les échecs de confirmation de code, les écarts de nom du signataire, les signataires non vérifiés, les documents modifiés et les données de champ manquantes. Voir les [avertissements de signature électronique](https://docs.didit.me/fr/core-technology/electronic-signature/warnings-electronic-signature.md).

Voir les [avertissements de la Vérification d'entreprise (KYB)](https://docs.didit.me/fr/business-verification/warnings.md) pour la liste complète des codes d'avertissement.

## Filtrage des champs selon le workflow

Les workflows peuvent limiter les champs imbriqués affichés pour chaque élément de fonctionnalité via `response_attributes`. Les champs `status`, `warnings` et `node_id` sont toujours inclus, quelle que soit la configuration. Tous les autres champs qui ne figurent pas dans la liste d'autorisation sont remplacés par une valeur nulle : la clé reste présente dans la réponse afin de garantir la stabilité du schéma.

## Étapes suivantes

> [card] [Statuts](https://docs.didit.me/fr/business-verification/statuses.md)
>
> Signification de chaque valeur de statut.

> [card] [Évaluation des risques](https://docs.didit.me/fr/business-verification/risk-assessment.md)
>
> Ce qui détermine le résultat d'une vérification KYB.

> [card] [Rapport AML](https://docs.didit.me/fr/core-technology/aml-screening/report-aml-screening.md)
>
> Référence complète du payload des résultats AML.

> [card] [Personnes clés](https://docs.didit.me/fr/business-verification/key-people.md)
>
> Comment les parties issues du registre ou de la soumission de l'utilisateur sont réparties dans les groupes `registry` et `submitted`.

> [card] [Documents](https://docs.didit.me/fr/business-verification/documents.md)
>
> Groupes de documents, OCR et recoupement.

> [card] [Récupérer la session](https://docs.didit.me/fr/sessions-api/retrieve-session.md)
>
> Référence complète de l'endpoint, avec des exemples de réponses.


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