When the step appears
A session shows the consent step when both of these are true:- The workflow captures a face. A Liveness, Face Match or Age Estimation step, the front-camera selfie the ID Verification step takes (unless you turned it off), or full-session video recording.
- The application’s consent mode asks for it. In Auto mode, one of the triggers below applies. In Always mode, every session that captures a face asks.
Consent modes
Choose the mode in the console, under the application’s Settings > Data and privacy > Biometric consent. Each change is recorded in the audit log.What triggers the step in Auto mode
Didit checks these rules in order and records the first one that applies inbiometric_consent.trigger:
VPNs, proxies and hosting networks do not ask on their own. Didit locates the person’s IP like any other: one in Illinois, Texas or Colorado shows the step, one anywhere else does not. The step is asked only on clear evidence of a covered state (the IP, the state that issued the ID, or a state you declared), or when the person is placed in the US without a state (
ip_unknown). A person in a covered state behind a VPN that exits elsewhere, with an ID no covered state issued, is not asked; use Always mode, or send user_state, if you need to cover that case.
Two more values describe how a session’s consent was settled rather than why it was asked:
Tell Didit what you already know
Create Session takes two optional fields for this:Which apps show the step
The step needs an app that can display it. Didit decides this on every request the app makes:Native SDKs below 4.10.0
Native SDKs released before 4.10.0 do not know the consent step, so Didit never asks them for it. The verification runs exactly as it did before: the selfie and the other face captures are accepted and processed, and the session reaches its decision as usual. Didit never records consent that was not given. When the session required consent and an older SDK captured a face, the decision shows:reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK", because faces were already captured without it.
What the person sees
The step tells the person what is collected, why, who has it and how long it is kept, and links to the Biometric data policy. It has one button: Agree and continue, which stays disabled until the person ticks the agreement box. Didit keeps the answer as evidence: when it was given, the version and hash of the text shown, the language, the workflow step, and the IP, location and user agent of the request. Once the person agrees, the answer is final.When the person does not agree
The step has no decline button. A person who does not want to agree leaves the flow: no face is captured, and the session ends asAbandoned like any other session the person does not finish (see Verification statuses). Offer them another way to verify.
Declined consent in the API
The decision keeps adeclined status and the BIOMETRIC_CONSENT_DECLINED reason as API values. No Didit screen offers a decline today, so the hosted flow and the native SDKs do not record one. A session that records a decline:
- Ends as
Declined, and thestatus.updatedwebhook fires as for any other decline. - Shows
biometric_consent.statusasdeclined,reasonanddecline_reasonasBIOMETRIC_CONSENT_DECLINED, anddeclined_atwith the time. - Captures no face after the decline. Every face image and face template the session already holds is deleted: selfies, the ID capture’s front-camera selfie, the face crop of the document portrait, liveness and full-session videos.
face_data_deleted_atrecords when. The decision no longer returns them, and the deletion is irreversible. - Keeps the document images and the data read from them: the decline does not affect them.
In the decision and webhooks
Every User Verification decision carries abiometric_consent object, in Retrieve Session and in the decision of session webhooks. It is null when the session was never evaluated, for example a workflow without a face capture.
A session where the person agreed in the hosted flow:
Related
- Create Session:
user_stateandbiometric_consent. - Retrieve Session: the decision that carries
biometric_consent. - Native SDKs: versions and upgrade steps.
- Security and compliance: your responsibilities in verification flows.