> ## 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 подтверждает владельца банковского счёта по введённым реквизитам без входа в банк: IBAN, sort code, CLABE, CBU, IFSC и другие.

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

Это один из двух [способов верификации банковского счёта](https://docs.didit.me/ru/core-technology/bank-verification/verification-methods.md) наряду со входом через банк, и значение его метода: `account_lookup`. Загрузка выписки и микродепозиты остаются резервными вариантами для обоих способов, и пользователь всегда может [продолжить без банка](https://docs.didit.me/ru/core-technology/bank-verification/fallbacks.md). Чтобы проверить счёт из вашего бэкенда без сессии, например перед выплатой, используйте [API проверки счёта](https://docs.didit.me/ru/standalone-apis/bank-account-check.md).

> [!NOTE]
>
> Верификация банковского счёта подтверждает владельца счёта на основе данных личности, установленных **другим шагом**, поэтому сама по себе она не является подтверждением личности. Разместите перед этим шагом Верификацию личности, Проверку по базам данных, анкету или `expected_details`. Пользователь никогда не вводит имя для проверки: Didit всегда сравнивает имя, уже верифицированное в сессии.

## Как это работает

**1. Пользователь выбирает свою страну**

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

**2. Пользователь вводит реквизиты счёта**

Например, IBAN, сорт-код и номер счёта или CLABE. Процесс верификации формирует форму на основе данных, возвращаемых API для этой страны, поэтому добавление новой страны со стороны Didit не потребует изменений с вашей стороны.

**3. Didit сначала проверяет формат**

До списания средств Didit проверяет каждое значение: его длину, символы, контрольные цифры и, для IBAN, принадлежность выбранной стране. Некорректное значение отклоняется с указанием поля, требующего исправления. Пользователь исправляет его на месте, и попытка не расходуется.

**4. Банк проверяет имя на счёте**

Didit выполняет одну проверку по имени, верифицированному в сессии. Любые другие данные, отправленные клиентом, игнорируются.

**5. Шаг выносит решение**

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

## Где доступна проверка

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

В поддерживаемой стране доступность проверки для пользователя определяется методами шага:

* **Порядок методов шага.** `bank_method_order` задаёт, какие методы предлагаются во всех странах и какой из них идёт первым. По умолчанию `["open_banking", "account_lookup"]` начинает со входа через банк и предлагает проверку счёта в качестве резервного варианта.
* **Собственный порядок для страны.** Параметр `methods` для страны в `bank_countries` переопределяет порядок шага для этой страны, например `["account_lookup"]` только для проверки счёта или `["account_lookup", "open_banking"]`, чтобы начать с неё.
* **Неработающий банк.** Если страна поддерживает проверку счёта, этот способ также служит резервным, когда банк при входе через банк недоступен или работает со сбоями: шаг переходит к форме ввода счёта до запроса согласия, пока у пользователя остаются доступные проверки счёта.
* **Проверка выполняется через собственные маршруты Didit.** Шаг, работающий через вашего собственного провайдера маркетплейса (`provider_key`), предлагает её только при включённом параметре `fallback_to_native`.
* **Счета компаний.** В сессии верификации бизнеса проверка сверяет счёт компании с верифицированной компанией в тех странах, где Didit проверяет корпоративные счета.

См. раздел [Выбор способов для каждой страны](https://docs.didit.me/ru/core-technology/bank-verification/verification-methods.md#выбор-способов-для-каждой-страны), где описаны правила сохранения настроек.

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

Ниже приведены форматы счетов, поддерживаемые формой. Это не список покрытия: возможность выполнения проверки в стране зависит от того, [где она доступна](#где-доступна-проверка), и шаг всегда отображает точные поля для этой страны.

| Формат счёта | Страны | Что вводит пользователь |
| - | - | - |
| IBAN | Страны, использующие IBAN | Полный IBAN, который должен принадлежать выбранной стране |
| Сорт-код и номер счёта | Великобритания | 6-значный сорт-код и 8-значный номер счёта |
| Маршрутный номер и номер счёта | США | 9-значный маршрутный номер ABA и номер счёта |
| Номер транзита и финансового учреждения | Канада | 8-значный номер транзита и финансового учреждения (5 цифр транзита, за которыми следуют 3 цифры учреждения) и номер счёта |
| BSB и номер счёта | Австралия | 6-значный BSB и номер счёта |
| CLABE | Мексика | 18-значный номер CLABE, который уже определяет банк |
| CBU или CVU | Аргентина | 22-значный номер CBU или CVU, который уже определяет банк |
| IFSC и номер счёта | Индия | 11-символьный IFSC и номер счёта |
| NUBAN и код банка | Нигерия | 10-значный NUBAN и код банка или BIC |
| Номер счёта | Другие страны | Номер счёта, а также код банка или BIC, если этого требует страна |

В некоторых странах форма также запрашивает регистрационный номер: для счетов компаний, а в ряде стран для каждого счёта.

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

## Включение

Новый шаг предлагает проверку счёта по умолчанию в качестве резервного варианта для входа в банк. Чтобы начать с неё или предлагать только её, укажите `account_lookup` первым в порядке:

```json theme={null}
{
  "bank_method_order": ["account_lookup", "open_banking"]
}
```

Параметры, определяющие работу проверки:

| Настройка | Влияние на проверку счёта |
| - | - |
| `bank_method_order`, `bank_countries.<ISO3>.methods` | Доступна ли проверка в стране, и выполняется ли она до или после входа в банк. |
| `bank_countries` | Проверка выполняется только в странах, поддерживаемых шагом. |
| `bank_reference_identity` | Шаг, подтверждённое имя которого используется для проверки счёта. |
| `bank_account_check_max_attempts` | Количество доступных человеку проверок: от `1` до `5` (по умолчанию `3`). Считается отдельно от `bank_max_attempts` для входа в банк. |
| `bank_account_check_accept_close_match` | Включено (по умолчанию): приблизительное совпадение направляется на подтверждение или на действие `bank_partial_match_action`. Выключено: любое приблизительное совпадение считается несовпадением. |
| `bank_name_match_threshold`, `bank_partial_match_floor` | Те же диапазоны оценки имени, что и при входе в банк: совпадение на уровне или выше порога (по умолчанию 85) и приблизительное совпадение (диапазон частичного совпадения) между минимальным порогом (по умолчанию 70) и основным порогом. |
| `bank_use_provider_score` | Включено (по умолчанию): итоговое решение принимает оценка имени от самого сервиса проверки, если она выше оценки Didit или если проверка возвращает оценку без имени владельца, при этом `ownership.method` принимает значение `provider_only`. Выключено: ответ без имени владельца считается `not_verifiable`. |
| `bank_suggest_holder_name` | Включено (по умолчанию): при приблизительном совпадении с указанием имени владельца человек видит это имя и подтверждает, что оно принадлежит ему, либо пробует другой счёт. |

## Результаты

### Проверки, возвращающие ответ

Каждая из них тарифицируется один раз и расходует одну из попыток проверки счёта пользователя (`bank_account_check_max_attempts`). Пока шаг не завершён, человек может попробовать ещё раз с другим счётом, если остались попытки. Результат содержится в `ownership.result`, за исключением несуществующего счёта, причина которого указывается в `connection.reason_code`.

| Что возвращает проверка | Результат | Что определяет решение |
| - | - | - |
| Счёт принадлежит верифицированному лицу | `match` | Шаг одобряется, если другие его проверки не указывают на иное. |
| Приблизительное совпадение с указанием имени владельца | `partial_match` | При включённом параметре `bank_suggest_holder_name` человек подтверждает имя или пробует другой счёт. Подтверждение завершает шаг действием `bank_partial_match_action` (по умолчанию `REVIEW`). |
| Приблизительное совпадение с оценкой, но без имени владельца | `partial_match` | Действие `bank_partial_match_action` (по умолчанию `REVIEW`). Поле `ownership.method` принимает значение `provider_only`. Для этого требуется включённый параметр `bank_use_provider_score` (по умолчанию включён); если он выключен, ответ будет `not_verifiable`. |
| Счёт принадлежит другому человеку | `no_match` | Действие `bank_no_match_action` (по умолчанию `DECLINE`). |
| Ответ, в котором имя не сравнивалось | `not_verifiable` | Действие `bank_not_verifiable_action` (по умолчанию `REVIEW`). |
| Счёта с такими реквизитами не существует | `ACCOUNT_NOT_FOUND` | Человек может попробовать другой счёт, пока остаются попытки. |

Если параметр `bank_account_check_accept_close_match` выключен, оба варианта приблизительного совпадения становятся `no_match` с кодом причины `OWNER_NAME_MISMATCH`: человеку не предлагается подтвердить имя, и решение определяется параметром `bank_no_match_action`. Вход в банк сохраняет свои приблизительные совпадения в любом случае.

Если человек израсходовал все проверки счёта и все попытки входа в банк (если для страны также доступен вход в банк) без успешного подключения, шаг остаётся открытым, пока сохраняется возможность загрузки выписки с оставшимися попытками: см. [Загрузка выписки](https://docs.didit.me/ru/core-technology/bank-verification/fallbacks.md#загрузка-выписки). Когда способов больше не остаётся, шаг завершается действием `bank_attempts_exhausted_action` (по умолчанию `DECLINE`), если только в одной из предыдущих попыток уже не было вынесено решение, например о несовпадении имён. В таком случае в силе остаётся это решение.

### Исходы, которые никогда не тарифицируются

Ни один из этих вариантов не расходует попытку проверки. Каждый из них отображается в `connection.reason_code`.

| Что происходит | Код причины | Что следует далее |
| - | - | - |
| Счёт отклонён в том виде, как он был введён: проверкой формата Didit или банком | `INVALID_ACCOUNT_INPUT`, пока попытка остаётся открытой | Пользователю сообщается, какое поле нужно исправить, и он вносит исправления. |
| Проверка недоступна в данный момент | `PROVIDER_UNAVAILABLE` | Пользователь может повторить попытку. |
| В сессии нет подтверждённого имени для сравнения | `REFERENCE_IDENTITY_MISSING` | Проверка не выполняется. Шаг завершается действием `bank_reference_identity_missing_action` (по умолчанию `REVIEW`). |

### В решении

В решении по сессии шаг указывается в массиве `bank_verifications[]`. После того как счёт был проверен, поле `method` принимает значение `account_lookup`. Пока ни один счёт не проверен, поля `method` и `ownership` имеют значение `null`, а в `connection.reason_code` указана причина, например `ACCOUNT_NOT_FOUND`, `PROVIDER_UNAVAILABLE` или `REFERENCE_IDENTITY_MISSING`.

Для проверки банк не выбирается, поэтому `connection.institution_id`, `connection.institution_name` и `connection.oauth` имеют значение `null`, а `connection.institution_country` содержит страну, выбранную пользователем. Didit не сохраняет доступ к счёту после завершения шага, поэтому проверка, завершившаяся совпадением, получает статус `connection.status: revoked` с кодом `reason_code: VERIFICATION_COMPLETED`. Сам результат остаётся в сессии.

Проверка счёта не считывает балансы, транзакции или доходы. Если шаг запрашивает их, они перечисляются в `financial_data.not_collected`; см. [Для финансовых данных требуется вход в банк](https://docs.didit.me/ru/core-technology/bank-verification/verification-methods.md#для-финансовых-данных-требуется-вход-в-банк).

```json theme={null}
{
  "bank_verifications": [
    {
      "status": "Approved",
      "method": "account_lookup",
      "connection": {
        "status": "revoked",
        "institution_id": null,
        "institution_name": null,
        "institution_country": "NGA",
        "oauth": null,
        "attempts": 1,
        "reason_code": "VERIFICATION_COMPLETED"
      },
      "ownership": {
        "result": "match",
        "method": "exact"
      },
      "financial_data": {
        "balances": null,
        "transactions": null,
        "income": null,
        "categorization": null,
        "not_collected": []
      },
      "billing": {
        "route": "native",
        "billed": true,
        "marketplace_fee": null,
        "usage_type": "bank_verification"
      }
    }
  ]
}
```

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

### В правилах сценариев и отчётах

* **Ветви и правила статусов:** `bank.method` принимает значение `account_lookup` (**Проверка счёта** в конструкторе правил), а `bank.reason_code` может принимать значение `ACCOUNT_NOT_FOUND`.
* **PDF-отчёт по сессии:** в строке **Метод верификации** указано **Проверка счёта**.

## Цены

Каждая проверка, вернувшая ответ, тарифицируется как одно списание за Bank Verification: совпадение, близкое совпадение, несовпадение, счёт, который не удалось проверить, и счёт, который не удалось найти, подлежат оплате. Значение, отклонённое до проверки, недоступная проверка и сессия без подтверждённого имени для сравнения никогда не тарифицируются. Цена устанавливается для каждой страны: см. [цены на Bank Verification](https://docs.didit.me/ru/getting-started/bank-verification-pricing.md).

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

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

В приложении песочницы проверка выполняется на симулированном сервисе, и плата не взимается. Песочница предлагает оба метода в каждой стране в порядке, заданном шагом: при порядке по умолчанию выберите **Введите реквизиты счёта**, чтобы запустить проверку, или установите `bank_method_order` в значение `["account_lookup", "open_banking"]`, чтобы начать с неё.

Последние четыре символа счёта, введённого человеком (IBAN, либо номер счёта), определяют ответ. Любое другое окончание даёт совпадение с подтверждённым именем.

| Заканчивается на | Ответ |
| - | - |
| `0001` | Близкое совпадение с указанием имени владельца: пользователю предлагается подтвердить имя. Если параметр `bank_account_check_accept_close_match` выключен, это несовпадение. |
| `0002` | Близкое совпадение без имени владельца: решение принимает `bank_partial_match_action`. Если `bank_use_provider_score` выключен, ответ равен `not_verifiable`; если `bank_account_check_accept_close_match` выключен, это несовпадение. |
| `0003` | Несовпадение: счёт принадлежит другому лицу. Засчитывается как платная проверка. |
| `0004` | Ответ получен, но имя не сравнивалось (`not_verifiable`). Засчитывается как платная проверка. |
| `0005` | Проверка недоступна (`PROVIDER_UNAVAILABLE`). Повторная попытка бесплатна. |
| `0006` | Счёт с такими реквизитами не найден (`ACCOUNT_NOT_FOUND`). Засчитывается как платная проверка. |
| `0009` | Отклонено при вводе: пользователю предлагается исправить поле. Попытка остаётся активной. |

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

IBAN, CLABE и CBU содержат контрольные цифры, поэтому вы не можете просто изменить их последние четыре символа. Используйте эти значения, которые проходят все проверки формата:

> [tab] Germany (IBAN)
>
> | Ответ | IBAN |
> | - | - |
> | Совпадение | `DE43123456789012345678` |
> | `0001` | `DE62123456789012340001` |
> | `0002` | `DE35123456789012340002` |
> | `0003` | `DE08123456789012340003` |
> | `0004` | `DE78123456789012340004` |
> | `0005` | `DE51123456789012340005` |
> | `0006` | `DE24123456789012340006` |
> | `0009` | `DE40123456789012340009` |

> [tab] United Kingdom
>
> Сортировочный код `123456`, со следующим:
>
> | Ответ | Номер счёта |
> | - | - |
> | Совпадение | `12345678` |
> | `0001` | `12340001` |
> | `0002` | `12340002` |
> | `0003` | `12340003` |
> | `0004` | `12340004` |
> | `0005` | `12340005` |
> | `0006` | `12340006` |
> | `0009` | `12340009` |

> [tab] United States
>
> Маршрутный номер `021000021`, со следующим:
>
> | Ответ | Номер счёта |
> | - | - |
> | Совпадение | `000123456789` |
> | `0001` | `000123450001` |
> | `0002` | `000123450002` |
> | `0003` | `000123450003` |
> | `0004` | `000123450004` |
> | `0005` | `000123450005` |
> | `0006` | `000123450006` |
> | `0009` | `000123450009` |

> [tab] Mexico (CLABE)
>
> | Ответ | CLABE |
> | - | - |
> | Совпадение | `002010077777777771` |
> | `0001` | `002010077777780001` |
> | `0002` | `002010077777750002` |
> | `0003` | `002010077777720003` |
> | `0004` | `002010077777790004` |
> | `0005` | `002010077777760005` |
> | `0006` | `002010077777730006` |
> | `0009` | `002010077777740009` |

> [tab] Argentina (CBU)
>
> | Ответ | CBU |
> | - | - |
> | Совпадение | `2850590940090418135201` |
> | `0001` | `2850590940090418160001` |
> | `0002` | `2850590940090418170002` |
> | `0003` | `2850590940090418180003` |
> | `0004` | `2850590940090418190004` |
> | `0005` | `2850590940090418100005` |
> | `0006` | `2850590940090418110006` |
> | `0009` | `2850590940090418140009` |

> [tab] India
>
> IFSC `ALLA0211480`, со следующим:
>
> | Ответ | Номер счёта |
> | - | - |
> | Совпадение | `123456789007` |
> | `0001` | `123456780001` |
> | `0002` | `123456780002` |
> | `0003` | `123456780003` |
> | `0004` | `123456780004` |
> | `0005` | `123456780005` |
> | `0006` | `123456780006` |
> | `0009` | `123456780009` |

[API проверки счёта](https://docs.didit.me/ru/standalone-apis/bank-account-check.md) возвращает ответ для ключа песочницы на основе тех же окончаний, без сессии.

Подробнее о том, как в целом работают приложения в песочнице, см. в разделе [Тестирование в песочнице](https://docs.didit.me/ru/integration/sandbox-testing.md).


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