> ## 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 da Validação de base de dados

> Todos os códigos da Validação de base de dados da Didit: match, no match, falecido, menor e mais. A partir de $0.05/check.

A API de [Validação de base de dados](https://docs.didit.me/pt/core-technology/database-validation/overview.md) da Didit consulta o registo civil oficial de cada país — RENAPER (Argentina, \$0.20/verificação com correspondência facial biométrica), Receita Federal (Brasil, \$0.20), Tribunal Electoral SIB (Panamá, \$0.75 biométrica), Junta Central Electoral (República Dominicana, \$0.05) e mais 14 — com faturação por consulta bem-sucedida, sem consumos mínimos mensais.

Ao executar uma Validação de base de dados, recebe duas camadas de resultados:

1. Um **código de resultado padrão** que funciona da mesma forma em todos os países suportados, para que possa escrever uma única lógica de tratamento que cubra todos eles.
2. Um **código de detalhe específico do país** opcional que lhe indica exatamente qual a condição devolvida pelo registo governamental — útil para suporte, análise e para decidir se deve pedir ao utilizador para tentar novamente.

Esta página lista todos os valores que pode encontrar e explica como reagir a cada um deles.

## Códigos de resultado padrão

Estes códigos são idênticos em todos os países. Desenvolva a sua lógica de revisão, recusa e nova tentativa com base nestes códigos — e não nos códigos de detalhe específicos de cada país.

| Código de resultado | Significado | Pode tentar novamente? | Tratamento recomendado |
| :- | :- | :-: | :- |
| `MATCH` | O registo confirmou a identidade e todos os campos verificados corresponderam. | — | Aprovar. |
| `PARTIAL_MATCH` | O registo encontrou um registo, mas um ou mais dos campos comparados pelo serviço não corresponderam totalmente (normalmente o nome ou a data de nascimento). Os campos que decidem o resultado variam consoante o serviço — consulte [Métodos de correspondência](https://docs.didit.me/pt/core-technology/database-validation/database-validation-matching-methods.md). | — | Enviar para revisão ou configurar uma [Partial Match Action](https://docs.didit.me/pt/core-technology/database-validation/database-validation-warnings.md) para recusar automaticamente. |
| `NO_MATCH` | O registo não devolveu qualquer correspondência para os dados submetidos. | Não | Recusar, ou enviar para revisão dependendo da sua política. |
| `DOCUMENT_SUPERSEDED` | O registo confirmou a identidade da pessoa, mas a **edição do documento** apresentada não é a que consta nos seus arquivos — foi entretanto emitida uma edição mais recente, pelo que a credencial apresentada está desatualizada. A letra do *ejemplar* do DNI da Argentina é o caso canónico. Distingue-se de `NO_MATCH` (a pessoa não correspondeu) e de `DOCUMENT_NOT_FOUND` (nenhum registo encontrado): apenas a credencial física está desatualizada. | Não | Enviar para revisão e solicitar a edição atual do documento. Segue a sua **No Match Action** e aciona [`DATABASE_VALIDATION_DOCUMENT_SUPERSEDED`](https://docs.didit.me/pt/core-technology/database-validation/database-validation-warnings). |
| `DOCUMENT_NOT_FOUND` | O número de identificação é sintaticamente válido, mas não existe no registo governamental. | Não | Recusar. |
| `INVALID_DOCUMENT_FORMAT` | O número de identificação submetido está malformado (comprimento incorreto, não numérico, soma de controlo incorreta). | Não | Pedir ao utilizador para introduzir novamente o número do documento. |
| `INVALID_INPUT` | Um campo de entrada obrigatório (selfie, género, data de nascimento, etc.) estava em falta ou malformado. | Não | Pedir ao utilizador para reenviar o campo em falta. A sessão será reprocessada automaticamente assim que os dados forem fornecidos — consulte [`COULD_NOT_PERFORM_DATABASE_VALIDATION`](https://docs.didit.me/pt/core-technology/database-validation/database-validation-warnings). |
| `MINOR_BLOCKED` | O registo não disponibilizou o registo porque o titular é menor. Aplica-se em jurisdições com leis de proteção de dados para menores (LGPD no Brasil, Argentina). | Não | Recusar. Respeite o quadro legal local — não tente novamente. |
| `DECEASED` | O registo indica que o titular faleceu. | Não | Recusar. |
| `BIOMETRIC_NO_MATCH` | Para validações biométricas (Argentina, Panamá), a pontuação de correspondência facial ficou abaixo do limiar de aceitação. | Não | Recusar, ou enviar para revisão. |
| `BIOMETRIC_IMAGE_UNUSABLE` | A selfie não pôde ser processada — a imagem estava vazia, não continha um rosto, tinha baixa qualidade ou o registo não conseguiu lê-la. | Sim | Pedir ao utilizador para tirar novamente a selfie. |
| `INCONCLUSIVE` | O registo não conseguiu determinar se a pessoa corresponde aos dados do registo — o resultado é genuinamente incerto (a pessoa pode ou não constar do registo). Distingue-se de `NO_MATCH` (definitivamente ausente) e de `BIOMETRIC_IMAGE_UNUSABLE` (um problema técnico de imagem): nada foi confirmado em nenhum dos sentidos, pelo que `match_type` é `null`. | Talvez | Enviar para revisão. Tentar novamente com uma selfie mais nítida ou dados adicionais pode resolver o problema. |
| `REGISTRY_UNAVAILABLE` | O registo governamental está temporariamente inacessível (tempo limite esgotado, erro de conectividade, erro 5xx a montante). | Sim | Tentar novamente após um breve intervalo. A Didit já tenta novamente os erros transitórios de forma automática; portanto, ver isto no relatório final significa que as tentativas se esgotaram. Quando um registo continua a falhar, a sua organização é notificada por e-mail assim que a interrupção se prolongar e novamente quando o acesso for restaurado — consulte [Notificações de disponibilidade](https://docs.didit.me/pt/core-technology/database-validation/overview.md#notificações-de-disponibilidade). |
| `REGISTRY_ERROR` | O registo devolveu uma falha inesperada que não se enquadra em nenhuma das categorias acima. | Talvez | Encaminhar para o suporte com o código de detalhe. |

> [!NOTE]
>
> O `outcome_code` reside dentro de cada entrada da matriz `validations` no relatório de validação. Consulte [Database Validation Report](https://docs.didit.me/pt/core-technology/database-validation/database-validation-report.md) para ver onde se insere na resposta.

> [!NOTE]
>
> `REGISTRY_UNAVAILABLE` e `REGISTRY_ERROR` significam que o registo de origem nunca respondeu à consulta, pelo que estes dois resultados **não são faturados** - consulte os [preços](https://docs.didit.me/pt/core-technology/database-validation/overview.md). Todos os outros códigos de resultado correspondem a respostas reais e pagas do registo, mesmo que não confirmem nada (`INCONCLUSIVE`, `BIOMETRIC_IMAGE_UNUSABLE`) e mesmo que rejeitem o que enviou (`INVALID_DOCUMENT_FORMAT`, `INVALID_INPUT` — enquanto códigos de resultado, estes significam que o próprio registo recusou os dados, após a consulta ter sido enviada).
>
> Os dados de entrada que nunca chegam ao registo não geram qualquer código de resultado: o endpoint `POST /v3/database-validation/` devolve `400` quando um valor viola as regras de formato do país, e um serviço do fluxo com campos em falta ou malformados é ignorado com [`COULD_NOT_PERFORM_DATABASE_VALIDATION`](https://docs.didit.me/pt/core-technology/database-validation/database-validation-warnings). Nenhum deles é faturado. Consulte a análise completa na [página de preços da Validação de base de dados](https://docs.didit.me/pt/getting-started/database-validation-pricing.md).

## Códigos de detalhe específicos por país

O código de detalhe é retornado como `outcome_detail` juntamente com `outcome_code`. Apenas os países listados abaixo produzem códigos de detalhe além do resultado padrão — todos os outros países suportados retornam apenas os códigos padrão.

### Argentina (RENAPER)

A Argentina utiliza uma validação biométrica 1×1 contra o registo nacional de identidade RENAPER, combinando o DNI, uma selfie e o género declarado.

| Código de detalhe | Resultado padrão | O que significa |
| :- | :- | :- |
| `300` | `INVALID_DOCUMENT_FORMAT` | O campo DNI deve ser um número de 7–8 dígitos. |
| `301` | `DOCUMENT_NOT_FOUND` | O DNI submetido não corresponde a um registo válido. |
| `303` | `INVALID_INPUT` | O campo da selfie estava vazio. |
| `304` | `INVALID_INPUT` | O campo do género estava vazio ou não correspondia a um dos valores `M`, `F`, `X`. |
| `305` | `NO_MATCH` | A combinação de DNI e género não foi encontrada. |
| `306` | `REGISTRY_UNAVAILABLE` | A consulta não pode ser realizada neste momento. |
| `307` | `REGISTRY_UNAVAILABLE` | Erro ao ligar ao sistema público de validação de identidade. |
| `311` | `REGISTRY_ERROR` | A integração não tem acesso a este produto. |
| `313` | `MINOR_BLOCKED` | O registo pertence a uma pessoa menor de idade. |
| `400` | `REGISTRY_UNAVAILABLE` | Erro de ligação. |
| `401` | `NO_MATCH` | Nenhum resultado encontrado para os dados fornecidos. |
| `405` | `BIOMETRIC_IMAGE_UNUSABLE` | Conflito com a imagem; não é possível processá-la. |
| `406` | `BIOMETRIC_IMAGE_UNUSABLE` | Erro no processamento da imagem. |
| `NO.HIT` | `BIOMETRIC_NO_MATCH` | A pontuação de correspondência facial ficou abaixo do limiar de aceitação (\< 50). |
| `INTERNAL_ERROR` | `REGISTRY_UNAVAILABLE` | Tempo limite excedido. |

### Brasil (Receita Federal — Consulta CPF)

O Brasil valida o CPF contra o serviço oficial de CPF da Receita Federal, com tratamento explícito para menores segundo a LGPD (Lei Geral de Proteção de Dados) e o Estatuto Digital da Criança e do Adolescente.

| Código de detalhe | Resultado padrão | O que significa |
| :- | :- | :- |
| `200` | `MATCH` | CPF encontrado e dados retornados com sucesso. |
| `206` | `MATCH` | CPF encontrado, mas alguns campos não essenciais não foram retornados. |
| `400` | `INVALID_DOCUMENT_FORMAT` | O número de CPF não é válido. |
| `404` | `DOCUMENT_NOT_FOUND` | Não existe nenhum CPF com o número submetido. |
| `422` | `MINOR_BLOCKED` | Os dados de um menor de 18 anos foram retidos de acordo com a LGPD (Lei 13.709/2018). A resposta inclui `minor_under_18: true`. |
| `451` | `MINOR_BLOCKED` | Os dados de um menor de 16 anos foram retidos de acordo com a LGPD e o Estatuto Digital da Criança e do Adolescente (Lei 15.211/2025). A resposta inclui `minor_under_18: true` e `minor_under_16: true`. |
| `500` | `REGISTRY_UNAVAILABLE` | Erro no servidor a montante. |
| `504` | `REGISTRY_UNAVAILABLE` | Tempo limite do gateway — o pedido não alcançou a API da Consulta CPF. |

> [!NOTE]
>
> Para resultados `MINOR_BLOCKED` no Brasil, `source_data` continua a incluir os sinalizadores `lgpd_minor`, `minor_under_18` e `minor_under_16` para que possa aplicar fluxos adequados à idade sem tentar novamente.

### Panamá (SIB — Tribunal Electoral)

O Panamá utiliza validação biométrica contra o registo SIB (Servicio de Identificación Biométrica) operado pelo Tribunal Electoral. Se ocorrer um erro técnico no SIB, a sessão passa automaticamente para uma consulta 1×1.

| Código de detalhe | Resultado padrão | O que significa |
| :- | :- | :- |
| `601` | `REGISTRY_UNAVAILABLE` | O operador não existe na base de dados. |
| `602` | `MINOR_BLOCKED` | O cidadão tem menos de 12 anos. |
| `603` | `DECEASED` | O cidadão é falecido. |
| `604` | `NO_MATCH` | O cidadão tem um registo inválido. |
| `605` | `NO_MATCH` | Cidadão não reconhecido. |
| `606` | `INVALID_INPUT` | O campo do documento de identificação (cédula) está vazio. |
| `607` | `DOCUMENT_NOT_FOUND` | Cidadão não encontrado. |
| `608` | `REGISTRY_ERROR` | Sem acesso ao SIB para este cliente. |
| `610` | `BIOMETRIC_IMAGE_UNUSABLE` | Erro geral de validação facial. |
| `611` | `BIOMETRIC_IMAGE_UNUSABLE` | A imagem para comparação não foi enviada. |
| `612` | `BIOMETRIC_IMAGE_UNUSABLE` | A imagem não tem conteúdo. |
| `613` | `BIOMETRIC_IMAGE_UNUSABLE` | Formato de imagem inválido. |
| `614` | `BIOMETRIC_IMAGE_UNUSABLE` | Nenhum rosto detetado na imagem. |
| `615` | `BIOMETRIC_NO_MATCH` | Limiar de similaridade não atingido. |

### Outros países suportados

Os países abaixo retornam apenas os códigos de resultado padrão — não existem códigos de detalhe específicos por país a tratar.

* **Bolívia, Colômbia, Costa Rica, El Salvador, Espanha, Guatemala, Honduras, Paraguai, Uruguai, Venezuela** — consulta 1×1 contra o registo civil correspondente. Os resultados mapeiam diretamente para `MATCH`, `NO_MATCH`, `DOCUMENT_NOT_FOUND`, `INVALID_DOCUMENT_FORMAT` ou `REGISTRY_UNAVAILABLE`.
* **Chile (Registro Civil)** — consulta de RUT. Mapeia para os resultados padrão mais `MINOR_BLOCKED` quando o registo sinaliza uma pessoa menor de idade.
* **República Dominicana (JCE)** — consulta de cédula que retorna uma validade booleana; mapeia para `MATCH` ou `NO_MATCH`.
* **Equador (Registro Civil)** — consulta de cédula.
* **México (RENAPO, mais INE para 2×2)** — consulta de CURP através da RENAPO. Quando `validation_type` é `two_by_two`, é executado um cruzamento adicional com o INE; ambos alimentam os mesmos códigos de resultado padrão.
* **Peru (RENIEC)** — consulta de DNI.

## Procedimento de tratamento

O tratamento robusto mais simples é o seguinte:

```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]
>
> Não precisa de criar ramificações baseadas em `outcome_detail` para a lógica de negócio — use-o para análise, depuração e pedidos de suporte. O `outcome_code` padrão tem a garantia de se manter estável entre países e ao longo do tempo.

## Ver também

* [Avisos de validação de base de dados](https://docs.didit.me/pt/core-technology/database-validation/database-validation-warnings.md) — as etiquetas de aviso ao nível da sessão (`COULD_NOT_PERFORM_DATABASE_VALIDATION`, `DATABASE_VALIDATION_PARTIAL_MATCH`, `DATABASE_VALIDATION_NO_MATCH`) e como configurar as ações de revisão/recusa da sua aplicação.
* [Relatório de validação de base de dados](https://docs.didit.me/pt/core-technology/database-validation/database-validation-report.md) — a estrutura completa da resposta e onde `outcome_code` / `outcome_detail` aparecem.
* [Países suportados pela validação de base de dados](https://docs.didit.me/pt/core-technology/database-validation/database-validation-supported-countries.md) — a lista completa de países e métodos de correspondência.


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