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

# Верификация банка: запасные способы без банка

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

Bank Verification никогда не заводит пользователя в тупик. Пока шаг ожидает действий, человек всегда может выбрать **Continue without your bank**, и шаг отображает эту опцию, как только ни один из способов не подходит для его страны или банка. Затем сессия следует выбранному вами исходу для этого случая, по умолчанию это проверка. Когда неудачная попытка исчерпывает последнюю попытку из всех доступных способов, включая загрузку выписки, шаг не ждёт: он завершается самостоятельно и выполняет `bank_attempts_exhausted_action` (по умолчанию отклонение), если только более ранняя попытка уже не привела к окончательному решению, например несовпадению имени. В таком случае в силе остаётся это решение.

На этой странице описаны альтернативные способы верификации, доступные для каждой страны, случаи, когда пользователь видит **Continue without your bank**, правила принятия решений в каждом случае и то, как интерпретировать это в результате.

## Способы верификации

| Способ верификации | `method` | Где предлагается |
| - | - | - |
| Вход в банк | `open_banking` | Если для страны доступен маршрут. |
| Проверка счёта | `account_lookup` | Если для страны доступен маршрут. |
| Загрузка выписки | `statement` | Любая страна, если этот способ включён в шаге (`bank_statement_enabled`). |
| Микродепозиты | `microdeposits` | Только там, где маршрут отправляет депозиты, после платной попытки входа в банк или проверки счёта в той же сессии (`bank_microdeposits_enabled`). |
| Continue without your bank | `none` | Всегда. Его нельзя отключить. |

