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

# Codici di esito della validazione su database

> Tutti i codici di esito della validazione su database di Didit: corrispondenza, deceduto, minore, documento non trovato. Da $0.05/controllo.

L'API di [Validazione su database](https://docs.didit.me/it/core-technology/database-validation/overview.md) di Didit interroga il registro civile ufficiale di ciascun paese — RENAPER (Argentina, \$0.20/controllo con confronto facciale biometrico), Receita Federal (Brasile, \$0.20), Tribunal Electoral SIB (Panama, \$0.75 biometrico), Junta Central Electoral (Repubblica Dominicana, \$0.05) e altri 14 — con fatturazione per query riuscita, senza minimi mensili.

Quando esegui una Validazione su database, ottieni due livelli di risultato:

1. Un **codice di esito standard** che funziona allo stesso modo in tutti i paesi supportati, così da consentirti di scrivere un'unica logica di gestione per tutti.
2. Un **codice di dettaglio specifico per paese** opzionale che indica esattamente quale condizione ha restituito il registro governativo — utile per l'assistenza, l'analisi e per decidere se invitare l'utente a riprovare.

Questa pagina elenca tutti i valori possibili e illustra come reagire a ciascuno di essi.

## Codici di esito standard

Questi codici sono identici per ogni paese. Basa la tua logica di revisione, rifiuto e nuovo tentativo su di essi — non sui codici di dettaglio specifici per paese.

