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

# Consenso biometrico per BIPA, CUBI e Colorado

> Didit gestisce il consenso biometrico esplicito prima del selfie per Illinois, Texas e Colorado: trigger, SDK nativo 4.10.0 e campi di decisione.

Illinois (BIPA), Texas (CUBI) e Colorado richiedono un'informativa e una liberatoria esplicita prima che un'azienda raccolga la geometria facciale, da un selfie o dalla foto presente su un documento d'identità. Didit può mostrare un passaggio di consenso prima della prima acquisizione del volto alle persone coperte da queste leggi, conservando la risposta nella sessione come prova.

Questa pagina spiega quando appare il passaggio, quali applicazioni possono mostrarlo e come la risposta viene integrata nella decisione e nei webhook.

> [!WARNING]
>
> Didit mostra il passaggio e registra la risposta. Spetta a te stabilire se il percorso utente rispetta le normative sui dati biometrici applicabili alla tua azienda. Questa pagina non costituisce una consulenza legale: esamina la tua implementazione con i tuoi consulenti legali.

## Quando compare il passaggio

Una sessione mostra il passaggio di consenso quando si verificano entrambe le seguenti condizioni:

1. **Il workflow acquisisce un volto.** Un passaggio di Rilevamento della vitalità, Confronto facciale o Stima dell'età, il selfie con fotocamera frontale acquisito dal passaggio di Verifica dell'identità (a meno che tu non lo abbia disattivato), o la registrazione video dell'intera sessione.
2. **La modalità di consenso dell'applicazione lo richiede.** In modalità **Automatico**, si applica uno dei [trigger](#cosa-attiva-il-passaggio-in-modalità-automatico) indicati di seguito. In modalità **Sempre**, viene richiesto in ogni sessione che acquisisce un volto.

Il passaggio appare prima della prima acquisizione del volto. Quando solo il documento d'identità indica uno stato soggetto a tali normative, compare subito dopo l'acquisizione del documento e prima del selfie, e nessuna geometria facciale viene calcolata dalle immagini acquisite del documento fino a quando la persona non fornisce il consenso.

Didit verifica il requisito quando la persona apre il flusso e di nuovo a ogni passaggio finché non si applica. Una volta che una sessione richiede il consenso, continua a richiederlo.

### Modalità di consenso

Scegli la modalità nella console, in **Settings > Data and privacy > Biometric consent** dell'applicazione. Ogni modifica viene registrata nel [registro di audit](https://docs.didit.me/it/console/audit-logs.md).

| Modalità | Cosa succede |
| - | - |
| **Automatico** (predefinito, consigliato) | Mostra il passaggio solo quando si applica un [trigger](#cosa-attiva-il-passaggio-in-modalità-automatico). Tutti gli altri visualizzano l'informativa standard su una riga. |
| **Sempre** | Ogni persona il cui volto viene acquisito visualizza il passaggio, ovunque si trovi. La decisione registra `trigger: "forced"`. |
| **Mai** | Didit non mostra mai il passaggio. Dove la legge statale richiede il consenso, lo raccogli autonomamente prima del selfie e ne conservi la registrazione. |

### Cosa attiva il passaggio in modalità Automatico

Didit verifica queste regole nell'ordine e registra la prima applicabile in `biometric_consent.trigger`:

| Trigger | Quando si applica |
| - | - |
| `declared_state` | Hai dichiarato uno stato soggetto a tali normative durante la creazione della sessione: `user_state`, o un indirizzo negli Stati Uniti in `expected_details`. |
| `ip_state` | L'IP della persona è localizzato in Illinois, Texas o Colorado. |
| `ip_unknown` | La persona sembra trovarsi negli Stati Uniti (un IP statunitense, un documento statunitense o dettagli relativi agli Stati Uniti inviati da te) ma non è possibile determinare lo stato: l'IP si trova negli Stati Uniti senza uno stato specifico, oppure non può essere localizzato mentre i tuoi dettagli o il documento collocano la persona negli Stati Uniti. |
| `document_issuer` | Il documento d'identità letto durante l'acquisizione del documento è stato emesso da uno stato soggetto a tali normative. |

**VPN, proxy e reti di hosting non comportano una richiesta automatica.** Didit localizza l'IP della persona come qualsiasi altro: uno in Illinois, Texas o Colorado mostra il passaggio, uno situato altrove non mostra il passaggio. Il passaggio viene richiesto solo in presenza di prove evidenti di uno stato soggetto a tali normative (l'IP, lo stato che ha emesso il documento o uno stato da te dichiarato), oppure quando la persona viene collocata negli Stati Uniti senza uno stato specifico (`ip_unknown`). Una persona in uno stato soggetto a tali normative che utilizza una VPN con nodo di uscita altrove, con un documento non emesso da uno stato interessato, non riceverà la richiesta; utilizza la modalità **Sempre**, o invia `user_state`, se hai la necessità di coprire questo caso.

