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

# Codes de résultat de validation en base de données

> Codes de résultat de la validation en base de données Didit : correspondance, rejet, introuvable, décédé. Dès $0.05/vérification.

L'API de [Validation en base de données](https://docs.didit.me/fr/core-technology/database-validation/overview.md) de Didit interroge le registre d'état civil faisant autorité pour chaque pays — RENAPER (Argentine, \$0.20/vérification avec correspondance faciale biométrique), Receita Federal (Brésil, \$0.20), Tribunal Electoral SIB (Panama, \$0.75 biométrique), Junta Central Electoral (République dominicaine, \$0.05) et 14 autres — facturée par requête réussie, sans minimum mensuel.

Lorsque vous exécutez une validation en base de données, vous recevez deux niveaux de résultat :

1. Un **code de résultat standard** qui fonctionne de la même manière dans tous les pays pris en charge, vous permettant ainsi d'écrire une seule logique de traitement commune à tous.
2. Un **code de détail spécifique au pays** facultatif qui vous indique exactement la condition renvoyée par le registre gouvernemental — utile pour le support, l'analytique et pour décider s'il convient d'inviter l'utilisateur à réessayer.

Cette page répertorie chaque valeur possible et vous indique comment réagir face à chacune d'elles.

## Codes de résultat standard

Ces codes sont identiques pour tous les pays. Fondez votre logique d'examen, de refus et de nouvelle tentative sur ces codes — et non sur les codes de détail par pays.