| Codice di esito | Significato | Ripetibile? | Gestione consigliata |
| :- | :- | :-: | :- |
| `MATCH` | Il registro ha confermato l'identità e tutti i campi verificati corrispondevano. | — | Approva. |
| `PARTIAL_MATCH` | Il registro ha trovato un record, ma uno o più dei campi confrontati dal servizio non corrispondevano completamente (di solito nome o data di nascita). I campi che determinano l'esito variano in base al servizio — vedi [Metodi di corrispondenza](https://docs.didit.me/it/core-technology/database-validation/database-validation-matching-methods.md). | — | Invia a revisione o configura una [Partial Match Action](https://docs.didit.me/it/core-technology/database-validation/database-validation-warnings.md) per il rifiuto automatico. |
| `NO_MATCH` | Il registro non ha restituito alcuna corrispondenza per i dati inviati. | No | Rifiuta, o invia a revisione in base alle tue policy. |
| `DOCUMENT_SUPERSEDED` | Il registro ha confermato l'identità della persona, ma l'**edizione del documento** presentata non è quella presente nei suoi archivi — nel frattempo è stata emessa un'edizione più recente, quindi il documento in possesso non è più aggiornato. La lettera dell'*ejemplar* del DNI argentino è il caso tipico. È distinto da `NO_MATCH` (la persona non corrispondeva) e da `DOCUMENT_NOT_FOUND` (nessun record presente): solo il documento fisico non è aggiornato. | No | Invia a revisione e richiedi l'edizione corrente del documento. Segue la tua **No Match Action** e genera [`DATABASE_VALIDATION_DOCUMENT_SUPERSEDED`](https://docs.didit.me/it/core-technology/database-validation/database-validation-warnings). |
| `DOCUMENT_NOT_FOUND` | Il numero del documento di identità è sintatticamente valido ma non esiste nel registro governativo. | No | Rifiuta. |
| `INVALID_DOCUMENT_FORMAT` | Il numero del documento di identità inviato non è valido (lunghezza errata, caratteri non numerici, checksum errato). | No | Chiedi all'utente di inserire nuovamente il numero del documento. |
| `INVALID_INPUT` | Un campo obbligatorio di input (selfie, genere, data di nascita, ecc.) era mancante o non valido. | No | Chiedi all'utente di inviare nuovamente il campo mancante. La sessione verrà rielaborata automaticamente una volta forniti i dati — vedi [`COULD_NOT_PERFORM_DATABASE_VALIDATION`](https://docs.didit.me/it/core-technology/database-validation/database-validation-warnings). |
| `MINOR_BLOCKED` | Il registro non ha fornito il record perché il soggetto è minorenne. Si applica nelle giurisdizioni con leggi sulla protezione dei dati dei minori (LGPD in Brasile, Argentina). | No | Rifiuta. Rispetta il quadro normativo locale — non effettuare nuovi tentativi. |
| `DECEASED` | Il registro segnala che il soggetto è deceduto. | No | Rifiuta. |
| `BIOMETRIC_NO_MATCH` | Per le validazioni biometriche (Argentina, Panama), il punteggio di confronto facciale era inferiore alla soglia di accettazione. | No | Rifiuta, o invia a revisione. |
| `BIOMETRIC_IMAGE_UNUSABLE` | Impossibile elaborare il selfie — l'immagine era vuota, non conteneva volti, era di bassa qualità o il registro non è riuscito a leggerla. | Sì | Invita l'utente a scattare nuovamente il selfie. |
| `INCONCLUSIVE` | Il registro non è riuscito a determinare se la persona corrisponde — il risultato è realmente incerto (potrebbe essere o non essere presente nel registro). È distinto da `NO_MATCH` (assente in modo definitivo) e da `BIOMETRIC_IMAGE_UNUSABLE` (un problema tecnico dell'immagine): non è stato confermato nulla in nessun senso, quindi `match_type` è `null`. | Forse | Invia a revisione. Un nuovo tentativo con un selfie più nitido o dati aggiuntivi potrebbe risolvere il problema. |
| `REGISTRY_UNAVAILABLE` | Il registro governativo è temporaneamente non raggiungibile (timeout, errore di connettività, errore 5xx a monte). | Sì | Riprova dopo un breve intervallo. Didit ritenta già automaticamente gli errori temporanei, quindi vedere questo codice nel report finale significa che i tentativi sono stati esauriti. Quando un registro continua a fallire, la tua organizzazione riceve un'email quando l'interruzione si prolunga e di nuovo quando l'accesso viene ripristinato — vedi [Notifiche di disponibilità](https://docs.didit.me/it/core-technology/database-validation/overview.md#notifiche-di-disponibilità). |
| `REGISTRY_ERROR` | Il registro ha restituito un errore imprevisto che non rientra in nessuna delle categorie sopra indicate. | Forse | Scala la richiesta al supporto indicando il codice di dettaglio. |

> [!NOTE]
>
> Il campo `outcome_code` si trova all'interno di ciascuna voce dell'array `validations` nel report di validazione. Vedi [Report di validazione su database](https://docs.didit.me/it/core-technology/database-validation/database-validation-report.md) per scoprire dove si colloca nella risposta.

> [!NOTE]
>
> `REGISTRY_UNAVAILABLE` e `REGISTRY_ERROR` indicano che il registro di origine non ha mai risposto alla query, pertanto questi due esiti **non vengono fatturati** - vedi [prezzi](https://docs.didit.me/it/core-technology/database-validation/overview.md). Ogni altro codice di esito costituisce una risposta reale e a pagamento da parte del registro, anche quella che non conferma nulla (`INCONCLUSIVE`, `BIOMETRIC_IMAGE_UNUSABLE`) o quella che rifiuta i dati inviati (`INVALID_DOCUMENT_FORMAT`, `INVALID_INPUT` — come codici di esito indicano che il registro stesso ha rifiutato i dati, dopo l'invio della query).
>
> I dati di input che non raggiungono mai un registro non generano alcun codice di esito: `POST /v3/database-validation/` risponde con `400` quando un valore non rispetta le regole di formato del paese, e un servizio del workflow con campi mancanti o non validi viene ignorato con [`COULD_NOT_PERFORM_DATABASE_VALIDATION`](https://docs.didit.me/it/core-technology/database-validation/database-validation-warnings). Nessuno dei due viene fatturato. Il riepilogo completo è disponibile nella [pagina dei prezzi della Validazione su database](https://docs.didit.me/it/getting-started/database-validation-pricing.md).

## Codici di dettaglio specifici per paese

Il codice di dettaglio viene restituito come `outcome_detail` insieme a `outcome_code`. Solo i paesi elencati di seguito generano codici di dettaglio oltre all'esito standard: tutti gli altri paesi supportati restituiscono unicamente i codici standard.

### Argentina (RENAPER)

L'Argentina utilizza una validazione biometrica 1×1 rispetto al registro di identità nazionale RENAPER, combinando DNI, selfie e genere dichiarato.

| Codice di dettaglio | Esito standard | Significato |
| :- | :- | :- |
| `300` | `INVALID_DOCUMENT_FORMAT` | Il campo DNI deve essere un numero di 7–8 cifre. |
| `301` | `DOCUMENT_NOT_FOUND` | Il DNI inviato non corrisponde a un record valido. |
| `303` | `INVALID_INPUT` | Il campo del selfie era vuoto. |
| `304` | `INVALID_INPUT` | Il campo del genere era vuoto o diverso da `M`, `F`, `X`. |
| `305` | `NO_MATCH` | La combinazione di DNI e genere non è stata trovata. |
| `306` | `REGISTRY_UNAVAILABLE` | Impossibile eseguire l'interrogazione in questo momento. |
| `307` | `REGISTRY_UNAVAILABLE` | Errore di connessione al sistema pubblico di validazione dell'identità. |
| `311` | `REGISTRY_ERROR` | L'integrazione non ha accesso a questo prodotto. |
| `313` | `MINOR_BLOCKED` | Il record appartiene a una persona minorenne. |
| `400` | `REGISTRY_UNAVAILABLE` | Errore di connessione. |
| `401` | `NO_MATCH` | Nessun risultato trovato per i dati forniti. |
| `405` | `BIOMETRIC_IMAGE_UNUSABLE` | Conflitto con l'immagine; impossibile elaborarla. |
| `406` | `BIOMETRIC_IMAGE_UNUSABLE` | Errore nell'elaborazione dell'immagine. |
| `NO.HIT` | `BIOMETRIC_NO_MATCH` | Il punteggio di corrispondenza è risultato inferiore alla soglia di accettazione (\< 50). |
| `INTERNAL_ERROR` | `REGISTRY_UNAVAILABLE` | Timeout superato. |

### Brasile (Receita Federal — Consulta CPF)

Il Brasile valida il CPF rispetto al servizio ufficiale CPF della Receita Federal, con gestione esplicita per i minori ai sensi della LGPD (Lei Geral de Proteção de Dados) e dello Statuto Digitale dei Bambini e degli Adolescenti.

| Codice di dettaglio | Esito standard | Significato |
| :- | :- | :- |
| `200` | `MATCH` | CPF trovato e dati restituiti con successo. |
| `206` | `MATCH` | CPF trovato, ma alcuni campi non essenziali non sono stati restituiti. |
| `400` | `INVALID_DOCUMENT_FORMAT` | Il numero di CPF non è valido. |
| `404` | `DOCUMENT_NOT_FOUND` | Nessun CPF esistente con il numero inviato. |
| `422` | `MINOR_BLOCKED` | I dati relativi a un minore di 18 anni sono trattenuti ai sensi della LGPD (Legge 13.709/2018). La risposta include `minor_under_18: true`. |
| `451` | `MINOR_BLOCKED` | I dati relativi a un minore di 16 anni sono trattenuti ai sensi della LGPD e dello Statuto Digitale dei Bambini e degli Adolescenti (Legge 15.211/2025). La risposta include `minor_under_18: true` e `minor_under_16: true`. |
| `500` | `REGISTRY_UNAVAILABLE` | Errore del server a monte. |
| `504` | `REGISTRY_UNAVAILABLE` | Timeout del gateway: la richiesta non ha raggiunto l'API Consulta CPF. |

> [!NOTE]
>
> Per gli esiti `MINOR_BLOCKED` in Brasile, `source_data` restituisce comunque i flag `lgpd_minor`, `minor_under_18` e `minor_under_16` per consentirti di applicare flussi adatti all'età senza dover eseguire nuovi tentativi.

### Panama (SIB — Tribunal Electoral)

Panama utilizza la validazione biometrica rispetto al registro SIB (Servicio de Identificación Biométrica) gestito dal Tribunal Electoral. In caso di errore tecnico del SIB, la sessione esegue automaticamente il fallback a una ricerca 1×1.

| Codice di dettaglio | Esito standard | Significato |
| :- | :- | :- |
| `601` | `REGISTRY_UNAVAILABLE` | L'operatore non esiste nel database. |
| `602` | `MINOR_BLOCKED` | Il cittadino ha meno di 12 anni. |
| `603` | `DECEASED` | Il cittadino è deceduto. |
| `604` | `NO_MATCH` | Il cittadino ha una registrazione non valida. |
| `605` | `NO_MATCH` | Cittadino non riconosciuto. |
| `606` | `INVALID_INPUT` | Il campo della Cédula è vuoto. |
| `607` | `DOCUMENT_NOT_FOUND` | Cittadino non trovato. |
| `608` | `REGISTRY_ERROR` | Nessun accesso a SIB per questo cliente. |
| `610` | `BIOMETRIC_IMAGE_UNUSABLE` | Errore generale di validazione facciale. |
| `611` | `BIOMETRIC_IMAGE_UNUSABLE` | L'immagine per il confronto non è stata inviata. |
| `612` | `BIOMETRIC_IMAGE_UNUSABLE` | L'immagine non ha contenuto. |
| `613` | `BIOMETRIC_IMAGE_UNUSABLE` | Formato immagine non valido. |
| `614` | `BIOMETRIC_IMAGE_UNUSABLE` | Nessun volto rilevato nell'immagine. |
| `615` | `BIOMETRIC_NO_MATCH` | Soglia di somiglianza non raggiunta. |

### Altri paesi supportati

I paesi indicati di seguito restituiscono unicamente i codici di esito standard: non ci sono codici di dettaglio specifici per paese da gestire.

* **Bolivia, Colombia, Costa Rica, El Salvador, Guatemala, Honduras, Paraguay, Spagna, Uruguay, Venezuela** — ricerca 1×1 rispetto al registro civile corrispondente. I risultati corrispondono direttamente a `MATCH`, `NO_MATCH`, `DOCUMENT_NOT_FOUND`, `INVALID_DOCUMENT_FORMAT` o `REGISTRY_UNAVAILABLE`.
* **Cile (Registro Civil)** — ricerca del RUT. Corrisponde agli esiti standard più `MINOR_BLOCKED` quando il registro segnala un record minorenne.
* **Repubblica Dominicana (JCE)** — ricerca della Cédula che restituisce una validità booleana; corrisponde a `MATCH` o `NO_MATCH`.
* **Ecuador (Registro Civil)** — ricerca della Cédula.
* **Messico (RENAPO, più INE per 2×2)** — ricerca della CURP tramite RENAPO. Quando `validation_type` è `two_by_two`, viene eseguito un controllo incrociato aggiuntivo con INE; entrambi confluiscono negli stessi codici di esito standard.
* **Perù (RENIEC)** — ricerca del DNI.

## Procedura di gestione

Il gestore più semplice e robusto ha questo aspetto:

```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]
>
> Non è necessario creare diramazioni su `outcome_detail` per la logica di business: usalo per l'analisi, il debug e i ticket di assistenza. La stabilità dell'`outcome_code` standard è garantita tra i diversi paesi e nel tempo.

## Vedi anche

* [Database Validation Warnings](https://docs.didit.me/it/core-technology/database-validation/database-validation-warnings.md): i tag di avviso a livello di sessione (`COULD_NOT_PERFORM_DATABASE_VALIDATION`, `DATABASE_VALIDATION_PARTIAL_MATCH`, `DATABASE_VALIDATION_NO_MATCH`) e come configurare le azioni di revisione/rifiuto della tua applicazione.
* [Database Validation Report](https://docs.didit.me/it/core-technology/database-validation/database-validation-report.md): la struttura completa della risposta e dove compaiono `outcome_code` / `outcome_detail`.
* [Database Validation Supported Countries](https://docs.didit.me/it/core-technology/database-validation/database-validation-supported-countries.md): l'elenco completo dei paesi e dei metodi di corrispondenza.


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