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

# Códigos de resultado de validación en bases de datos

> Códigos que devuelve la validación en bases de datos de Didit: coincidencia, fallecido, menor, documento no encontrado y más. Desde $0.05/consulta.

La API de [Validación de base de datos](https://docs.didit.me/es/core-technology/database-validation/overview.md) de Didit consulta el registro civil oficial de cada país: RENAPER (Argentina, \$0.20/consulta con coincidencia facial biométrica), Receita Federal (Brasil, \$0.20), Tribunal Electoral SIB (Panamá, \$0.75 biométrica), Junta Central Electoral (República Dominicana, \$0.05) y 14 más. Se factura por consulta exitosa, sin mínimos mensuales.

Cuando ejecutas una Validación de base de datos, recibes dos niveles de resultado:

1. Un **código de resultado estándar** que funciona igual en todos los países compatibles, para que puedas escribir una única lógica de procesamiento que los cubra a todos.
2. Un **código de detalle específico del país**, opcional, que indica exactamente qué condición devolvió el registro gubernamental. Es útil para soporte, analítica y para decidir si pedir al usuario que vuelva a intentarlo.

Esta página enumera todos los valores que puedes recibir y explica cómo reaccionar ante cada uno.

## Códigos de resultado estándar

Estos códigos son idénticos en todos los países. Construye tu lógica de revisión, rechazo y reintento sobre ellos, no sobre los códigos de detalle de cada país.

| Código de resultado | Significado | ¿Se puede reintentar? | Gestión recomendada |
| :- | :- | :-: | :- |
| `MATCH` | El registro confirmó la identidad y todos los campos comprobados coincidieron. | — | Aprobar. |
| `PARTIAL_MATCH` | El registro encontró un registro, pero uno o más de los campos que comparó el servicio no coincidieron por completo (normalmente el nombre o la fecha de nacimiento). Los campos que deciden el resultado varían según el servicio; consulta [Métodos de coincidencia](https://docs.didit.me/es/core-technology/database-validation/database-validation-matching-methods.md). | — | Enviar a revisión o configurar una [Partial Match Action](https://docs.didit.me/es/core-technology/database-validation/database-validation-warnings.md) para rechazar automáticamente. |
| `NO_MATCH` | El registro no devolvió ninguna coincidencia para los datos enviados. | No | Rechazar o enviar a revisión, según tu política. |
| `DOCUMENT_SUPERSEDED` | El registro confirmó la identidad de la persona, pero la **edición del documento** presentado no es la que tiene registrada: desde entonces se ha emitido una edición más reciente, por lo que la credencial presentada está desactualizada. La letra de *ejemplar* del DNI argentino es el caso típico. Se distingue de `NO_MATCH` (la persona no coincidió) y de `DOCUMENT_NOT_FOUND` (no existe ningún registro): solo la credencial física está desactualizada. | No | Enviar a revisión y solicitar la edición vigente del documento. Se procesa según tu **No Match Action** y genera [`DATABASE_VALIDATION_DOCUMENT_SUPERSEDED`](https://docs.didit.me/es/core-technology/database-validation/database-validation-warnings). |
| `DOCUMENT_NOT_FOUND` | El número de identificación es sintácticamente válido, pero no existe en el registro gubernamental. | No | Rechazar. |
| `INVALID_DOCUMENT_FORMAT` | El número de identificación enviado tiene un formato incorrecto (longitud errónea, caracteres no numéricos, dígito de control inválido). | No | Pedir al usuario que vuelva a introducir su número de documento. |
| `INVALID_INPUT` | Faltaba un campo de entrada obligatorio (selfie, género, fecha de nacimiento, etc.) o tenía un formato incorrecto. | No | Pedir al usuario que vuelva a enviar el campo que falta. La sesión se reprocesará automáticamente cuando se proporcionen los datos; consulta [`COULD_NOT_PERFORM_DATABASE_VALIDATION`](https://docs.didit.me/es/core-technology/database-validation/database-validation-warnings). |
| `MINOR_BLOCKED` | El registro no proporcionó el registro porque la persona es menor de edad. Se aplica en jurisdicciones con leyes de protección de datos de menores (LGPD de Brasil, Argentina). | No | Rechazar. Respeta el marco legal local: no reintentes. |
| `DECEASED` | El registro indica que la persona ha fallecido. | No | Rechazar. |
| `BIOMETRIC_NO_MATCH` | En las validaciones biométricas (Argentina, Panamá), la puntuación de coincidencia facial quedó por debajo del umbral de aceptación. | No | Rechazar o enviar a revisión. |
| `BIOMETRIC_IMAGE_UNUSABLE` | No se pudo procesar la selfie: la imagen estaba vacía, no contenía ningún rostro, tenía baja calidad o el registro no pudo leerla. | Sí | Pedir al usuario que vuelva a tomarse la selfie. |
| `INCONCLUSIVE` | El registro no pudo determinar si la persona coincide: el resultado es realmente incierto (puede que esté o no en el registro). Se distingue de `NO_MATCH` (ausencia definitiva) y de `BIOMETRIC_IMAGE_UNUSABLE` (un problema técnico de la imagen): no se confirmó nada en ningún sentido, por lo que `match_type` es `null`. | Quizás | Enviar a revisión. Un reintento con una selfie más nítida o con datos adicionales puede resolverlo. |
| `REGISTRY_UNAVAILABLE` | El registro gubernamental no está accesible temporalmente (tiempo de espera agotado, error de conectividad, 5xx del servicio de origen). | Sí | Reintentar tras una breve espera. Didit ya reintenta automáticamente los errores transitorios, así que ver este código en el informe final significa que se agotaron los reintentos. Cuando un registro sigue fallando, tu organización recibe un correo electrónico cuando la interrupción se prolonga y otro cuando se restablece el acceso; consulta [Notificaciones de disponibilidad](https://docs.didit.me/es/core-technology/database-validation/overview.md#notificaciones-de-disponibilidad). |
| `REGISTRY_ERROR` | El registro devolvió un fallo inesperado que no encaja en ninguna de las categorías anteriores. | Quizás | Escalar a soporte con el código de detalle. |

> [!NOTE]
>
> El `outcome_code` se encuentra dentro de cada entrada del array `validations` del informe de validación. Consulta [Informe de Validación de base de datos](https://docs.didit.me/es/core-technology/database-validation/database-validation-report.md) para ver dónde encaja en la respuesta.

> [!NOTE]
>
> `REGISTRY_UNAVAILABLE` y `REGISTRY_ERROR` significan que el registro de origen nunca respondió a la consulta, por lo que esos dos resultados **no se facturan**; consulta los [precios](https://docs.didit.me/es/core-technology/database-validation/overview.md). Todos los demás códigos de resultado son una respuesta real y de pago del registro, incluso los que no confirman nada (`INCONCLUSIVE`, `BIOMETRIC_IMAGE_UNUSABLE`) e incluso los que rechazan lo que enviaste (`INVALID_DOCUMENT_FORMAT`, `INVALID_INPUT`: como códigos de resultado, significan que el propio registro rechazó los datos después de enviarse la consulta).
>
> Los datos de entrada que nunca llegan a un registro no generan ningún código de resultado: `POST /v3/database-validation/` responde `400` cuando un valor no cumple las reglas de formato del país, y un servicio de un flujo de trabajo con campos ausentes o con formato incorrecto se omite con [`COULD_NOT_PERFORM_DATABASE_VALIDATION`](https://docs.didit.me/es/core-technology/database-validation/database-validation-warnings). Ninguno de los dos casos se factura. Consulta el desglose completo en la [página de precios de Validación de base de datos](https://docs.didit.me/es/getting-started/database-validation-pricing.md).

## Códigos de detalle por país

El código de detalle se devuelve como `outcome_detail` junto con `outcome_code`. Solo los países que se indican a continuación generan códigos de detalle además del resultado estándar; el resto de países compatibles devuelve únicamente los códigos estándar.

### Argentina (RENAPER)

Argentina utiliza una validación biométrica 1×1 contra el registro nacional de identidad RENAPER, que combina el DNI, una selfie y el género declarado.

| Código de detalle | Resultado estándar | Qué significa |
| :- | :- | :- |
| `300` | `INVALID_DOCUMENT_FORMAT` | El campo DNI debe ser un número de 7 a 8 dígitos. |
| `301` | `DOCUMENT_NOT_FOUND` | El DNI enviado no coincide con ningún registro válido. |
| `303` | `INVALID_INPUT` | El campo de la selfie estaba vacío. |
| `304` | `INVALID_INPUT` | El campo de género estaba vacío o no era `M`, `F` ni `X`. |
| `305` | `NO_MATCH` | No se encontró la combinación de DNI y género. |
| `306` | `REGISTRY_UNAVAILABLE` | La consulta no puede realizarse en este momento. |
| `307` | `REGISTRY_UNAVAILABLE` | Error al conectar con el sistema público de validación de identidad. |
| `311` | `REGISTRY_ERROR` | La integración no tiene acceso a este producto. |
| `313` | `MINOR_BLOCKED` | El registro pertenece a una persona menor de edad. |
| `400` | `REGISTRY_UNAVAILABLE` | Error de conexión. |
| `401` | `NO_MATCH` | No se encontraron resultados para los datos proporcionados. |
| `405` | `BIOMETRIC_IMAGE_UNUSABLE` | Conflicto con la imagen; no se puede procesar. |
| `406` | `BIOMETRIC_IMAGE_UNUSABLE` | Error en el procesamiento de la imagen. |
| `NO.HIT` | `BIOMETRIC_NO_MATCH` | La puntuación de coincidencia facial quedó por debajo del umbral de aceptación (\< 50). |
| `INTERNAL_ERROR` | `REGISTRY_UNAVAILABLE` | Se superó el tiempo de espera. |

### Brasil (Receita Federal: Consulta CPF)

Brasil valida el CPF contra el servicio oficial de CPF de la Receita Federal, con un tratamiento explícito de los menores de edad conforme a la LGPD (Lei Geral de Proteção de Dados) y al Estatuto Digital de Niños y Adolescentes.

| Código de detalle | Resultado estándar | Qué significa |
| :- | :- | :- |
| `200` | `MATCH` | CPF encontrado y datos devueltos correctamente. |
| `206` | `MATCH` | CPF encontrado, pero no se devolvieron algunos campos no esenciales. |
| `400` | `INVALID_DOCUMENT_FORMAT` | El número de CPF no es válido. |
| `404` | `DOCUMENT_NOT_FOUND` | No existe ningún CPF con el número enviado. |
| `422` | `MINOR_BLOCKED` | Los datos de un menor de 18 años se retienen conforme a la LGPD (Ley 13.709/2018). La respuesta incluye `minor_under_18: true`. |
| `451` | `MINOR_BLOCKED` | Los datos de un menor de 16 años se retienen conforme a la LGPD y al Estatuto Digital de Niños y Adolescentes (Ley 15.211/2025). La respuesta incluye `minor_under_18: true` y `minor_under_16: true`. |
| `500` | `REGISTRY_UNAVAILABLE` | Error del servidor de origen. |
| `504` | `REGISTRY_UNAVAILABLE` | Tiempo de espera del gateway agotado: la solicitud no llegó a la API de Consulta CPF. |

> [!NOTE]
>
> En los resultados `MINOR_BLOCKED` de Brasil, `source_data` sigue devolviendo los indicadores `lgpd_minor`, `minor_under_18` y `minor_under_16`, para que puedas aplicar flujos adecuados a la edad sin reintentar.

### Panamá (SIB: Tribunal Electoral)

Panamá utiliza una validación biométrica contra el registro SIB (Servicio de Identificación Biométrica) gestionado por el Tribunal Electoral. Si se produce un error técnico del SIB, la sesión recurre automáticamente a una consulta 1×1.

| Código de detalle | Resultado estándar | Qué significa |
| :- | :- | :- |
| `601` | `REGISTRY_UNAVAILABLE` | El operador no existe en la base de datos. |
| `602` | `MINOR_BLOCKED` | El ciudadano es menor de 12 años. |
| `603` | `DECEASED` | El ciudadano ha fallecido. |
| `604` | `NO_MATCH` | El ciudadano tiene una inscripción no válida. |
| `605` | `NO_MATCH` | Ciudadano no reconocido. |
| `606` | `INVALID_INPUT` | El campo de la cédula está vacío. |
| `607` | `DOCUMENT_NOT_FOUND` | Ciudadano no encontrado. |
| `608` | `REGISTRY_ERROR` | Este cliente no tiene acceso al SIB. |
| `610` | `BIOMETRIC_IMAGE_UNUSABLE` | Error general de validación facial. |
| `611` | `BIOMETRIC_IMAGE_UNUSABLE` | No se envió la imagen para la comparación. |
| `612` | `BIOMETRIC_IMAGE_UNUSABLE` | La imagen no tiene contenido. |
| `613` | `BIOMETRIC_IMAGE_UNUSABLE` | Formato de imagen no válido. |
| `614` | `BIOMETRIC_IMAGE_UNUSABLE` | No se detectó ningún rostro en la imagen. |
| `615` | `BIOMETRIC_NO_MATCH` | No se alcanzó el umbral de similitud. |

### Otros países compatibles

Los países siguientes devuelven únicamente los códigos de resultado estándar: no hay códigos de detalle por país que gestionar.

* **Bolivia, Colombia, Costa Rica, El Salvador, Guatemala, Honduras, Paraguay, España, Uruguay, Venezuela**: consulta 1×1 contra el registro civil correspondiente. Los resultados se asignan directamente a `MATCH`, `NO_MATCH`, `DOCUMENT_NOT_FOUND`, `INVALID_DOCUMENT_FORMAT` o `REGISTRY_UNAVAILABLE`.
* **Chile (Registro Civil)**: consulta del RUT. Se asigna a los resultados estándar, además de a `MINOR_BLOCKED` cuando el registro indica que se trata de un menor de edad.
* **República Dominicana (JCE)**: consulta de la cédula que devuelve una validez booleana; se asigna a `MATCH` o `NO_MATCH`.
* **Ecuador (Registro Civil)**: consulta de la cédula.
* **México (RENAPO, más INE para 2×2)**: consulta de la CURP a través de RENAPO. Cuando `validation_type` es `two_by_two`, se ejecuta un cotejo adicional con el INE; ambos se asignan a los mismos códigos de resultado estándar.
* **Perú (RENIEC)**: consulta del DNI.

## Receta de procesamiento

El manejador robusto más sencillo tiene este aspecto:

```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]
>
> No necesitas basar la lógica de negocio en `outcome_detail`: úsalo para analítica, depuración y tickets de soporte. Se garantiza que el `outcome_code` estándar se mantiene estable entre países y a lo largo del tiempo.

## Ver también

* [Advertencias de Validación de base de datos](https://docs.didit.me/es/core-technology/database-validation/database-validation-warnings.md): las etiquetas de advertencia a nivel de sesión (`COULD_NOT_PERFORM_DATABASE_VALIDATION`, `DATABASE_VALIDATION_PARTIAL_MATCH`, `DATABASE_VALIDATION_NO_MATCH`) y cómo configurar las acciones de revisión o rechazo de tu aplicación.
* [Informe de Validación de base de datos](https://docs.didit.me/es/core-technology/database-validation/database-validation-report.md): la estructura completa de la respuesta y dónde aparecen `outcome_code` / `outcome_detail`.
* [Países compatibles con la Validación de base de datos](https://docs.didit.me/es/core-technology/database-validation/database-validation-supported-countries.md): la lista completa de países y métodos de cotejo.


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