Altri due valori descrivono il modo in cui è stato definito il consenso di una sessione anziché il motivo per cui è stato richiesto:

| Trigger | Significato |
| - | - |
| `forced` | La modalità dell'applicazione è **Sempre**. |
| `customer_collected` | Hai inviato il consenso già raccolto in precedenza durante la creazione della sessione (vedi sotto). |

## Comunica a Didit ciò che sai già

[Create Session](https://docs.didit.me/it/sessions-api/create-session.md) accetta due campi opzionali per questo scopo:

| Campo | Cosa fa |
| - | - |
| `user_state` | Il luogo di residenza della persona, se noto: un codice di suddivisione ISO 3166-2 (`US-IL`, `ES-M`) oppure il codice o il nome di uno stato USA (`IL`, `Illinois`). Uno stato soggetto a tali normative mostra il passaggio con `trigger: "declared_state"`. Un valore non riconosciuto restituisce `400`. |
| `biometric_consent` | Il consenso che hai già raccolto: `{ "given_at": "<ISO 8601>", "text_version": "<your version id>" }`. Il flusso non lo richiederà nuovamente, e la decisione registrerà `status: "given"` con `trigger: "customer_collected"`. `given_at` non può essere una data futura. |

```json theme={null}
{
  "workflow_id": "YOUR_WORKFLOW_ID",
  "vendor_data": "user-42",
  "user_state": "US-IL",
  "biometric_consent": {
    "given_at": "2026-10-13T09:12:00Z",
    "text_version": "consent-v3"
  }
}
```

## Quali app mostrano il passaggio

Il passaggio richiede un'app in grado di visualizzarlo. Didit prende questa decisione a ogni richiesta effettuata dall'app:

| Dove si verifica la persona | Mostra il passaggio |
| - | - |
| Il flusso di verifica ospitato: un browser, il [Web SDK](https://docs.didit.me/it/integration/web-sdks/overview.md) o una WebView | Sì |
| [SDK nativo](https://docs.didit.me/it/integration/native-sdks/overview.md) 4.10.0 o successivo (iOS, Android e versioni React Native o Flutter che integrano la versione nativa 4.10.0 o successiva) | Sì |
| Un SDK nativo precedente a 4.10.0, o uno che non riporta la propria versione | No |

### SDK nativi precedenti a 4.10.0

Gli SDK nativi rilasciati prima della versione 4.10.0 non riconoscono il passaggio di consenso, quindi Didit non lo richiede mai. La verifica si svolge esattamente come prima: il selfie e le altre acquisizioni del volto vengono accettati ed elaborati, e la sessione raggiunge la propria decisione normalmente.

Didit non registra mai un consenso che non è stato prestato. Quando la sessione richiedeva il consenso e un SDK meno recente ha acquisito un volto, la decisione mostra:

```json theme={null}
"biometric_consent": {
  "required": true,
  "trigger": "ip_state",
  "status": "pending",
  "given_at": null,
  "reason": "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"
}
```

> [!WARNING]
>
> **Esegui l'upgrade all'SDK nativo 4.10.0 o successivo se verifichi persone in Illinois, Texas o Colorado all'interno di un'app nativa.** Fino a quando non lo farai, tali sessioni termineranno senza consenso esplicito, e raccoglierlo prima del selfie è tua responsabilità.

Se la persona prosegue la stessa sessione nel flusso ospitato (su un altro dispositivo o in una WebView aperta dall'app per alcuni tipi di rilevamento della vitalità), il flusso ospitato mostra il passaggio e non acquisisce alcun volto finché l'utente non risponde. Il consenso prestato in tale sede mantiene `reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"`, poiché i volti sono già stati acquisiti in precedenza senza di esso.

## Cosa vede la persona

Il passaggio informa la persona su cosa viene raccolto, perché, chi ne è in possesso e per quanto tempo viene conservato, e rimanda all'[Informativa sui dati biometrici](https://didit.me/legal/biometric-data-policy). Presenta un solo pulsante: **Accetto e continuo**, che resta disabilitato finché la persona non seleziona la casella di accettazione.

Didit conserva la risposta come prova: quando è stata fornita, la versione e l'hash del testo mostrato, la lingua, il passaggio del workflow, oltre a IP, posizione e user agent della richiesta. Una volta espresso il consenso, la risposta è definitiva.

## Quando la persona non acconsente

Il passaggio non dispone di un pulsante di rifiuto. Una persona che non desidera acconsentire abbandona il flusso: non viene acquisito alcun volto e la sessione termina come `Abandoned`, proprio come qualsiasi altra sessione non completata (consulta [Stati di verifica](https://docs.didit.me/it/integration/verification-statuses.md)). Offrile una modalità di verifica alternativa.

### Consenso rifiutato nell'API

La decisione conserva uno stato `declined` e il motivo `BIOMETRIC_CONSENT_DECLINED` come valori API. Attualmente nessuna schermata di Didit offre l'opzione di rifiuto, pertanto il flusso ospitato e gli SDK nativi non ne registrano alcuno. Una sessione che registra un rifiuto:

* Termina come `Declined` e il webhook `status.updated` si attiva come per qualsiasi altro rifiuto.
* Riporta `biometric_consent.status` come `declined`, `reason` e `decline_reason` come `BIOMETRIC_CONSENT_DECLINED`, e `declined_at` con l'orario.
* Non acquisisce alcun volto dopo il rifiuto. Ogni immagine e modello biometrico del volto già presente nella sessione viene eliminato: i selfie, il selfie scattato con la fotocamera frontale durante l'acquisizione del documento d'identità, il ritaglio del volto dalla foto del documento, i video del rilevamento della vitalità e i video dell'intera sessione. `face_data_deleted_at` registra la data e l'ora dell'eliminazione. La decisione non li restituisce più e l'eliminazione è irreversibile.
* Mantiene le immagini dei documenti e i dati estratti da essi: il rifiuto non ha alcun impatto su di essi.

## Nella decisione e nei webhook

Ogni decisione di Verifica degli utenti include un oggetto `biometric_consent`, in [Recupera sessione](https://docs.didit.me/it/sessions-api/retrieve-session.md) e nella `decision` dei [webhook della sessione](https://docs.didit.me/it/integration/webhooks.md). È `null` quando la sessione non è mai stata valutata, ad esempio in un workflow senza acquisizione del volto.

| `status` | Significato |
| - | - |
| `not_required` | La sessione non richiedeva il consenso. |
| `pending` | Il consenso è obbligatorio e non è stato prestato. Leggi `reason` per distinguere un SDK meno recente da una persona che non ha ancora risposto. |
| `given` | La persona ha acconsentito nel flusso, oppure hai inviato `biometric_consent` al momento della creazione. |
| `declined` | È stato registrato un rifiuto e la sessione è terminata come `Declined`. Attualmente nessuna schermata di Didit offre l'opzione di rifiuto (vedi [sopra](#consenso-rifiutato-nell’api)). |

| `reason` | Significato |
| - | - |
| `BIOMETRIC_CONSENT_UNSUPPORTED_SDK` | Un SDK nativo precedente a 4.10.0, o uno che non ha segnalato la propria versione, ha acquisito un volto senza mostrare il passaggio. |
| `BIOMETRIC_CONSENT_DECLINED` | È stato registrato un rifiuto. Attualmente nessuna schermata di Didit offre l'opzione di rifiuto. |
| `null` | Nulla da segnalare. Sempre `null` quando la sessione non richiedeva il consenso. |

Una sessione in cui la persona ha acconsentito nel flusso ospitato:

```json theme={null}
"biometric_consent": {
  "required": true,
  "trigger": "declared_state",
  "status": "given",
  "given_at": "2026-10-13T18:31:07.412000Z",
  "declined_at": null,
  "text_version": "bio-consent-2026-10-12",
  "locale": "en",
  "policy_url": "https://didit.me/legal/biometric-data-policy",
  "step": "LIVENESS",
  "ip_address": "198.51.100.23",
  "ip_country_code": "ES",
  "detected_ip_address": "198.51.100.23",
  "detected_country_code": "ES",
  "jurisdictions": ["IL"],
  "retention_months": 36,
  "reason": null,
  "decline_reason": null,
  "face_data_deleted_at": null
}
```

L'esempio è abbreviato. Tutti i campi, con il rispettivo tipo, sono descritti in [Modelli di dati](https://docs.didit.me/it/reference/data-models.md#consenso-biometrico).

## Correlati

* [Crea sessione](https://docs.didit.me/it/sessions-api/create-session.md): `user_state` e `biometric_consent`.
* [Recupera sessione](https://docs.didit.me/it/sessions-api/retrieve-session.md): la decisione che include `biometric_consent`.
* [SDK nativi](https://docs.didit.me/it/integration/native-sdks/overview.md): versioni e procedure di upgrade.
* [Sicurezza e compliance](https://docs.didit.me/it/getting-started/security-compliance.md): le tue responsabilità nei flussi di verifica.


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