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

# Биометрическое согласие для BIPA, CUBI и Колорадо

> Didit запрашивает явное биометрическое согласие перед селфи для Иллинойса, Техаса и Колорадо: триггеры, нативный SDK 4.10.0 и поля решений.

Законы Иллинойса (BIPA), Техаса (CUBI) и Колорадо требуют уведомления и явного согласия перед тем, как компания сможет собирать геометрию лица по селфи или по фотографии в документе. Didit может показывать шаг получения согласия перед первой фиксацией лица людям, подпадающим под действие этих законов, и сохраняет ответ в сессии в качестве подтверждения.

На этой странице объясняется, когда появляется этот шаг, какие приложения могут его показывать и как ответ поступает в ваше решение и webhook.

> [!WARNING]
>
> Didit показывает этот шаг и фиксирует ответ. Вы сами определяете, соответствует ли ваш сценарий взаимодействия с пользователем применимым к вашей компании требованиям биометрического законодательства. Эта страница не является юридической консультацией: согласуйте вашу реализацию с юристом.

## Когда появляется шаг

Сессия показывает шаг согласия, если выполняются оба условия:

1. **Сценарий фиксирует лицо.** Шаг Проверки живости, Сравнения лиц или Оценки возраста, селфи на фронтальную камеру в рамках шага Верификации личности (если вы его не отключили) либо видеозапись всей сессии.
2. **Режим согласия в приложении запрашивает его.** В режиме **Авто** срабатывает один из [триггеров](#что-активирует-шаг-в-режиме-авто) ниже. В режиме **Всегда** запрос выполняется для каждой сессии, где фиксируется лицо.

Шаг появляется перед первой фиксацией лица. Если подпадающий под действие закона штат указан только в документе, удостоверяющем личность, шаг появляется сразу после сканирования документа и перед селфи, при этом геометрия лица по изображениям документа не вычисляется до тех пор, пока человек не даст согласие.

Didit проверяет это требование, когда человек открывает процесс, и повторно на каждом шаге, пока оно не будет применено. Если для сессии потребовалось согласие, это требование сохраняется.

### Режимы согласия

Выберите режим в консоли в разделе приложения **Settings > Data and privacy > Biometric consent**. Каждое изменение фиксируется в [журнале аудита](https://docs.didit.me/ru/console/audit-logs.md).

| Режим | Что происходит |
| - | - |
| **Авто** (по умолчанию, рекомендуется) | Показывает шаг только в тех случаях, когда срабатывает [триггер](#что-активирует-шаг-в-режиме-авто). Все остальные видят стандартное уведомление в одну строку. |
| **Всегда** | Шаг показывается каждому человеку, чьё лицо фиксируется, независимо от его местонахождения. В решении записывается `trigger: "forced"`. |
| **Никогда** | Didit никогда не показывает этот шаг. Если законодательство штата требует согласия, вы собираете его самостоятельно до селфи и сохраняете запись. |

### Что активирует шаг в режиме Авто

Didit проверяет эти правила по порядку и записывает первое сработавшее в `biometric_consent.trigger`:

| Триггер | Когда срабатывает |
| - | - |
| `declared_state` | Вы указали подпадающий под действие закона штат при создании сессии: `user_state` или адрес в США в `expected_details`. |
| `ip_state` | IP-адрес человека находится в Иллинойсе, Техасе или Колорадо. |
| `ip_unknown` | Судя по данным, человек находится в США (IP-адрес в США, документ США или переданные вами данные, указывающие на США), но определить штат невозможно: IP-адрес находится в США без указания штата либо его не удаётся определить, хотя ваши данные или документ указывают на США. |
| `document_issuer` | Документ, удостоверяющий личность, распознанный при сканировании документа, был выдан подпадающим под действие закона штатом. |

**VPN, прокси и сети хостинга сами по себе не вызывают показ шага.** Didit определяет IP-адрес человека так же, как и в любом другом случае: адрес в Иллинойсе, Техасе или Колорадо запускает показ шага, а в любом другом месте не запускает. Запрос шага происходит только при наличии явных свидетельств принадлежности к соответствующему штату (IP-адрес, штат выдачи документа или объявленный вами штат) либо когда человек находится в США без возможности определить штат (`ip_unknown`). Человек, находящийся в подпадающем под действие закона штате, но использующий VPN с выходом в другой локации, и имеющий документ, выданный не одним из подпадающих под действие закона штатов, не увидит этот шаг; используйте режим **Всегда** или передавайте `user_state`, если вам необходимо покрыть этот случай.

Ещё два значения описывают то, как было получено согласие для сессии, а не причину его запроса:

| Триггер | Значение |
| - | - |
| `forced` | В приложении установлен режим **Всегда**. |
| `customer_collected` | Вы передали уже собранное вами согласие при создании сессии (см. ниже). |

## Передайте Didit уже известную информацию

[Create Session](https://docs.didit.me/ru/sessions-api/create-session.md) принимает для этого два необязательных поля:

| Поле | Назначение |
| - | - |
| `user_state` | Место проживания человека, если оно вам известно: код подразделения ISO 3166-2 (`US-IL`, `ES-M`) либо код или название штата США (`IL`, `Illinois`). Если штат подпадает под действие закона, шаг будет показан с `trigger: "declared_state"`. Неизвестное значение возвращает `400`. |
| `biometric_consent` | Ранее полученное вами согласие: `{ "given_at": "<ISO 8601>", "text_version": "<your version id>" }`. В этом случае процесс не будет запрашивать согласие повторно, а в решении запишется `status: "given"` с `trigger: "customer_collected"`. Значение `given_at` не может быть в будущем. |

```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"
  }
}
```

## Какие приложения показывают этот шаг

Для отображения шага требуется приложение, поддерживающее его показ. Didit определяет это при каждом запросе от приложения:

| Где пользователь проходит верификацию | Показывает ли шаг |
| - | - |
| Размещённый процесс верификации: браузер, [Web SDK](https://docs.didit.me/ru/integration/web-sdks/overview.md) или WebView | Да |
| [Native SDK](https://docs.didit.me/ru/integration/native-sdks/overview.md) версии 4.10.0 или новее (iOS, Android, а также релизы React Native или Flutter, включающие нативную версию 4.10.0 или новее) | Да |
| Нативный SDK версии ниже 4.10.0 или SDK, не передающий свою версию | Нет |

### Нативные SDK ниже версии 4.10.0

Нативные SDK, выпущенные до версии 4.10.0, не поддерживают шаг согласия, поэтому Didit никогда не запрашивает его у них. Верификация проходит точно так же, как и раньше: селфи и другие снимки лица принимаются и обрабатываются, а сессия завершается вынесением решения в обычном порядке.

Didit никогда не фиксирует согласие, которое не было предоставлено. Если сессия требовала согласия, но более старый SDK выполнил захват лица, в решении отображается:

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

> [!WARNING]
>
> **Обновитесь до нативного SDK 4.10.0 или новее, если вы верифицируете пользователей в Иллинойсе, Техасе или Колорадо в нативном приложении.** До тех пор такие сессии будут завершаться без явного согласия, и получение его перед съёмкой селфи остаётся вашей обязанностью.

Если пользователь продолжает ту же сессию в размещённом процессе (на другом устройстве или в WebView, которое приложение открывает для некоторых типов проверки живости), размещённый процесс показывает этот шаг и не выполняет захват лица до получения ответа. При этом для данного согласия сохраняется значение `reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"`, поскольку снимки лица уже были получены без него.

## Что видит пользователь

Шаг сообщает пользователю, какие данные собираются, зачем, кто ими располагает и как долго они хранятся, а также содержит ссылку на [Политику в отношении биометрических данных](https://didit.me/legal/biometric-data-policy). На нём есть одна кнопка: **Согласиться и продолжить**, которая остаётся неактивной до тех пор, пока пользователь не установит флажок согласия.

Didit сохраняет ответ в качестве доказательства: время предоставления, версию и хеш показанного текста, язык, шаг сценария, а также IP, геолокацию и User-Agent запроса. Как только пользователь даёт согласие, ответ становится окончательным.

## Когда пользователь не соглашается

На этом шаге нет кнопки отклонения. Пользователь, который не хочет давать согласие, покидает процесс: захват лица не выполняется, а сессия завершается в статусе `Abandoned`, как и любая другая незавершённая сессия (см. [Статусы верификации](https://docs.didit.me/ru/integration/verification-statuses.md)). Предложите пользователю альтернативный способ верификации.

### Отклонённое согласие в API

В решении предусмотрены статус `declined` и причина `BIOMETRIC_CONSENT_DECLINED` в качестве значений API. На данный момент ни один экран Didit не предлагает возможность отклонения, поэтому ни размещённый процесс, ни нативные SDK его не фиксируют. Сессия, в которой зафиксирован отказ:

* Завершается со статусом `Declined`, при этом отправляется webhook `status.updated`, как и при любом другом отклонении.
* Показывает `biometric_consent.status` со значением `declined`, `reason` и `decline_reason` со значением `BIOMETRIC_CONSENT_DECLINED`, а также время в `declined_at`.
* Не выполняет захват лица после отклонения. Все изображения и биометрические шаблоны лица, уже содержащиеся в сессии, удаляются: селфи, снимок с фронтальной камеры при захвате документа, вырезанное фото лица из документа, видео проверки живости и видео всей сессии. Поле `face_data_deleted_at` фиксирует время удаления. Решение больше не возвращает эти данные, а само удаление необратимо.
* Сохраняет изображения документов и считанные из них данные: отклонение на них не влияет.

## В решении и событиях webhook

Каждое решение в рамках Проверки пользователей содержит объект `biometric_consent`, в [Retrieve Session](https://docs.didit.me/ru/sessions-api/retrieve-session.md) и в `decision` в [webhooks сессии](https://docs.didit.me/ru/integration/webhooks.md). Он равен `null`, если сессия не оценивалась, например в сценарии без захвата лица.

| `status` | Значение |
| - | - |
| `not_required` | Для сессии согласие не требовалось. |
| `pending` | Согласие требуется и ещё не получено. Проверьте `reason`, чтобы отличить использование устаревшего SDK от случая, когда пользователь ещё не ответил. |
| `given` | Пользователь выразил согласие в процессе верификации, или вы передали `biometric_consent` при создании. |
| `declined` | Зафиксирован отказ, и сессия завершена со статусом `Declined`. На данный момент ни один экран Didit не предлагает вариант отказа (см. [выше](#отклонённое-согласие-в-api)). |

| `reason` | Значение |
| - | - |
| `BIOMETRIC_CONSENT_UNSUPPORTED_SDK` | Нативный SDK версии ниже 4.10.0 или SDK, не передавший свою версию, выполнил захват лица без прохождения этого шага. |
| `BIOMETRIC_CONSENT_DECLINED` | Зафиксирован отказ. На данный момент ни один экран Didit не предлагает вариант отказа. |
| `null` | Дополнительных пояснений нет. Всегда `null`, если согласие для сессии не требовалось. |

Сессия, в которой пользователь дал согласие в размещённом процессе:

```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
}
```

Пример сокращён. Все поля и их типы приведены в разделе [Модели данных](https://docs.didit.me/ru/reference/data-models.md#согласие-на-биометрические-данные).

## Связанные разделы

* [Create Session](https://docs.didit.me/ru/sessions-api/create-session.md): параметры `user_state` и `biometric_consent`.
* [Retrieve Session](https://docs.didit.me/ru/sessions-api/retrieve-session.md): решение, содержащее `biometric_consent`.
* [Нативные SDK](https://docs.didit.me/ru/integration/native-sdks/overview.md): версии и порядок обновления.
* [Безопасность и комплаенс](https://docs.didit.me/ru/getting-started/security-compliance.md): ваши обязанности в процессах верификации.


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