| Code de résultat | Signification | Réessayable ? | Traitement recommandé |
| :- | :- | :-: | :- |
| `MATCH` | Le registre a confirmé l'identité et tous les champs vérifiés correspondaient. | — | Approuver. |
| `PARTIAL_MATCH` | Le registre a trouvé un enregistrement, mais un ou plusieurs des champs comparés par le service ne correspondaient pas totalement (généralement le nom ou la date de naissance). Les champs qui déterminent le résultat varient selon le service — voir [Méthodes de correspondance](https://docs.didit.me/fr/core-technology/database-validation/database-validation-matching-methods.md). | — | Envoyer en examen ou configurer une [Action en cas de correspondance partielle](https://docs.didit.me/fr/core-technology/database-validation/database-validation-warnings.md) pour refuser automatiquement. |
| `NO_MATCH` | Le registre n'a renvoyé aucune correspondance pour les données soumises. | Non | Refuser, ou envoyer en examen selon votre politique. |
| `DOCUMENT_SUPERSEDED` | Le registre a confirmé l'identité de la personne, mais l'**édition du document** présentée n'est pas celle qu'il conserve dans ses dossiers — une édition plus récente a été délivrée depuis, le document en possession est donc obsolète. La lettre d'*ejemplar* du DNI argentin en est le cas canonique. Distinct de `NO_MATCH` (la personne ne correspondait pas) et de `DOCUMENT_NOT_FOUND` (aucun enregistrement trouvé) : seul le document physique est obsolète. | Non | Envoyer en examen et demander l'édition actuelle du document. Cela relève de votre **Action en cas de non-correspondance** et déclenche [`DATABASE_VALIDATION_DOCUMENT_SUPERSEDED`](https://docs.didit.me/fr/core-technology/database-validation/database-validation-warnings). |
| `DOCUMENT_NOT_FOUND` | Le numéro d'identification est syntaxiquement valide mais n'existe pas dans le registre gouvernemental. | Non | Refuser. |
| `INVALID_DOCUMENT_FORMAT` | Le numéro d'identification soumis est malformé (longueur incorrecte, non numérique, mauvaise somme de contrôle). | Non | Inviter l'utilisateur à saisir à nouveau son numéro de document. |
| `INVALID_INPUT` | Un champ d'entrée obligatoire (selfie, genre, date de naissance, etc.) était manquant ou malformé. | Non | Inviter l'utilisateur à soumettre à nouveau le champ manquant. La session sera automatiquement retraitée une fois les données fournies — voir [`COULD_NOT_PERFORM_DATABASE_VALIDATION`](https://docs.didit.me/fr/core-technology/database-validation/database-validation-warnings). |
| `MINOR_BLOCKED` | Le registre a retenu l'enregistrement car la personne concernée est mineure. S'applique dans les juridictions dotées de lois sur la protection des données des mineurs (LGPD au Brésil et en Argentine). | Non | Refuser. Respectez le cadre juridique local — ne réessayez pas. |
| `DECEASED` | Le registre signale que la personne est décédée. | Non | Refuser. |
| `BIOMETRIC_NO_MATCH` | Pour les validations biométriques (Argentine, Panama), le score de correspondance faciale était inférieur au seuil d'acceptation. | Non | Refuser, ou envoyer en examen. |
| `BIOMETRIC_IMAGE_UNUSABLE` | Le selfie n'a pas pu être traité — l'image était vide, ne contenait aucun visage, était de mauvaise qualité ou le registre n'a pas pu la lire. | Oui | Inviter l'utilisateur à reprendre le selfie. |
| `INCONCLUSIVE` | Le registre n'a pas pu déterminer si la personne correspond — le résultat est véritablement incertain (elle peut être ou non présente dans le registre). Distinct de `NO_MATCH` (définitivement absente) et de `BIOMETRIC_IMAGE_UNUSABLE` (problème technique d'image) : rien n'a été confirmé dans un sens comme dans l'autre, donc `match_type` vaut `null`. | Peut-être | Envoyer en examen. Une nouvelle tentative avec un selfie plus net ou des données complémentaires peut résoudre le problème. |
| `REGISTRY_UNAVAILABLE` | Le registre gouvernemental est temporairement inaccessible (délai d'attente dépassé, erreur de connectivité, erreur 5xx en amont). | Oui | Réessayer après un court délai. Didit réessaie déjà automatiquement en cas d'erreurs temporaires ; si ce code apparaît dans le rapport final, c'est que les tentatives ont été épuisées. Lorsqu'un registre échoue de manière répétée, un e-mail est envoyé à votre organisation dès que l'interruption persiste, puis à nouveau lorsque l'accès est rétabli — voir [Notifications de disponibilité](https://docs.didit.me/fr/core-technology/database-validation/overview.md#notifications-de-disponibilité). |
| `REGISTRY_ERROR` | Le registre a renvoyé un échec inattendu qui ne correspond à aucune des catégories ci-dessus. | Peut-être | Transférer au support en joignant le code de détail. |

> [!NOTE]
>
> L'`outcome_code` se trouve à l'intérieur de chaque entrée du tableau `validations` dans le rapport de validation. Voir [Rapport de validation en base de données](https://docs.didit.me/fr/core-technology/database-validation/database-validation-report.md) pour savoir où il se situe dans la réponse.

> [!NOTE]
>
> `REGISTRY_UNAVAILABLE` et `REGISTRY_ERROR` signifient que le registre source n'a jamais répondu à la requête ; ces deux résultats ne sont donc **pas facturés** - voir les [tarifs](https://docs.didit.me/fr/core-technology/database-validation/overview.md). Tout autre code de résultat est une réponse réelle et payante du registre, même celle qui ne confirme rien (`INCONCLUSIVE`, `BIOMETRIC_IMAGE_UNUSABLE`) et même celle qui rejette ce que vous avez envoyé (`INVALID_DOCUMENT_FORMAT`, `INVALID_INPUT` — en tant que codes de résultat, ils signifient que le registre lui-même a refusé les données après l'envoi de la requête).
>
> Une entrée qui n'atteint jamais un registre ne produit aucun code de résultat : `POST /v3/database-validation/` renvoie `400` lorsqu'une valeur ne respecte pas les règles de format du pays, et un service de workflow comportant des champs manquants ou malformés est ignoré avec [`COULD_NOT_PERFORM_DATABASE_VALIDATION`](https://docs.didit.me/fr/core-technology/database-validation/database-validation-warnings). Aucun des deux n'est facturé. Détails complets sur la [page des tarifs de la validation en base de données](https://docs.didit.me/fr/getting-started/database-validation-pricing.md).

## Codes de détail spécifiques à chaque pays

Le code de détail est renvoyé dans le champ `outcome_detail` aux côtés de `outcome_code`. Seuls les pays listés ci-dessous produisent des codes de détail au-delà du résultat standard — tous les autres pays pris en charge renvoient uniquement les codes standards.

### Argentine (RENAPER)

L'Argentine utilise une validation biométrique 1×1 auprès du registre national d'identité RENAPER, associant le DNI, un selfie et le genre déclaré.

| Code de détail | Résultat standard | Signification |
| :- | :- | :- |
| `300` | `INVALID_DOCUMENT_FORMAT` | Le champ DNI doit être un numéro composé de 7 à 8 chiffres. |
| `301` | `DOCUMENT_NOT_FOUND` | Le DNI transmis ne correspond à aucun enregistrement valide. |
| `303` | `INVALID_INPUT` | Le champ du selfie était vide. |
| `304` | `INVALID_INPUT` | Le champ du genre était vide ou ne contenait pas l'une des valeurs `M`, `F`, `X`. |
| `305` | `NO_MATCH` | La combinaison du DNI et du genre est introuvable. |
| `306` | `REGISTRY_UNAVAILABLE` | La requête ne peut pas être effectuée pour le moment. |
| `307` | `REGISTRY_UNAVAILABLE` | Erreur de connexion au système public de validation d'identité. |
| `311` | `REGISTRY_ERROR` | L'intégration n'a pas accès à ce produit. |
| `313` | `MINOR_BLOCKED` | L'enregistrement appartient à une personne mineure. |
| `400` | `REGISTRY_UNAVAILABLE` | Erreur de connexion. |
| `401` | `NO_MATCH` | Aucun résultat trouvé pour les données fournies. |
| `405` | `BIOMETRIC_IMAGE_UNUSABLE` | Conflit avec l'image ; elle ne peut pas être traitée. |
| `406` | `BIOMETRIC_IMAGE_UNUSABLE` | Erreur lors du traitement de l'image. |
| `NO.HIT` | `BIOMETRIC_NO_MATCH` | Le score de correspondance faciale était inférieur au seuil d'acceptation (\< 50). |
| `INTERNAL_ERROR` | `REGISTRY_UNAVAILABLE` | Délai d'attente dépassé. |

### Brésil (Receita Federal — Consulta CPF)

Le Brésil valide le CPF auprès du service officiel CPF de la Receita Federal, avec une gestion explicite des mineurs en vertu de la LGPD (Lei Geral de Proteção de Dados) et du statut numérique des enfants et des adolescents.

| Code de détail | Résultat standard | Signification |
| :- | :- | :- |
| `200` | `MATCH` | CPF trouvé et données renvoyées avec succès. |
| `206` | `MATCH` | CPF trouvé, mais certains champs non essentiels n'ont pas été renvoyés. |
| `400` | `INVALID_DOCUMENT_FORMAT` | Le numéro de CPF n'est pas valide. |
| `404` | `DOCUMENT_NOT_FOUND` | Aucun CPF n'existe avec le numéro transmis. |
| `422` | `MINOR_BLOCKED` | Les données d'un mineur de moins de 18 ans sont retenues conformément à la LGPD (loi 13.709/2018). La réponse inclut `minor_under_18: true`. |
| `451` | `MINOR_BLOCKED` | Les données d'un mineur de moins de 16 ans sont retenues conformément à la LGPD et au statut numérique des enfants et des adolescents (loi 15.211/2025). La réponse inclut `minor_under_18: true` et `minor_under_16: true`. |
| `500` | `REGISTRY_UNAVAILABLE` | Erreur du serveur en amont. |
| `504` | `REGISTRY_UNAVAILABLE` | Délai d'attente de la passerelle dépassé — la requête n'a pas atteint l'API Consulta CPF. |

> [!NOTE]
>
> Pour les résultats `MINOR_BLOCKED` au Brésil, `source_data` renvoie tout de même les indicateurs `lgpd_minor`, `minor_under_18` et `minor_under_16` afin que vous puissiez appliquer des flux adaptés à l'âge sans réessayer.

### Panama (SIB — Tribunal Electoral)

Le Panama utilise une validation biométrique auprès du registre SIB (Servicio de Identificación Biométrica) géré par le Tribunal Electoral. Si une erreur technique liée au SIB survient, la session bascule automatiquement sur une recherche 1×1.

| Code de détail | Résultat standard | Signification |
| :- | :- | :- |
| `601` | `REGISTRY_UNAVAILABLE` | L'opérateur n'existe pas dans la base de données. |
| `602` | `MINOR_BLOCKED` | Le citoyen a moins de 12 ans. |
| `603` | `DECEASED` | Le citoyen est décédé. |
| `604` | `NO_MATCH` | L'enregistrement du citoyen est invalide. |
| `605` | `NO_MATCH` | Citoyen non reconnu. |
| `606` | `INVALID_INPUT` | Le champ Cédula est vide. |
| `607` | `DOCUMENT_NOT_FOUND` | Citoyen introuvable. |
| `608` | `REGISTRY_ERROR` | Aucun accès SIB pour ce client. |
| `610` | `BIOMETRIC_IMAGE_UNUSABLE` | Erreur générale de validation faciale. |
| `611` | `BIOMETRIC_IMAGE_UNUSABLE` | L'image pour comparaison n'a pas été envoyée. |
| `612` | `BIOMETRIC_IMAGE_UNUSABLE` | L'image ne contient aucun contenu. |
| `613` | `BIOMETRIC_IMAGE_UNUSABLE` | Format d'image invalide. |
| `614` | `BIOMETRIC_IMAGE_UNUSABLE` | Aucun visage détecté sur l'image. |
| `615` | `BIOMETRIC_NO_MATCH` | Seuil de similarité non atteint. |

### Autres pays pris en charge

Les pays ci-dessous renvoient uniquement les codes de résultat standards — il n'y a pas de code de détail spécifique à gérer.

* **Bolivie, Colombie, Costa Rica, El Salvador, Espagne, Guatemala, Honduras, Paraguay, Uruguay, Venezuela** — Recherche 1×1 auprès du registre d'état civil correspondant. Les résultats correspondent directement à `MATCH`, `NO_MATCH`, `DOCUMENT_NOT_FOUND`, `INVALID_DOCUMENT_FORMAT` ou `REGISTRY_UNAVAILABLE`.
* **Chili (Registro Civil)** — Recherche de RUT. Correspond aux résultats standards ainsi qu'à `MINOR_BLOCKED` lorsque le registre signale un enregistrement concernant une personne mineure.
* **République dominicaine (JCE)** — Recherche de Cédula renvoyant une validité booléenne ; correspond à `MATCH` ou `NO_MATCH`.
* **Équateur (Registro Civil)** — Recherche de Cédula.
* **Mexique (RENAPO, plus INE pour le 2×2)** — Recherche de CURP via la RENAPO. Lorsque `validation_type` est défini sur `two_by_two`, un recoupement supplémentaire avec l'INE est effectué ; les deux alimentent les mêmes codes de résultat standards.
* **Pérou (RENIEC)** — Recherche de DNI.

## Méthode de traitement

Le gestionnaire robuste le plus simple se présente ainsi :

```typescript theme={null}
switch (result.outcome_code) {
  case "MATCH":
    return approve();
  case "PARTIAL_MATCH":
    return review();
  case "NO_MATCH":
  case "DOCUMENT_NOT_FOUND":
  case "DECEASED":
  case "MINOR_BLOCKED":
  case "BIOMETRIC_NO_MATCH":
    return decline();
  case "INVALID_DOCUMENT_FORMAT":
  case "INVALID_INPUT":
    return askUserToFixInput(result.outcome_detail);
  case "BIOMETRIC_IMAGE_UNUSABLE":
    return askUserToRetakeSelfie();
  case "REGISTRY_UNAVAILABLE":
  case "REGISTRY_ERROR":
    return review();  // Didit already retried; a human can decide.
  default:
    return review();
}
```

> [!NOTE]
>
> Vous n'avez pas besoin d'effectuer de branchement conditionnel sur `outcome_detail` pour votre logique métier — utilisez-le pour les statistiques, le débogage et les tickets de support. La stabilité du code standard `outcome_code` est garantie entre les pays et dans le temps.

## Voir aussi

* [Avertissements de la validation en base de données](https://docs.didit.me/fr/core-technology/database-validation/database-validation-warnings.md) — les tags d'avertissement au niveau de la session (`COULD_NOT_PERFORM_DATABASE_VALIDATION`, `DATABASE_VALIDATION_PARTIAL_MATCH`, `DATABASE_VALIDATION_NO_MATCH`) et comment configurer les actions d'examen ou de refus de votre application.
* [Rapport de validation en base de données](https://docs.didit.me/fr/core-technology/database-validation/database-validation-report.md) — la structure complète de la réponse et l'emplacement où apparaissent `outcome_code` et `outcome_detail`.
* [Pays pris en charge pour la validation en base de données](https://docs.didit.me/fr/core-technology/database-validation/database-validation-supported-countries.md) — la liste complète des pays et des méthodes de correspondance.


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