Перейти к основному содержанию
POST
Подтверждает, что банковский счёт в Южной Африке принадлежит указанному владельцу, через межбанковский сервис Account Holder Verification. Didit предоставляет этот сервис через POST /v3/database-validation/, чтобы вы могли сверить переданные данные с достоверным источником и получить нормализованные результаты сопоставления.

Покрытие

  • Покрытие: —
  • Страна: Южная Африка
  • Идентификатор сервиса: zaf_bank_account_holder
  • Область данных: Финансы
  • Категория: Банковское дело

Входные данные

  • Обязательные входные данные: national_id, bank_account_number, bank_name
  • Необязательные входные данные: account_type, first_name, last_name, initials, email, phone_number, vendor_data
  • Согласие: обязательно
  • Доступность в сценарии: доступно в сценарии с сопоставлением полей
  • Покрытие: —
  • Цена: $0.40 за успешный запрос
В сценарии bank_account_number и bank_name не печатаются на удостоверении личности, поэтому ни один шаг не получает их сам по себе. Соберите их из ответа в анкете, из поля, извлечённого Document AI, или из значения, которое вы передаёте при создании сессии, и сопоставьте каждое из них на шаге Проверка по базам данных. Пока они не сопоставлены, редактор сценария показывает этот сервис как отключённый и указывает отсутствующее входное поле. Во время выполнения отсутствующее входное поле означает, что проверка пропускается до любого запроса, поэтому с вас не берётся плата за базу данных, к которой не удалось обратиться.

Параметры тела запроса

string
по умолчанию:"ZAF"
обязательно
Код страны ISO 3166-1 alpha-3 для этого сервиса базы данных.Пример: ZAF
string
по умолчанию:"zaf_bank_account_holder"
обязательно
Массив, содержащий ID этого сервиса. Фиксация сервиса ограничивает запрос этой конкретной базой данных.Пример: zaf_bank_account_holder
Явное согласие конечного пользователя на этот сервис.Пример: true
string
по умолчанию:"8708150847085"
обязательно
Национальный идентификационный номер для этого сервиса.Пример: 8708150847085
string
по умолчанию:"1234567890"
обязательно
Значение bank_account_number, необходимое этому сервису базы данных.Пример: 1234567890
string
по умолчанию:"ABSA"
обязательно
Значение bank_name, необходимое этому сервису базы данных.Пример: ABSA
string
по умолчанию:"current"
Значение account_type, необходимое этому сервису базы данных.Пример: current
string
Имя для проверки.Пример: John
string
по умолчанию:"Doe"
Фамилия для проверки.Пример: Doe
string
по умолчанию:"JD"
Значение initials, необходимое этому сервису базы данных.Пример: JD
string
Адрес электронной почты.Пример: john.doe@example.com
string
Значение phone_number, необходимое этому сервису базы данных.Пример: +15550101000
string
по умолчанию:"user-1234"
Ваш стабильный идентификатор этого человека в вашей системе, например внутренний ID пользователя. Didit использует его, чтобы связывать отдельные проверки с одним и тем же конечным пользователем и уменьшать количество ложных срабатываний при поиске дубликатов.Пример: user-1234

Правила ввода и примечания по валидации

  • Значение account_type должно быть одним из типов счетов AVS ЮАР: current, savings, transmission, subscriptionShare, notKnown. Сравнение не учитывает регистр. Не передавайте поле, если тип счёта вам неизвестен: тогда Didit отправит notKnown, а проверка типа счёта будет указана как не подтверждённая, а не приведёт к ошибке запроса.

Как вызвать

Возвращаемые данные

Точный набор полей, которые попадают в source_data, зависит от того, что возвращает реестр. Сгенерированный пример для zaf_bank_account_holder сейчас описывает такую нормализованную структуру:
  • accepts_credits
  • accepts_debits
  • account_found
  • account_number_length_valid
  • account_open
  • account_type_match
  • id_match
  • identification_number
  • initials_match
  • surname_match

Цены и SLA

Запросы проверки владельца банковского счёта для Южной Африки тарифицируются, только если Didit получает окончательный результат от источника проверки.
  • Цена за вызов: $0.40 USD.
  • Тарификация: за каждый успешный запрос. Плата не взимается, если реестр недоступен, если не заполнены обязательные поля или если запрос отклонён до обращения к источнику.
  • Задержка: типичное значение p95 < 2 с.
  • Доступность: 99.9% в квартал со стороны Didit; доступность источников данных зависит от страны и набора данных.

Что подтверждает MATCH