Пользователь начинает со входа в банк или проверки счёта в порядке, настроенном для его страны: см. [Выбор способов для каждой страны](https://docs.didit.me/ru/core-technology/bank-verification/verification-methods.md#выбор-способов-для-каждой-страны). Загрузка выписки и микродепозиты служат резервными вариантами после этих двух. **Continue without your bank** идёт последним.

Способ, который недоступен в стране, никогда не предлагается пользователю в ней. В консоли в разделе **Страны и способы** он отображается как **Недоступно** для этой страны.

### Страна, для которой нет банковского маршрута

Страна, для которой нет маршрута ни для входа в банк, ни для проверки счёта, остаётся в шаге. Пользователи из этой страны загружают выписку, если шаг предлагает такой вариант, либо продолжают без банка.

При сохранении такая страна остаётся, если параметр `methods` опущен или установлен в `null`. В её `methods` нельзя указать способ, так как маршрут там недоступен: такое сохранение будет отклонено с ошибкой, например `Account check is not available in VNM.` Пустой список также отклоняется, как и для любой включённой страны, с сообщением `Choose a method: bank sign-in, account check, or both.` Если ваш контракт предусматривает индивидуальные цены и не включает загрузку выписки, попытка сохранения с предложением выписки без предшествующей попытки через банк также отклонит такую страну.

```json theme={null}
{
  "bank_statement_enabled": true,
  "bank_countries": {
    "GBR": { "enabled": true, "institutions": "all" },
    "VNM": { "enabled": true, "institutions": "all" }
  }
}
```

Здесь Вьетнам выступает в качестве примера страны, для которой нет банковского маршрута. Для неё не задан параметр `methods`, поэтому сохранение проходит успешно, а пользователи видят загрузку выписки и **Continue without your bank**.

### Загрузка выписки

При загрузке выписки требуется банковская выписка за последние 3 месяца, в которой указаны имя человека, его банк и номер счёта. Didit считывает документ, проверяет его на наличие правок и сверяет имя владельца с именем, полученным от банка, тем же способом, что и при банковской проверке.

При включённом параметре `bank_statement_enabled` шаг предлагает этот вариант в двух случаях:

* **После платной попытки:** как только в той же сессии была списана плата за вход в банк или проверку счёта, загрузка выписки становится резервным способом и предоставляется без дополнительной платы.
* **Без предшествующей попытки через банк:** в любой стране, включая те, для которых нет банковских маршрутов. Для этого требуется параметр `bank_statement_standalone_enabled`, который включён по умолчанию. Отключите его, чтобы предлагать загрузку выписки только после платной попытки.

Загрузка выписки и микродепозиты расходуют по одной из попыток `bank_max_attempts` шага, тех же самых, что используются для входа в банк. Как только пользователь исчерпает их все, ни один из этих способов больше не будет предложен, даже после платной попытки. Для проверки счёта действует отдельный параметр `bank_account_check_max_attempts`. Поэтому там, где это единственный способ, пользователь, израсходовавший все попытки проверки счёта, всё ещё может загрузить выписку, если шаг её предлагает. Когда неудачная попытка исчерпывает последнюю попытку из всех способов, всё ещё доступных пользователю, включая загрузку выписки, шаг завершается автоматически: пользователю не предлагается продолжить, а в результате продолжение не фиксируется. Сессия следует правилу `bank_attempts_exhausted_action`, если только более ранняя попытка уже не привела к решению (например, несовпадению имени), которое остаётся в силе. Чтобы оставить возможность использовать резервный способ после неудачного входа в банк, установите `bank_max_attempts` на `2` или больше.

## Когда человек видит «Продолжить без банка»

`bank_continue_without_bank` определяет, когда шаг показывает кнопку **Продолжить без банка**:

| Значение | Шаг показывает её |
| - | - |
| `when_needed` (по умолчанию) | Когда ни один метод не подходит для страны или банка пользователя, когда связь с банком сейчас недоступна и никакой другой метод не позволяет пройти проверку, либо когда пользователь указывает, что у него нет доступа к онлайн-банкингу или его банка нет в списке. |
| `from_start` | В том числе на самом первом экране. |

Ни одно из значений не отключает эту опцию: человек всегда может продолжить. В консоли это настраивается на шаге Bank Verification в разделе **Если человек не может пройти проверку** с помощью параметра **Показывать «Продолжить без банка»**: **Если остальное не сработало** или **С самого начала**.

```json theme={null}
{
  "bank_continue_without_bank": "when_needed"
}
```

### Что видит человек

* **Нет доступного маршрута в его стране:** например, «Мы пока не можем подключиться к банкам во Вьетнаме» с возможностью загрузить выписку в разделе **Другие способы подтверждения** и кнопкой **Продолжить без банка**.
* **Банк, который нельзя использовать здесь:** «Этот банк нельзя использовать здесь». Человек может ввести реквизиты своего счёта (если в этой стране доступна проверка счёта), загрузить выписку, выбрать другой банк или продолжить без банка.
* **Нет доступа к онлайн-банкингу или банк отсутствует в списке:** «Подтвердите ваш счёт другим способом» с вариантами, доступными для его страны, и кнопкой **Продолжить без банка**.
* **Сейчас не удаётся связаться с банком:** человек может повторить попытку. На экране также появляется кнопка **Продолжить без банка**, если альтернативный метод (вход в банк или проверка счёта) не может помочь: он не поддерживается в стране, закончились попытки либо при последней попытке также не удалось связаться с банком.
* **После продолжения:** «Спасибо, вы можете продолжить». Пользователю никогда не показывается сообщение об ошибке, и он переходит к следующему шагу вашего сценария.

## Выберите исход

Когда человек продолжает без банка, Didit определяет причину исходя из того, что произошло на шаге. Причина никогда не берётся с устройства пользователя. Каждая причина, фиксируемая как `continuation.reason`, следует собственной настройке исхода:

* `no_route`: ни вход в банк, ни проверка счёта не поддерживают эту страну. Определяется параметром `bank_unsupported_action`, по умолчанию `REVIEW`, с кодом причины `NOT_COVERED`.
* `institution_unsupported`: выбранный банк нельзя использовать на этом шаге. Определяется параметром `bank_unsupported_action`, по умолчанию `REVIEW`, с кодом причины `NOT_COVERED`.
* `attempts_exhausted`: все попытки уже были исчерпаны и ни одна не оставалась в процессе на момент продолжения. Определяется параметром `bank_attempts_exhausted_action`, по умолчанию `DECLINE`.
* `person_choice`: способ подтверждения был доступен, но человек решил продолжить без него. Сюда же относится случай, когда с банком не удалось связаться прямо сейчас: банк поддерживается, поэтому причиной считается выбор самого пользователя. Определяется параметром `bank_skipped_action`, по умолчанию `REVIEW`, с кодом причины `SKIPPED`.

`bank_skipped_action` и `bank_attempts_exhausted_action` принимают значения `REVIEW` или `DECLINE`. `bank_unsupported_action` также принимает `NO_ACTION`, что одобряет шаг и при этом сохраняет `NOT_COVERED`.

В консоли это строки **Банк или страна не поддерживаются**, **Продолжено без банка** и **Попытки исчерпаны** на вкладке шага **Исходы**.

```json theme={null}
{
  "bank_continue_without_bank": "when_needed",
  "bank_unsupported_action": "REVIEW",
  "bank_skipped_action": "REVIEW",
  "bank_attempts_exhausted_action": "DECLINE"
}
```

> [!NOTE]
>
> Продолжение без банка никогда не отменяет вердикт, уже вынесенный по конкретной попытке. Если попытка уже была оценена (например, банк или выписка вернули данные владельца, которые не совпадают, при этом у человека ещё оставались попытки, либо близкое совпадение не было подтверждено), шаг сохраняет этот вердикт и его коды причин. В этом случае настройки исходов из списка выше не применяются, а коды `NOT_COVERED` или `SKIPPED` не добавляются. В результате по-прежнему фиксируется, что человек продолжил процесс: см. [Как это отображается в результате](#просмотр-в-результатах).

## Просмотр в результатах

### Решение и webhook

Элемент этого шага в `bank_verifications[]` в [решении по сессии](https://docs.didit.me/ru/sessions-api/retrieve-session.md#банковская-верификация) и в объекте `decision` [событий webhook `status.updated`](https://docs.didit.me/ru/integration/webhooks#массивы-v3-важно) указывает, что пользователь продолжил без банка:

* `continued_without_bank` имеет значение `true`: пользователь вышел из шага с помощью **Continue without your bank**.
* `method` имеет значение `none`, если до того, как пользователь продолжил, ни одна попытка не была оценена. После оценённой попытки (например, если владелец не совпадает) `method` сохраняет метод этой попытки, а её вердикт остаётся в силе.
* `continuation` указывает, как именно пользователь продолжил:
  * `reason`: `no_route`, `institution_unsupported`, `attempts_exhausted` или `person_choice`.
  * `country`: страна, в которой пользователь проходил верификацию (в формате ISO 3166-1 alpha-3), или `null`, если он продолжил до выбора страны.
  * `offered`: другие способы верификации, предложенные для этой страны, в порядке их предложения: `statement`, затем `microdeposits`. Пусто, если ничего не предлагалось.
  * `institution_id` и `institution_name`: для `institution_unsupported` банк, которым пользователь не смог воспользоваться: банк, который он выбрал, или банк, на котором завершилась его последняя попытка. Didit берёт оба значения из собственного списка банков, а не с устройства пользователя, поэтому для банка, отсутствующего в этом списке, оба поля останутся `null`. Для любой другой причины оба поля равны `null`.
  * `continued_at`: время, когда пользователь продолжил.
* `reason_codes` содержит `NOT_COVERED` или `SKIPPED`, как описано в разделе [Выбор исхода](#выберите-исход), если решение по шагу было принято на основании продолжения. После оценённой попытки поле сохраняет коды причин этой попытки.
* `not_covered` имеет значение `true` для `no_route` и `institution_unsupported`.

```json theme={null}
{
  "bank_verifications": [
    {
      "node_id": "feature_bank_verification",
      "status": "In Review",
      "method": "none",
      "continued_without_bank": true,
      "continuation": {
        "reason": "institution_unsupported",
        "country": "ESP",
        "offered": ["statement"],
        "institution_id": "example_bank_es",
        "institution_name": "Example Bank",
        "continued_at": "2026-11-03T08:15:41.512870+00:00"
      },
      "not_covered": true,
      "ownership": null,
      "reason_codes": ["NOT_COVERED"]
    }
  ]
}
```

В примере показаны только поля, рассматриваемые на этой странице. Все поля описаны в схеме `BankVerificationResult` в [справочнике по API](https://docs.didit.me/ru/sessions-api/retrieve-session.md).

Если ваш сценарий сужает возвращаемые данные, поля `continued_without_bank` и `continuation.reason` всё равно возвращаются, поэтому вы по-прежнему сможете отличить `no_route` от `institution_unsupported`, для которых возвращается общий код `NOT_COVERED`. Все остальные ключи `continuation` в этом случае имеют значение `null`: страна, банк, предложенные варианты и время. Сам объект `continuation` равен `null`, если пользователь не продолжил. Поле `method` в этом случае также не возвращается, поэтому для проверки того, что пользователь продолжил, используйте `continued_without_bank`, а не `method`.

### Правила сценария

Ветви и правила пользовательских статусов могут считывать:

* `bank.continued_without_bank`: `true` или `false`.
* `bank.continue_reason`: `no_route`, `institution_unsupported`, `attempts_exhausted` или `person_choice`.
* `bank.method`: `none`, если пользователь продолжил без банка до оценки какой-либо попытки. После оценённой попытки метод этой попытки.

### Отчёт о сессии

Если пользователь продолжил без банка до оценки какой-либо попытки, в строке **Метод верификации** PDF-отчёта о сессии указывается **Продолжено без банка**. После оценённой попытки в ней указывается метод этой попытки.

## Цены

* За переход по опции **Continue without your bank** плата не взимается. Попытки, предпринятые пользователем до этого, тарифицируются в обычном порядке.
* **Загрузка выписки без предшествующей тарифицируемой попытки через банк** стоит \$0.20 за каждую выписку, которую Didit распознаёт и оценивает. Она тарифицируется отдельной строкой использования, **Bank verification - statement upload** (`bank_statement_upload`), и к ней применяется ставка по вашему договору или специальная цена, как и к любому дополнительному модулю. Если в вашем договоре установлены индивидуальные цены и эта услуга в него не включена, шаг не будет её предлагать.
* **Загрузка выписки или микродепозиты после оплаченного входа в банк или проверки счёта** в рамках той же сессии предоставляются без дополнительной платы.

## Узлы, сохранённые до появления Continue without your bank

Параметр `bank_allow_skip` устарел и больше не используется. Узел, сохранённый с этим параметром, теперь работает со значением, которое он подразумевал:

| `bank_allow_skip` | Узел работает с |
| - | - |
| `true` | `bank_continue_without_bank: "from_start"` |
| `false` или не задано | `bank_continue_without_bank: "when_needed"` |

Ранее узел, в котором пропуск был запрещён, не оставлял пользователю возможности продолжить, если ничего для него не сработало. Теперь в таких случаях отображается **Continue without your bank**, а решение по сессии принимается параметрами `bank_unsupported_action`, `bank_attempts_exhausted_action` или `bank_skipped_action`.

В течение одного релиза при сохранении запроса с `bank_allow_skip`, но без `bank_continue_without_bank`, режим по-прежнему определяется на его основе. Каждое сохранение записывает `bank_allow_skip` обратно: `true` для `from_start`, `false` для `when_needed`. В новых интеграциях используйте `bank_continue_without_bank`.

## Тестирование в песочнице

В приложении песочницы плата не взимается, а загрузка выписки и микродепозиты не требуют предварительной попытки через банк. Установите для `bank_continue_without_bank` значение `from_start`, чтобы увидеть **Continue without your bank** на первом экране, и выберите эту опцию для тестирования `bank_skipped_action`. Подробнее о работе приложений в песочнице см. в разделе [Тестирование в песочнице](https://docs.didit.me/ru/integration/sandbox-testing.md).

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

* [Методы верификации банка](https://docs.didit.me/ru/core-technology/bank-verification/verification-methods.md): вход через банк и проверка счёта по странам.
* [Проверка счёта](https://docs.didit.me/ru/core-technology/bank-verification/account-check.md): форматы счетов, результаты и значения для песочницы.
* [Ключи конфигурации верификации банка](https://docs.didit.me/ru/management-api/workflows/feature-configs.md#верификация-банка): все ключи шага.


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