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

# Avisos de verificação de identidade e códigos de erro

> Avisos da verificação de identidade da Didit: recusa automática, grupos de risco e códigos de divergência e adulteração, com causa e solução.

## Visão geral

Os avisos no relatório de verificação de identidade sinalizam cada condição que a Didit observou ao ler e validar o documento. Eles ficam no array `warnings[]` de cada item de `id_verifications[]` (veja [Relatório de verificação de identidade](https://docs.didit.me/pt-br/core-technology/id-verification/report-id-verification.md)), com o formato descrito em [Modelos de dados: objeto Warning](https://docs.didit.me/pt-br/reference/data-models.md#objeto-de-aviso): `feature`, `risk`, `additional_data`, `log_type`, `short_description`, `long_description`, `node_id`.

Todo aviso tem três camadas:

1. **O código `risk`**: um identificador estável que você pode usar para identificar no seu código.
2. **O `log_type`**: derivado da ação que a sua configuração atribui ao risco no momento da avaliação: **Recusar → `error`**, **Revisão → `warning`**, qualquer outra → `information`.
3. **O impacto na decisão**: definido pelos grupos de risco configuráveis do fluxo de verificação (workflow). O mesmo código `risk` pode ser direcionado para **Aprovar**, **Revisão** ou **Recusar**, dependendo de como a sua aplicação está configurada.

## Condições de recusa automática

Nos fluxos, os riscos a seguir sempre fazem com que o relatório de identidade (e a sessão) seja definido como `Declined`. Eles não podem ser configurados:

| Risco | Gatilho |
| - | - |
| `DOCUMENT_NOT_SUPPORTED_FOR_APPLICATION` | O tipo de documento enviado não está na lista de documentos permitidos da sua aplicação. `additional_data` inclui `issuing_state`, `document_type`, `document_subtype`, `document_region` e `document_region_with_subtype` para que você possa habilitar exatamente esse documento no seu fluxo. |
| `DOCUMENT_EXPIRED` | A data de validade do documento já passou no momento da captura. |
| `PORTRAIT_IMAGE_NOT_DETECTED` | Não foi possível localizar nenhuma foto de rosto no documento. |
| `ID_DOCUMENT_IN_BLOCKLIST` | O documento corresponde a uma entrada da lista de bloqueio da sua aplicação. |
| `FRONT_CAMERA_FACE_IN_BLOCKLIST` | A selfie tirada pela câmera frontal durante a captura do documento corresponde a um rosto da sua lista de bloqueio facial. |
| `AGE_BELOW_MINIMUM` | Somente em fluxos adaptativos de verificação de idade: a idade extraída está abaixo do mínimo. |
| `AGE_NOT_DETECTED` | Somente em fluxos adaptativos de verificação de idade: não foi possível extrair a idade do documento. |

Na **API de OCR avulsa**, o conjunto de recusa incondicional é `DOCUMENT_EXPIRED`, `MINIMUM_AGE_NOT_MET`, `PORTRAIT_IMAGE_NOT_DETECTED`, `SCREEN_CAPTURE_DETECTED`, `PRINTED_COPY_DETECTED`, `PORTRAIT_MANIPULATION_DETECTED` e `PUBLIC_DOCUMENT_IMAGE_DETECTED`. Nos fluxos, a idade mínima é configurável (padrão Recusar) e os três riscos de prova de vida do documento dependem de limiares (veja abaixo).

Os riscos configuráveis dessa API aceitam `DECLINE` ou `NO_ACTION` como parâmetros da requisição, em vez de um veredito de revisão. O único resultado de Revisão que ela pode retornar não é configurável: quando uma verificação de prova de vida do documento solicitada não produz uma pontuação utilizável, a resposta é `In Review` com um aviso `DOCUMENT_LIVENESS_NOT_COMPUTED` (veja [Prova de vida do documento](#prova-de-vida-do-documento-adulteração)).

| Parâmetro da requisição | Riscos | Padrão |
| - | - | - |
| `invalid_mrz_action` | `MRZ_VALIDATION_FAILED`, `MRZ_NOT_DETECTED` | `DECLINE` |
| `inconsistent_data_action` | `DATA_INCONSISTENT`, `MRZ_AND_DATA_EXTRACTED_FROM_OCR_NOT_SAME`, `DOCUMENT_NAME_DIFFERENT_FROM_OTHER_APPROVED_DOCUMENTS` | `DECLINE` |
| `expiration_date_not_detected_action` | `EXPIRATION_DATE_NOT_DETECTED` | `NO_ACTION` |
| `critical_field_occlusion_action` | `CRITICAL_FIELD_OCCLUSION_DETECTED` | `DECLINE` |
| `document_or_personal_number_format_mismatch_action` | `DOCUMENT_NUMBER_FORMAT_MISMATCH`, `PERSONAL_NUMBER_FORMAT_MISMATCH` | `NO_ACTION` |

## Configurações de verificação ajustáveis

No console da Didit, os demais riscos de identidade são agrupados em configurações que você pode direcionar para **Aprovar**, **Revisão** ou **Recusar** (por fluxo e, nos fluxos em grafo, por nó):

| Grupo | Riscos | Ação padrão |
| - | - | - |
| **Idade mínima** | `MINIMUM_AGE_NOT_MET` | Recusar |
| **Idade máxima** | `MAXIMUM_AGE_EXCEEDED` | Recusar |
| **Usuário duplicado** | `POSSIBLE_DUPLICATED_USER` (ignorado quando o número do documento está na sua lista de permissões de documentos) | Aprovar (informação) |
| **Código inválido** | `QR_NOT_DETECTED`, `BARCODE_NOT_DETECTED`, `QR_VALIDATION_FAILED`, `BARCODE_VALIDATION_FAILED` | Aprovar (informação) |
| **MRZ inválida** | `MRZ_VALIDATION_FAILED`, `MRZ_NOT_DETECTED` | Aprovar (informação) |
| **Inconsistência de dados** | `DATA_INCONSISTENT`, `MRZ_AND_DATA_EXTRACTED_FROM_OCR_NOT_SAME`, `DOCUMENT_NAME_DIFFERENT_FROM_OTHER_APPROVED_DOCUMENTS`, `DOCUMENT_SIDES_MISMATCH`, `ID_VERIFICATION_DATA_MISMATCH_BETWEEN_DOCUMENTS` | Aprovar (informação) |
| **Validação inválida** | `INVALID_DATE`, `COULD_NOT_RECOGNIZE_DOCUMENT`, `DOCUMENT_NUMBER_NOT_DETECTED`, `COULD_NOT_DETECT_DOCUMENT_TYPE`, `NAME_NOT_DETECTED`, `DATE_OF_BIRTH_NOT_DETECTED` | Revisão |
| **Divergência nos dados esperados** | `FULL_NAME_MISMATCH_WITH_PROVIDED`, `GENDER_MISMATCH_WITH_PROVIDED`, `DOB_MISMATCH_WITH_PROVIDED`, `COUNTRY_MISMATCH_WITH_PROVIDED`, `NATIONALITY_MISMATCH_WITH_PROVIDED`, `IDENTIFICATION_NUMBER_MISMATCH_WITH_PROVIDED` | Revisão |
| **Data de validade não detectada** | `EXPIRATION_DATE_NOT_DETECTED` | Aprovar (informação) |
| **Divergência no formato do número do documento ou pessoal** | `DOCUMENT_NUMBER_FORMAT_MISMATCH`, `PERSONAL_NUMBER_FORMAT_MISMATCH` (uma ação compartilhada) | Revisão |
| **Campo crítico coberto** | `CRITICAL_FIELD_OCCLUSION_DETECTED` | Revisão |
| **Endereço não analisado** | `UNPARSED_ADDRESS` | Aprovar (informação) |
| **Qualidade da imagem** | `IMAGE_TOO_BLURRY`, `IMAGE_TOO_DARK`, `IMAGE_TOO_BRIGHT` (uma ação por risco) | Aprovar (informação) |
| **Documento sem foto** | `DOCUMENT_HAS_NO_PORTRAIT` | Revisão |
| **Rosto duplicado na captura silenciosa** | `FRONT_CAMERA_DUPLICATED_FACE`, `POSSIBLE_FRONT_CAMERA_DUPLICATED_FACE` (uma ação compartilhada) | Aprovar (informação) |
| **Rosto duplicado na captura silenciosa com nome diferente** | `FRONT_CAMERA_DUPLICATED_FACE_NAME_MISMATCH` (só pode tornar mais rigoroso o resultado de rosto duplicado) | Revisão |
| **Rosto duplicado na captura silenciosa com data de nascimento diferente** | `FRONT_CAMERA_DUPLICATED_FACE_DOCUMENT_MISMATCH` (só pode tornar mais rigoroso o resultado de rosto duplicado) | Revisão |

Os riscos de duplicidade na captura silenciosa e de lista de bloqueio vêm da [Busca facial na selfie tirada durante a captura do documento](https://docs.didit.me/pt-br/core-technology/face-search/overview.md#a-selfie-tirada-durante-a-captura-do-documento). A busca é executada enquanto a **Busca facial com captura silenciosa** (`document_selfie_face_search_enabled`) está ativada, que é o padrão, e a Busca facial não está desativada na etapa de Prova de vida; caso contrário, nenhum desses seis riscos é gerado.

Duas famílias de riscos de identidade são **controladas por limiares**, em vez de alternâncias entre Aprovar/Revisão/Recusar:

* **Prova de vida do documento** — `SCREEN_CAPTURE_DETECTED`, `PRINTED_COPY_DETECTED`, `PORTRAIT_MANIPULATION_DETECTED`. Cada tipo de fraude tem seus próprios limiares de recusa e de revisão: pontuação abaixo do limiar de recusa → `error` + Recusada; abaixo do limiar de revisão → `warning` + Em revisão; caso contrário, `information`.
* **Correspondência facial entre câmeras** — `LOW_FRONT_CAMERA_FACE_MATCH_SIMILARITY`, regida por `document_selfie_portrait_match_decline_threshold` / `document_selfie_portrait_match_review_threshold`.

### Configurar os limiares de prova de vida do documento

No editor de fluxos, esses limiares ficam na aba **Falsificação** da etapa de Verificação de identidade, com um cartão por tipo de fraude: **Substituição do retrato**, **Cópia impressa** e **Captura de tela**.

Cada verificação atribui ao documento uma pontuação de `0` a `100` que indica o quanto ele parece autêntico. **Quanto maior a pontuação, maior a probabilidade de o documento ser autêntico.** Os dois valores de um cartão dividem essa escala em três faixas:

| Pontuação | Resultado |
| - | - |
| Abaixo do valor de **Recusar** | `error`, a sessão é Recusada |
| Igual ou acima do valor de **Recusar** e abaixo do valor de **Revisão** | `warning`, a sessão vai para Em revisão |
| Igual ou acima do valor de **Revisão** | `information`, a verificação é aprovada |

Aumentar qualquer um dos valores torna a verificação mais rigorosa: mais sessões caem na faixa acima dele. Diminuir um valor deixa passar mais sessões. No editor, o valor de Recusar não pode ultrapassar o valor de Revisão. Pela API, um valor de Recusar acima do valor de Revisão elimina a faixa Em revisão.

Padrões da plataforma, usados quando um fluxo não define um valor:

| Tipo de fraude | Recusar abaixo de | Revisão abaixo de | Chaves de configuração do fluxo |
| - | - | - | - |
| Substituição do retrato | `35` | `70` | `document_liveness_portrait_replace_decline_threshold`, `document_liveness_portrait_replace_review_threshold` |
| Cópia impressa | `35` | `77` | `document_liveness_printed_copy_decline_threshold`, `document_liveness_printed_copy_review_threshold` |
| Captura de tela | `30` | `70` | `document_liveness_screen_replay_decline_threshold`, `document_liveness_screen_replay_review_threshold` |

Comece pelos padrões e altere um valor de cada vez. Cada cartão mostra seu padrão e um botão **Restaurar padrão**, para que você sempre possa voltar a ele. O editor também avisa sobre estas configurações:

* **Revisão em `100`.** Só uma pontuação perfeita é aprovada, então quase todas as sessões vão para Em revisão ou são recusadas.
* **Recusar em `100`.** Só uma pontuação perfeita evita a recusa, então quase todas as sessões são recusadas.
* **Os dois valores em `0`.** Nenhuma pontuação é sinalizada, então a verificação fica, na prática, desativada.

Definir os dois valores com o mesmo número elimina a faixa Em revisão: uma pontuação abaixo dele é recusada e qualquer outra pontuação é aprovada.

Quando **Cópia impressa** e **Captura de tela** sinalizariam o mesmo documento, apenas `SCREEN_CAPTURE_DETECTED` é reportado.

A correspondência facial entre câmeras segue a mesma lógica, com uma diferença no limite: uma pontuação igual ao seu limiar de revisão ainda vai para Em revisão.

Quatro riscos de ID não são configuráveis nem dependem de limiares. `POSSIBLE_FRONT_CAMERA_FACE_IN_BLOCKLIST` sempre direciona para **Revisão**: uma selfie parecida com um rosto da lista de bloqueio, sem ser uma correspondência confirmada, deve ser avaliada por uma pessoa, nunca recusada automaticamente e nunca ignorada. `BARCODE_SIGNATURE_INVALID` sempre direciona para **Revisão**. Ele só é disparado quando um código de barras traz uma assinatura da autoridade emissora que falha na verificação criptográfica, portanto não existe configuração em que uma falsificação comprovada seja ignorada. `DOCUMENT_BACK_SIDE_NOT_AVAILABLE` é sempre **informação** e nunca afeta a decisão: ele indica uma limitação do catálogo de documentos da Didit, não uma propriedade do documento apresentado, portanto não existe configuração em que ele possa recusar um titular legítimo ou enviá-lo para revisão.
`FRONT_CAMERA_CAPTURED_DOCUMENT` sempre direciona para **Revisão**.
Ele só é disparado quando o quadro da câmera frontal capturado durante a leitura do documento mostra um documento de identidade e nenhuma pessoa, portanto uma captura que não diz nada sobre quem segurava o documento é sempre encaminhada para análise humana.
Ele é verificado sempre que a correspondência de selfie na captura do documento (`is_document_selfie_portrait_match_enabled`) está ativada.

## Avisos gerados

Verificado com base em `collect_ocr_logs`, no fluxo de captura de documentos e em `process_ocr_logs_and_get_status`. As descrições curtas abaixo são as strings `short_description` exatas retornadas pela API.

### Reconhecimento e qualidade do documento

| Risco | Descrição curta | Causa | Severidade |
| - | - | - | - |
| `COULD_NOT_RECOGNIZE_DOCUMENT` | Could not validate Document | O sistema não conseguiu confirmar a autenticidade ou a validade do documento enviado, geralmente por baixa qualidade da imagem ou por um tipo de documento não suportado. Também é usado como fallback para falhas de processamento não reconhecidas. | Configurável: Invalid Validation, padrão Review |
| `COULD_NOT_DETECT_DOCUMENT_TYPE` | Could not detect document type | A frente do documento não corresponde, com alta confiança, a nenhum design de documento oficial conhecido, ou o mecanismo de OCR não conseguiu classificar a família do documento (passaporte, documento de identidade ou carteira de motorista). Um documento que contém dados válidos, mas cujo layout não corresponde a nenhum design oficial (um documento editado ou gerado por computador, ou um design novo ainda não suportado), cai aqui. Quando este aviso é gerado, `DOCUMENT_NOT_SUPPORTED_FOR_APPLICATION` é suprimido (o tipo é desconhecido, então "não suportado" seria contraditório). | Configurável: Invalid Validation, padrão Review |
| `DOCUMENT_NOT_SUPPORTED_FOR_APPLICATION` | Document not supported for your application | O tipo de documento reconhecido não está na lista de documentos permitidos da aplicação. `additional_data` contém o país, o tipo de documento, o subtipo e o subtipo considerando a região. | `error`: **recusa automática** |
| `DOCUMENT_EXPIRED` | Document expired | No momento da captura: a data de validade do documento já passou (`error`, recusa automática). Após a aprovação: o monitoramento contínuo de validade adiciona este aviso com `log_type: "warning"` quando a data de um documento aprovado passa, e o status do relatório passa a ser `Expired`. | `error` na captura; `warning` pelo monitoramento |
| `DOCUMENT_SIDES_MISMATCH` | Document sides mismatch | As imagens da frente e do verso não pertencem ao mesmo documento. | Configurável: Data Inconsistency, padrão information |
| `DOCUMENT_BACK_SIDE_NOT_AVAILABLE` | Back side not available for this document | O fluxo solicitou os dois lados, a frente foi reconhecida e o catálogo de documentos da Didit não registra verso para esse documento específico, então apenas a frente pôde ser coletada. A evidência do relatório é de um único lado. Não há nada de errado com o documento apresentado, o titular nunca é solicitado a capturá-lo novamente, e uma nova digitalização não pode acrescentar um verso. `additional_data` contém o `front_document_name` reconhecido. | `information`: nunca afeta a decisão |
| `PORTRAIT_IMAGE_NOT_DETECTED` | Portrait image not detected | Não foi possível localizar uma foto de rosto em um documento que deveria ter uma (a verificação é adiada quando o usuário envia primeiro o lado sem foto). | `error`: **recusa automática** |
| `DOCUMENT_HAS_NO_PORTRAIT` | Document has no portrait | A família de documento reconhecida nunca traz foto de rosto em nenhum dos lados (algumas autorizações de residência, cartões de saúde, certidões de registro, cartões fiscais e uma parte das carteiras de motorista e documentos de identidade). Trata-se de um fato do catálogo sobre o tipo de documento, não de um problema de qualidade da imagem: digitalizar o documento novamente não pode mudar o resultado. | Configurável: Document Without Portrait, padrão Review |
| `IMAGE_TOO_BLURRY` / `IMAGE_TOO_DARK` / `IMAGE_TOO_BRIGHT` | Document image is too blurry / too dark / too bright | O controle de qualidade de imagem rejeitou um envio (o usuário é solicitado a capturar novamente). `additional_data` contém o `side` que falhou. Uma nova captura bem-sucedida remove o aviso desatualizado; o controle é ignorado na última tentativa permitida ao usuário, para que ele nunca fique bloqueado de forma definitiva. | Configurável: ação de Image Quality por risco, padrão information |

> [!NOTE]
>
> O fluxo de captura também pode rejeitar um envio com os códigos de feedback `IMAGE_RESOLUTION_TOO_LOW`, `DOCUMENT_NOT_FULLY_VISIBLE`, `IMAGE_QUALITY_TOO_LOW` e `DOCUMENT_OCCLUSION_DETECTED` (quando se avalia que um dedo ou objeto está cobrindo fisicamente o texto impresso). Cada um deles solicita uma nova captura no SDK e é registrado no relatório como um risco próprio, direcionado pelas configurações de Image Quality: `DOCUMENT_OCCLUSION_DETECTED` e `IMAGE_QUALITY_TOO_LOW` compartilham uma mesma ação. Eles descrevem a *captura*: uma nova captura bem-sucedida remove o aviso. Se um campo coberto deve ou não afetar a decisão é definido separadamente pelo `CRITICAL_FIELD_OCCLUSION_DETECTED`, do lado da integridade, descrito abaixo, que é gerado no momento da decisão e tem Review como padrão.

> [!TIP]
>
> Se o seu fluxo ancora a identidade na Correspondência facial em vez da foto do documento, considere direcionar **Document Without Portrait** para Decline; caso contrário, uma família de documentos sem foto chega à Correspondência facial sem nada para comparar.

### Extração de campos

| Risco | Descrição curta | Causa | Severidade |
| - | - | - | - |
| `NAME_NOT_DETECTED` | First name and/or last name not detected | Não foi possível extrair o nome e o sobrenome. Não se aplica quando o titular legitimamente tem um único nome (países com nome único, ou quando a própria MRZ traz um único nome) e pelo menos um valor de nome foi extraído. | Configurável: Invalid Validation, padrão Review |
| `DATE_OF_BIRTH_NOT_DETECTED` | Date of birth not detected | Não foi possível extrair a data de nascimento de um documento que deveria tê-la. | Configurável: Invalid Validation, padrão Review |
| `DOCUMENT_NUMBER_NOT_DETECTED` | Document number not detected | Não foi possível extrair nem o número do documento nem um número pessoal. | Configurável: Invalid Validation, padrão Review |
| `EXPIRATION_DATE_NOT_DETECTED` | Expiration date not detected | Não foi possível extrair a data de validade de um documento que deveria tê-la. | Configurável: Expiration Date Not Detected, padrão information |
| `INVALID_DATE` | Invalid Date | Uma data do documento (data de nascimento ou data de validade) não pode ser interpretada como uma data válida. No fluxo de captura atual, isso aparece como uma solicitação de nova captura durante o envio, e não como um aviso armazenado; o código continua no grupo de direcionamento Invalid Validation e pode aparecer em sessões mais antigas. | Configurável: Invalid Validation, padrão Review |
| `DOCUMENT_NUMBER_FORMAT_MISMATCH` | Formato do número do documento divergente | O número do documento não corresponde ao formato esperado configurado para este tipo de documento. `additional_data` traz `expected_format` e `extracted_value`. | Configurável — Format Mismatch, padrão Revisão |
| `PERSONAL_NUMBER_FORMAT_MISMATCH` | Formato do número pessoal divergente | O número pessoal não corresponde ao formato esperado configurado para este tipo de documento. | Configurável — Format Mismatch, padrão Revisão |
| `CRITICAL_FIELD_OCCLUSION_DETECTED` | Um campo crítico do documento está coberto | A verificação de oclusão constatou que um campo impresso crítico estava fisicamente coberto na captura: um número de identificação, um nome, a data de nascimento ou a data de validade. Este é um sinal de integridade do documento, não de qualidade da captura: cobrir justamente os números com os quais um relatório é conciliado é o que caracteriza um documento ocultado ou adulterado. O valor lido de um campo coberto é descartado da extração em vez de ser retornado como confirmado, por isso o risco `*_NOT_DETECTED` correspondente normalmente acompanha este aviso. `additional_data` traz os nomes dos campos cobertos em `covered_fields`, e `covered_identifiers` quando um deles alimenta `document_number` ou `personal_number`. | Configurável — Critical Field Covered, padrão Revisão |

### MRZ, QR, código de barras

Os três riscos de MRZ são ignorados para tipos de documento com MRZs reconhecidamente pouco confiáveis.

| Risco | Descrição curta | Causa | Severidade |
| - | - | - | - |
| `MRZ_NOT_DETECTED` | MRZ não detectada | Não foi possível localizar a MRZ em um documento que deveria tê-la. | Configurável — Invalid MRZ, padrão informação |
| `MRZ_VALIDATION_FAILED` | A MRZ não é válida | A MRZ falhou na validação de dígito verificador / formato. Muitas vezes é uma captura de baixa qualidade; pode indicar adulteração. | Configurável — Invalid MRZ, padrão informação |
| `MRZ_AND_DATA_EXTRACTED_FROM_OCR_NOT_SAME` | A MRZ e os dados extraídos por OCR apresentam algumas discrepâncias | O conteúdo da MRZ diverge do OCR da VIZ (zona visível). Possível alteração. | Configurável — Data Inconsistency, padrão informação |
| `QR_NOT_DETECTED` | QR não detectado | Não foi possível localizar o código QR em um documento que deveria tê-lo. | Configurável — Invalid Code, padrão informação |
| `QR_VALIDATION_FAILED` | Falha na validação do QR | Não foi possível validar o conteúdo do QR em relação ao restante do documento. | Configurável — Invalid Code, padrão informação |
| `BARCODE_NOT_DETECTED` | Código de barras não detectado | Não foi possível localizar o código de barras em um documento que deveria tê-lo. | Configurável — Invalid Code, padrão informação |
| `BARCODE_VALIDATION_FAILED` | Falha na validação do código de barras | Não foi possível validar o conteúdo do código de barras em relação ao restante do documento. | Configurável — Invalid Code, padrão informação |
| `BARCODE_SIGNATURE_INVALID` | Assinatura do código de barras inválida | O código de barras contém uma assinatura digital da autoridade emissora, e essa assinatura falhou na verificação - os dados do código de barras não são os dados que a autoridade assinou, o que aponta para um documento falsificado ou alterado. Atualmente verificado para códigos de barras **2D-Doc franceses (ANTS)**, nos quais uma assinatura verificada permite que a Didit promova campos sem precisar de corroboração da MRZ; as assinaturas AAMVA (carteiras de motorista e documentos de identidade dos EUA/Canadá) são apenas detectadas e registradas, ainda não aplicadas. | Fixo - Revisão (grupo de ação próprio `invalid_barcode_signature_action`; ainda não configurável pelo console/API) |
| `DATA_INCONSISTENT` | Os dados de OCR do documento não são consistentes | Os dados extraídos de diferentes partes do documento divergem, normalmente a frente e o verso do mesmo documento. | Configurável — Data Inconsistency, padrão informação |

> [!NOTE]
>
> Atualmente, a verificação de assinatura de código de barras abrange as carteiras de identidade nacionais francesas, cujo código de barras 2D-Doc da ANTS é assinado pela autoridade emissora. `BARCODE_SIGNATURE_INVALID` é gerado somente quando a própria verificação de assinatura rejeita o payload. Um código de barras sem assinatura, assinado por uma autoridade que ainda não está no repositório de confiança da Didit, ou cuja assinatura não pode ser decodificada é tratado como dados não autenticados e validado em relação à MRZ e ao texto impresso como antes, sem gerar este risco.
>
> Os códigos de barras de carteiras de motorista dos EUA e do Canadá (AAMVA) não são verificados criptograficamente: a assinatura digital nesses casos é opcional e específica de cada jurisdição, e nenhuma jurisdição publica chaves de verificação, por isso a Didit apenas detecta e registra se um payload contém uma assinatura; a assinatura em si nunca é verificada. Falhas de assinatura AAMVA não são um sinal de risco hoje. Um payload AAMVA adulterado só aparece como `BARCODE_VALIDATION_FAILED`, e somente se a adulteração também fizer o código de barras divergir da MRZ ou dos dados impressos/de OCR - uma assinatura falsificada em um payload internamente consistente passa sem nenhum sinal.
>
> O usuário nunca é solicitado a refazer a captura em caso de `BARCODE_SIGNATURE_INVALID`: uma assinatura que não corresponde ao payload não pode ser corrigida tirando uma foto melhor.

### Correspondência de identidade

| Risco | Descrição curta | Causa | Severidade |
| - | - | - | - |
| `ID_DOCUMENT_IN_BLOCKLIST` | Documento de identidade na lista de bloqueio | O documento corresponde a um documento na lista de bloqueio (mesma data de nascimento, mesmo país emissor e número de documento exatamente igual) ou a um número de documento incluído manualmente na lista de bloqueio. `additional_data` traz a referência da sessão bloqueada. | `error` — **recusa automática** |
| `ID_DOCUMENT_IN_ALLOWLIST` | Documento de identidade na lista de permissão | O número do documento corresponde à sua lista de permissão de documentos, por isso a ação de usuário duplicado foi ignorada. `additional_data` traz o `document_number`. | `information` |
| `POSSIBLE_DUPLICATED_USER` | Possível usuário duplicado de outra sessão | Outro documento na sua aplicação tem a mesma data de nascimento, o mesmo país emissor e um nome completo muito semelhante, sob um usuário diferente (`vendor_data`), independentemente do status dessa sessão. `additional_data` traz a referência da sessão duplicada. | Configurável — Duplicated User, padrão informação |
| `DOCUMENT_NAME_DIFFERENT_FROM_OTHER_APPROVED_DOCUMENTS` | O nome do documento difere de outros documentos aprovados | O nome neste documento difere de documentos aprovados anteriormente para o mesmo usuário. Gerado somente para contas do protocolo Didit (UserKYC), não para sessões padrão da API. | Configurável — Data Inconsistency, padrão informação |
| `ID_VERIFICATION_DATA_MISMATCH_BETWEEN_DOCUMENTS` | Divergência de dados entre os documentos da verificação de identidade | Dois documentos de identidade na mesma sessão divergem quanto ao nome / data de nascimento. | Configurável — Inconsistência de dados, padrão information |
| `LOW_FRONT_CAMERA_FACE_MATCH_SIMILARITY` | A selfie feita durante a captura do documento não corresponde ao retrato do documento | O rosto capturado pela câmera frontal do usuário durante a captura do documento não corresponde bem ao retrato do documento. | Definido por limiar: `error` abaixo do limiar de recusa, `warning` no limiar de revisão ou abaixo dele |
| `FRONT_CAMERA_FACE_IN_BLOCKLIST` | A selfie feita durante a captura do documento corresponde a um rosto da lista de bloqueio | O rosto em uma selfie tirada pela câmera frontal durante a captura do documento corresponde com alta confiança a um rosto da sua lista de bloqueio de rostos, seja ele adicionado a partir de uma prova de vida, da selfie de captura de documento de outra sessão ou por upload. `additional_data` traz a referência da sessão bloqueada (`blocklisted_session_id`, `blocklisted_session_number`) quando o rosto bloqueado veio de uma sessão, e `face_image_source` (`front_image_camera_front` ou `back_image_camera_front`) para a selfie que gerou a correspondência. | `error` — **recusa automática** |
| `POSSIBLE_FRONT_CAMERA_FACE_IN_BLOCKLIST` | A selfie feita durante a captura do documento pode corresponder a um rosto da lista de bloqueio | O rosto em uma selfie de captura de documento é semelhante a um rosto da sua lista de bloqueio de rostos, mas não o suficiente para ser uma correspondência confirmada. Mesmo `additional_data` acima. | `warning` — **sempre Revisão** |
| `FRONT_CAMERA_DUPLICATED_FACE` | A selfie feita durante a captura do documento corresponde a um usuário aprovado | O rosto na selfie tirada pela câmera frontal durante a captura do documento corresponde com alta confiança ao rosto de um usuário já aprovado na sua aplicação, portanto a mesma pessoa pode estar se verificando novamente com outra conta. `additional_data` traz a sessão correspondente (`duplicated_session_id`, `duplicated_session_number`) e `face_image_source` para a selfie que gerou a correspondência. | Conforme **Rosto duplicado na captura silenciosa** (padrão Aprovar, `information`) |
| `POSSIBLE_FRONT_CAMERA_DUPLICATED_FACE` | A selfie feita durante a captura do documento pode corresponder a um usuário aprovado | O rosto em uma selfie de captura de documento é semelhante ao rosto de um usuário já aprovado na sua aplicação, mas não o suficiente para ser uma correspondência confirmada. Mesmo `additional_data` acima. | Conforme **Rosto duplicado na captura silenciosa** (padrão Aprovar, `information`) |
| `FRONT_CAMERA_DUPLICATED_FACE_NAME_MISMATCH` | A selfie da captura do documento corresponde a um usuário com outro nome | Gerado além de `FRONT_CAMERA_DUPLICATED_FACE` quando o usuário aprovado foi verificado com um nome diferente. `additional_data` acrescenta `name_match_score`; nunca traz o nome do outro usuário. | Conforme **Duplicata na captura silenciosa com nome diferente** (padrão Revisão, `warning`) |
| `FRONT_CAMERA_DUPLICATED_FACE_DOCUMENT_MISMATCH` | A selfie da captura do documento corresponde a um usuário com outra data de nascimento | Gerado além de `FRONT_CAMERA_DUPLICATED_FACE` quando o documento de identidade do usuário aprovado mostra uma data de nascimento diferente. Um documento diferente da mesma pessoa (por exemplo, um passaporte depois de uma carteira de identidade), um documento renovado ou o mesmo número de documento do mesmo país não é sinalizado. `additional_data` acrescenta `mismatch_dimensions`, nunca os dados do documento do outro usuário. | Conforme **Duplicata na captura silenciosa com data de nascimento diferente** (padrão Revisão, `warning`) |
| `FRONT_CAMERA_CAPTURED_DOCUMENT` | A câmera frontal capturou um documento de identidade em vez do usuário | O quadro da câmera frontal obtido durante a leitura do documento mostra um documento de identidade (por exemplo, um cartão erguido diante da câmera) e nenhuma pessoa. A correspondência da selfie da captura do documento não é calculada para esse quadro. | Sempre **Revisão** |

### Prova de vida do documento (adulteração)

Definido por limiar para cada tipo de fraude nos fluxos. Na API de OCR independente, esses três riscos recusam incondicionalmente, e uma verificação solicitada que não produz uma pontuação utilizável retorna `In Review` em vez de aprovar.

As próprias pontuações aparecem em todo relatório V3 como [`document_liveness`](https://docs.didit.me/pt-br/core-technology/id-verification/report-id-verification#pontuações-de-prova-de-vida-do-documento), inclusive quando nenhum aviso foi gerado, para que um documento aprovado ainda possa ser auditado.

| Risco | Descrição curta | Causa | Severidade |
| - | - | - | - |
| `SCREEN_CAPTURE_DETECTED` | Captura de tela do documento detectada | O documento foi capturado a partir de uma tela, e não de um documento físico. | `error` abaixo do limiar de recusa, `warning` abaixo do limiar de revisão, caso contrário `information` |
| `PRINTED_COPY_DETECTED` | Cópia impressa do documento detectada | O documento parece ser uma cópia impressa, e não o original. | Mesmos limiares de três faixas |
| `PORTRAIT_MANIPULATION_DETECTED` | Manipulação do retrato detectada | A região do retrato parece ter sido substituída ou alterada. | Mesmos limiares de três faixas |
| `DOCUMENT_LIVENESS_NOT_COMPUTED` | Não foi possível calcular a verificação de prova de vida do documento | A verificação de prova de vida do documento (falsificação) solicitada não retornou uma pontuação utilizável — o provedor falhou, respondeu com um código diferente de 200 ou respondeu HTTP 200 com `status="ERR"` —, portanto o documento nunca foi verificado quanto a substituição de retrato, cópia impressa ou reprodução em tela. A ausência de pontuação não é evidência de um documento genuíno. Somente na API de OCR independente. | `warning` + `In Review` (não configurável; nunca substitui um `Declined`) |

### Integridade do canal de captura

| Risco | Descrição curta | Causa | Configurável via | Padrão |
| - | - | - | - | - |
| `INJECTION_ATTACK_DETECTED` | Ataque de injeção detectado | A captura foi injetada em vez de capturada pela própria câmera do dispositivo: uma câmera virtual por software capaz de reproduzir qualquer vídeo, um feed de câmera gerado pela página ou por automação do navegador, uma câmera interceptada (hook) ou uma ferramenta de instrumentação acoplada ao app forneceu os quadros. `additional_data.reasons` lista apenas os motivos que comprovam isso, e `source` é `capture_integrity`. Aplica-se à captura do documento e à selfie tirada para uma consulta de identidade. | `id_verification_injection_attack_action` | **Recusar** |

O `log_type` reflete a ação configurada: `error` para Recusar, `warning` para Revisão e `information` para Nenhuma ação.
Ação recomendada: trate uma sessão recusada como uma captura injetada e peça à pessoa que tente novamente em um dispositivo físico, usando a câmera integrada dele.
Sinais que uma pessoa real pode produzir nunca geram `INJECTION_ATTACK_DETECTED` e permanecem informativos.
Aplicativos que retransmitem uma câmera real, como um celular usado como webcam ou uma camada de efeitos sobre uma webcam real, não são reportados como ataques de injeção.
Trata-se da detecção de ataques de injeção, que é diferente da detecção de ataques de apresentação (uma falsificação apresentada a uma câmera real).

### Imagens públicas conhecidas de documentos

| Risco | Descrição curta | Causa | Severidade |
| - | - | - | - |
| `PUBLIC_DOCUMENT_IMAGE_DETECTED` | Imagem pública conhecida de documento da internet detectada | A imagem do documento enviada corresponde a uma imagem conhecida e disponível publicamente na internet (por exemplo, um espécime, uma foto de imprensa ou uma foto de banco de imagens de um documento), portanto não pode ser uma foto do documento físico do próprio usuário. A correspondência usa impressões digitais exatas e perceptuais (pHash/dHash) comparadas ao acervo da Didit de imagens públicas conhecidas de documentos; o `additional_data` traz `match_type` (`exact` ou `perceptual`), `source`, `source_url` e um `similarity_score` (0-100). | Fixa - Revisão nos fluxos; **recusa automática** na API independente `/id-verification` |

### Divergências com os dados esperados

Quando você envia `expected_details` para uma sessão, a Didit gera um aviso de divergência para cada campo que não corresponde. Um único agrupamento (`expected_details_mismatch_action`, padrão Revisão) controla o encaminhamento de todos eles:

| Risco | Descrição curta | Causa |
| - | - | - |
| `FULL_NAME_MISMATCH_WITH_PROVIDED` | Nome completo diverge das informações fornecidas | O nome fornecido tem pontuação abaixo do limiar de correspondência de nome em relação ao documento. |
| `DOB_MISMATCH_WITH_PROVIDED` | Data de nascimento diverge das informações fornecidas | A data de nascimento fornecida não corresponde. |
| `GENDER_MISMATCH_WITH_PROVIDED` | Gênero diverge das informações fornecidas | O gênero fornecido não corresponde. |
| `COUNTRY_MISMATCH_WITH_PROVIDED` | País diverge das informações fornecidas | O país fornecido não corresponde a `issuing_state`. |
| `NATIONALITY_MISMATCH_WITH_PROVIDED` | Nacionalidade diverge das informações fornecidas | A nacionalidade fornecida não corresponde. |
| `IDENTIFICATION_NUMBER_MISMATCH_WITH_PROVIDED` | Número de identificação diverge das informações fornecidas | O número de identificação fornecido não corresponde ao número do documento, ao número pessoal nem ao número fiscal. |

Cada aviso de divergência traz os valores esperados e extraídos em `additional_data`.

### Idade

| Risco | Descrição curta | Causa | Severidade |
| - | - | - | - |
| `MINIMUM_AGE_NOT_MET` | Idade mínima não atingida | O titular está abaixo da idade mínima configurada (global ou por país/estado). O `additional_data` traz `min_age_allowed` e `user_age`. | Configurável — Idade mínima, padrão Recusar (`error`); recusa incondicional na API de OCR independente |
| `MAXIMUM_AGE_EXCEEDED` | Idade máxima excedida | O titular está acima da idade máxima configurada. O `additional_data` traz `max_age_allowed` e `user_age`. | Configurável — Idade máxima, padrão Recusar (`error`) |
| `AGE_NOT_DETECTED` | Idade não detectada | Fluxos adaptativos de verificação de idade: não foi possível extrair a idade do documento. | `error` — **recusa automática** |
| `AGE_BELOW_MINIMUM` | Idade abaixo do mínimo | Fluxos adaptativos de verificação de idade: a idade extraída está abaixo do mínimo. | `error` — **recusa automática** |

### Endereço

| Risco | Descrição curta | Causa | Severidade |
| - | - | - | - |
| `UNPARSED_ADDRESS` | Não foi possível determinar a localização do endereço | O documento define um campo de endereço, mas não foi possível interpretar nem geolocalizar o endereço extraído. | Configurável — Endereço não interpretado, padrão informação |

## Correspondências de documentos entre sessões

Além dos avisos acima, o relatório de identidade V3 inclui um array `matches[]`: até 5 outros documentos na sua aplicação com a mesma data de nascimento, o mesmo país emissor e um nome completo muito semelhante (documentos na lista de bloqueio exigem, além disso, correspondência exata do número do documento), excluindo as sessões que pertencem ao mesmo usuário. Os documentos adicionados à sua lista de bloqueio aparecem com `is_blocklisted: true`. Os documentos na sua lista de permissões continuam aparecendo nas correspondências, mas a ação para usuário duplicado não é aplicada.

Cada correspondência inclui `session_id`, `session_number`, `vendor_data`, `verification_date`, `user_details` (`name`, `document_type`, `document_number`), `status`, `is_blocklisted`, `api_service` e uma `front_image_url` assinada.

## Exemplos

### Aviso configurável em seu roteamento padrão (informação)

```json theme={null}
"warnings": [
  {
    "feature": "ID_VERIFICATION",
    "risk": "QR_NOT_DETECTED",
    "additional_data": null,
    "log_type": "information",
    "short_description": "QR not detected",
    "long_description": "The system couldn't find or read the QR code on the document. This could be due to poor image quality or an unsupported document type.",
    "node_id": "id_primary"
  }
]
```

### Recusa automática por documento expirado

```json theme={null}
"warnings": [
  {
    "feature": "ID_VERIFICATION",
    "risk": "DOCUMENT_EXPIRED",
    "additional_data": null,
    "log_type": "error",
    "short_description": "Document expired",
    "long_description": "The document's expiration date has passed, rendering it no longer valid for use.",
    "node_id": "id_primary"
  }
]
```

### Divergência entre os dados esperados e o payload

```json theme={null}
"warnings": [
  {
    "feature": "ID_VERIFICATION",
    "risk": "DOB_MISMATCH_WITH_PROVIDED",
    "additional_data": {
      "expected_dob": "1990-01-01",
      "extracted_dob": "1991-03-15"
    },
    "log_type": "warning",
    "short_description": "Date of birth mismatch with provided information",
    "long_description": "The provided date of birth in `expected_details` doesn't match the date extracted from the document.",
    "node_id": "id_primary"
  }
]
```

## Tipos de aviso

Cada risco recebe um nível de severidade com base na configuração da sua aplicação. As três severidades são:

## Relacionados

* [Relatório de verificação de identidade](https://docs.didit.me/pt-br/core-technology/id-verification/report-id-verification.md) — esquema completo do relatório e status.
* [Monitoramento de documentos](https://docs.didit.me/pt-br/core-technology/id-verification/document-monitoring-id-verification.md) — como a Didit detecta adulterações e duplicatas entre sessões.
* [Webhooks](https://docs.didit.me/pt-br/integration/webhooks.md) — o `session.status.updated` traz os avisos assim que a etapa de identidade termina.
* [Modelos de dados — Verificação de identidade](https://docs.didit.me/pt-br/reference/data-models.md#verificação-de-identidade) — esquema canônico, campo a campo.
* [Modelos de dados — Objeto de aviso](https://docs.didit.me/pt-br/reference/data-models.md#objeto-de-aviso) — a estrutura de cada entrada em `warnings[]`.


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