Проверка владельца счёта (AVS) – это набор перекрёстных проверок с ответом «да/нет», а не поиск записи. Источник никогда не возвращает имя, идентификационный номер или баланс счёта. Он берёт переданные вами данные, сравнивает их с тем, что банк хранит по этому счёту, и на каждое сравнение отвечает флагом. Эти флаги содержатся в source_data:
  • account_found – банк ведёт счёт с таким номером. Если это значение false, все остальные поля не имеют смысла.
  • account_open – счёт открыт. Счёт может быть найден, но закрыт.
  • id_match – счёт принадлежит владельцу с указанным вами национальным идентификатором. Именно для этой проверки и существует сервис.
  • initials_match, surname_match – переданные initials и last_name совпадают с данными владельца счёта в банке.
  • account_type_match – переданный account_type совпадает с реальным типом счёта.
  • email_match, phone_match – переданные email и phone_number совпадают с контактными данными, которые хранит банк.
  • accepts_debits, accepts_credits – счёт может принимать дебетовые поручения и зачисления.
  • account_number_length_valid – номер счёта имеет длину, которую ожидает банк.
Код результата обобщает эти флаги:
  • MATCH – счёт существует, и каждое переданное вами поле совпало, включая id_match.
  • PARTIAL_MATCH – счёт принадлежит указанному национальному идентификатору, но хотя бы одно другое переданное поле не совпало (например, фамилия записана в банке иначе). outcome_detail называет поля, которые не совпали.
  • NO_MATCH – либо банк не ведёт такого счёта, либо счёт существует, но принадлежит другому человеку. Оба варианта являются окончательным ответом о человеке.
Перекрёстная проверка, которую вы не запрашивали, не учитывается и не возвращается. AVS возвращает N для каждого поля, которое не было передано, поэтому surname_match, initials_match, email_match, phone_match и account_type_match появляются в source_data только тогда, когда вы передали соответствующие данные. Поэтому запрос, в котором переданы только national_id, bank_account_number и bank_name, всё равно вернёт полный MATCH.

Допустимые значения bank_name и account_type

bank_name и account_type – это перечисления. Значение, которого нет в списке, отклоняется до выполнения запроса, поэтому опечатка стоит вам лишнего обращения, но не списания. account_type необязателен и принимает значения без учёта регистра: current · savings · transmission · subscriptionShare · notKnown Не передавайте это поле, если тип счёта вам неизвестен. Тогда Didit отправит notKnown, запрос будет выполнен успешно, а account_type_match вернётся как false, так как сравнивать было не с чем. Любое другое значение, например checking, cheque или bond, отклоняется с ответом 400, в котором перечислен допустимый набор. bank_name обязателен. Подтверждены следующие значения (без учёта регистра): ABSA · Capitec · FNB · Nedbank · Standard Bank · Investec · African Bank · Discovery Bank · Old Mutual · Bank Zero · Tyme · Grindrod Потребительские счета во всех этих банках входят в область проверки, включая Capitec. Передавайте короткое название точно так, как указано в списке: Capitec, а не Capitec Bank; Tyme, а не TymeBank. Неизвестный банк возвращается с результатом REGISTRY_ERROR, в outcome_detail которого указано поле, отклонённое источником.

Как отличить отсутствие счёта от недоступного источника

Это разные HTTP-ответы, поэтому разбирать текст ошибок не нужно:
  • Счёт не существует – 200 OK, match_type: "no_match", outcome_code: "NO_MATCH", source_data.account_found: false. Это реальный ответ банка. Запрос тарифицируется, и применяется ваше действие для случая отсутствия совпадения.
  • Источник не ответил – 502 Bad Gateway с validation_errors[].code = empty_provider_response и retryable: true. О человеке ничего не установлено, плата не взимается, повторный запрос безопасен.
  • Источник отказался выполнить запрос – 400 Bad Request с validation_errors[].code = provider_rejected_input и retryable: false. Источник не выполнял поиск, потому что не принял переданные данные. Исправьте данные: повтор с теми же значениями не даст результата. Плата не взимается.
  • Источник ответил и отклонил ваши данные – 502 Bad Gateway с validation_errors[].code = provider_invalid_input (например, номер счёта не проходит проверку формата банка). Повторять запрос бессмысленно, пока данные не исправлены. Плата не взимается.
  • Запрос не покинул Didit – 400 Bad Request с указанием поля, которое нужно исправить. Плата не взимается.
Только первый из этих вариантов является ответом о человеке. Относитесь к 502 как к временной ошибке: AVS передаёт запрос банку владельца счёта, а не обращается к реестру, поэтому это самый медленный из южноафриканских сервисов. Повторяйте запрос с увеличивающейся задержкой между попытками.

Продолжить чтение

Последнее изменение 7 ноября 2026 г.