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

# API реестра компаний: автоматизация KYB-данных

> Didit: поиск в реестрах компаний, проверка статуса и извлечение данных в 220+ странах. От $2.00 за проверку по стране и тарифу, без контрактов.

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

## Поиск в реестре

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

### Предварительное заполнение поиска через `expected_details`

Если вы уже знаете компанию, передайте `expected_details` (`company_name`, `registry_country`, `registration_number`) при [создании сессии](https://docs.didit.me/ru/sessions-api/create-session.md). Размещённая страница верификации заранее выбирает и фиксирует страну (а для реестров уровня штата, таких как `US-CA`, также штат), заполняет соответствующие поля поиска и автоматически запускает поиск по указанным данным. Пользователь сразу видит результат по своей компании. Оба поля остаются редактируемыми, чтобы пользователь мог исправить неверные данные. Это только предварительное заполнение: если пользователь выбрал другую компанию, предупреждение не выводится.

### Типы поиска

Поиск в реестре работает в двух режимах:

| Режим | Описание |
| - | - |
| **Точное совпадение** | Точное совпадение с названием компании или регистрационным номером |
| **Содержит** | Поиск компаний, в названии которых есть искомая строка. Полезно, когда точное юридическое название неизвестно |

### Порядок поиска

Поиск в реестре выполняется асинхронно:

**1. Поиск**

Didit отправляет запрос в реестр с выбранной страной и указанными идентификаторами: названием компании, регистрационным номером или обоими сразу. Поле ответа `searched_by` показывает, как были найдены результаты (`name`, `registration_number` или `registration_number_and_name`). Размещённый интерфейс при результатах по регистрационному номеру предлагает одним нажатием выполнить поиск по названию компании: «Искать вместо этого по названию компании». Поиск выполняется асинхронно.

**2. Опрос статуса**

Опрашивайте статус поиска, пока результаты не будут обработаны. Большим реестрам может понадобиться несколько секунд, чтобы вернуть результаты.

**3. Выбор компании**

Просмотрите найденные компании и выберите правильное совпадение. Didit связывает выбранную компанию с проверкой KYB и заполняет все доступные данные.

**4. Подтверждение и продолжение**

Подтвердите или исправьте данные компании и перейдите к следующему настроенному шагу.
Некоторые реестры возвращают профиль компании раньше, чем готов отчёт о структуре владения. Этот отчёт продолжает формироваться в фоновом режиме, пока заявитель выполняет независимые шаги, например загрузку документов.
Предварительное заполнение из реестра не блокирует форму «Ключевые лица»: заявитель может ввести людей вручную, а данные о людях из реестра появятся до отправки по мере поступления отчёта.
Пользовательские решения, которые зависят от отчёта, ждут его получения и не угадывают результат.
Ваши исправления сохраняются, когда отчёт поступает.
Ожидающий отчёт не считается завершённой проверкой по реестру или автоматическим одобрением. Оплата за проверку по реестру начисляется по уровню, который был фактически предоставлен.

**5. Ручная отправка**

Если компания не найдена в реестре, отправьте данные о компании вручную. Сессия продолжается с переданными данными, а `is_from_registry` получает значение `false`.

### Получаемые данные

| Поле | Описание |
| - | - |
| `company_name` | Юридическое название, зарегистрированное в ведомстве |
| `registration_number` | Официальный регистрационный номер или номер инкорпорации компании |
| `country_code` | Страна регистрации компании (ISO 3166-1 alpha-3) |
| `company_type` | Организационно-правовая форма (Ltd, LLC, PLC, SA, GmbH, SL и т. д.) |
| `registry_status` | Текущий статус компании в реестре (`active`, `dissolved`, `struck_off` и др.) |
| `incorporation_date` | Дата первоначальной регистрации компании |
| `registered_address` | Официальный юридический адрес |
| `tax_number` | Налоговый идентификационный номер, если он доступен |
| `alternative_names` | Торговые наименования, DBA, прежние юридические названия или названия на языке оригинала в виде текстового значения |
| `legal_entity_identifier` | LEI — для финансовых учреждений и компаний, чьи ценные бумаги котируются на бирже |
| `nature_of_business` | Краткое описание деятельности (на языке реестра) |
| `registered_capital` | Уставный или выпущенный капитал в виде объекта `{amount, currency}` |
| `location_of_registration` | Город или административная единица, где находится соответствующий реестр |
| `control_scheme` | Схема контроля или управления, если реестр её раскрывает |
| `website`, `email`, `phone` | Контактные данные, которые хранятся в реестре |
| `addresses[]` | Дополнительные зарегистрированные или торговые адреса |
| `industries[]` | Коды отраслевой классификации (SIC, NACE или местные аналоги) |
| `accounts` | Даты подачи документов, если они указаны, включая `last_annual_return_date` и `last_agm_date`. Ежегодные декларации и собрания отличаются от финансовой отчётности. |
| `financial_summary` | Краткие финансовые данные, если реестр их публикует (выручка, количество сотрудников, статус подачи отчётности) |
| `confirmed_by_user_at` | Время, когда конечный пользователь подтвердил или изменил данные реестра |
| `last_console_edit_at` | Время последнего редактирования аналитиком в консоли |
| `is_editable` | `true`, пока конечный пользователь может редактировать данные из реестра на размещённой странице верификации |
| `is_from_registry` | `true` для компаний, данные которых получены из реестра, и `false` для данных, введённых вручную |
| `fetch_status` | `pending`, `resolved` или `failed`: состояние поиска в реестре |
| `verification_status` | `verified`, `failed` или `unknown` |

### Статусы компании

| Статус | Описание |
| - | - |
| **Активна** | Компания действует и находится в надлежащем состоянии |
| **Ликвидирована** | Компания официально ликвидирована |
| **Исключена из реестра** | Компания удалена из реестра, например за несоблюдение требований |
| **В процессе ликвидации** | Компания находится в процессе ликвидации |
| **Неактивна** | Компания зарегистрирована, но не ведёт деятельность |

> [!WARNING]
>
> Компании со статусом, отличным от **Активна**, могут быть автоматически помечены или отклонены в зависимости от настроек вашего сценария.

### Индикатор источника данных

Каждая запись о компании содержит флаг `is_from_registry`:

* **`true`**: данные получены из официального реестра компаний
* **`false`**: данные введены вручную, потому что компания не найдена в реестре

Поле `fetch_status` показывает, завершён ли запрос к реестру, завершился ли он ошибкой или ещё выполняется.

## Уровни данных и цены

В размещённом сценарии выбор компании приводит к списанию платы за реестр, даже если заявитель уходит до подтверждения данных или завершения верификации.
Если отчёт готов в момент выбора, за выданный уровень плата списывается сразу.
Если данные о структуре владения ещё не готовы, при выборе списывается плата за Lite, а при выдаче более высокого уровня списывается только разница в цене.
Если данные о структуре владения недоступны, доплата за структуру владения не применяется.
Итоговая сумма рассчитывается по ценам, указанным при выборе, и никогда не превышает стоимость запрошенного уровня.
Выбор и любая последующая корректировка структуры владения считаются одной проверкой по реестру; чтение купленного отчёта или подтверждение его данных повторно не списывает плату.
По действующим контрактам с фиксированной ставкой одна проверка по реестру начисляется при выборе, без второй единицы контракта за последующую выдачу данных о структуре владения.
Поиски в размещённых сценариях не имеют отдельной платы за поиск.
Отдельные поисковые запросы API могут стоить \$0.50 за каждый успешный запрос; см. [тарификация поиска](https://docs.didit.me/ru/standalone-apis/kyb-registry-search.md).
Полную таблицу по странам см. в разделе [тарифы KYB-реестров](https://docs.didit.me/ru/getting-started/kyb-registry-pricing.md).

| Уровень | Что вы получаете |
| - | - |
| **Lite** | Поля выше: профиль компании, идентификаторы, статус, зарегистрированный адрес, вид деятельности и руководители |
| **Акционеры** | Lite плюс прямые акционеры (физические лица и юридические лица) с диапазонами владения |
| **Бенефициары** | Акционеры плюс конечные бенефициарные владельцы, определённые по цепочке владения |

В размещённом сценарии уровень для каждой страны выбирается в разделе *Workflows → KYB Registry Check → Countries*. Если в реестре нет записи о структуре владения компании, запрос на уровень Акционеры или Бенефициары выполняется и оплачивается по самому высокому уровню, который могут предоставить реестры страны, обычно это Lite.

За компанию, которая не найдена и введена вручную (`is_from_registry: false`), взимается фиксированная плата **\$0.75**: поиск выполнялся, хотя запись из реестра не была возвращена.

> [accordion] Пример: ответ уровня Lite
>
> Lite возвращает только профиль компании, без акционеров, бенефициаров или структуры владения:
>
> ```json theme={null}
> {
>   "company_name": "ACME HOLDINGS PTY LTD",
>   "registration_number": "094447122",
>   "country_code": "AU",
>   "registry_status": "active",
>   "incorporation_date": "2000-09-12",
>   "company_type": "Proprietary Limited",
>   "registered_address": "Sydney, NSW, 2000",
>   "tax_number": null,
>   "vat_number": null,
>   "website": null,
>   "is_from_registry": true
> }
> ```
>
> Уровень Акционеры добавляет `ownership_structure` и записи акционеров, а также руководителей и директоров. Уровень Бенефициары дополнительно определяет бенефициарных владельцев с процентами владения. См. [Структура владения](https://docs.didit.me/ru/business-verification/ownership.md) и [Руководители и директора](https://docs.didit.me/ru/business-verification/officers.md).

## Данные реестра и данные, предоставленные пользователем

Didit хранит данные, полученные из реестра, и данные, подтверждённые пользователем, как **отдельные аудиторские записи**, а также объединённое каноническое представление, которое используют последующие проверки. Каждая компания содержит три связанных блока:

| Поле | Описание |
| - | - |
| `registry_data` | Нормализованные данные реестра Didit: результат определения структуры владения (`ownership_error`, `section_errors`, `ubo_resolution`), исправления, внесённые через [update-data](https://docs.didit.me/ru/sessions-api/update-data.md), и факты реестра, для которых нет отдельного поля. Ключи зависят от компании и не являются стабильным контрактом. |
| `user_provided_data` | Данные, которые конечный пользователь подтвердил или изменил на шаге подтверждения данных реестра в размещённом сценарии. |
| Поля верхнего уровня (канонические) (`company_name`, `registration_number`, `country_code`, `incorporation_date` и т. д.) | Итоговые объединённые данные: данные, подтверждённые пользователем, если они есть, и данные реестра в качестве запасного варианта. Последующие функции (сверка с OCR документов, AML-скрининг, оценка риска) работают с каноническим представлением. |

Временная метка `confirmed_by_user_at` фиксирует момент, когда конечный пользователь подтвердил или изменил данные реестра. Пока эта метка не заполнена (null) и `is_editable` равно `true`, конечный пользователь может продолжать изменять поля в размещённом сценарии.

Для **компаний, введённых вручную** (`is_from_registry: false`), `user_provided_data` является единственным источником, а `is_editable` становится `false` после отправки пользователем данных.

Аналитики могут увидеть два источника рядом в разделе просмотра сессии в [Business Console](https://docs.didit.me/ru/business-verification/console.md) и сравнить данные реестра с данными, подтверждёнными пользователем.

## Настраиваемые поля формы реестра

Вы управляете тем, какие поля данных о компании размещённый сценарий верификации запрашивает на шаге подтверждения по реестру. Настраивайте их в Business Console: откройте редактор сценария, выберите узел **KYB Registry check** и перейдите на вкладку **Поля**.

Каждое поле имеет одно из трёх состояний:

| Состояние | Поведение |
| - | - |
| **Скрыто** | Поле не отображается в размещённом сценарии и не собирается. |
| **Необязательно** | Поле отображается; пользователь может оставить его пустым. |
| **Обязательно** | Поле отображается и должно быть заполнено, прежде чем пользователь сможет отправить форму. |

Три поля всегда отображаются и всегда обязательны, их нельзя настроить, так как они идентифицируют компанию: `company_name`, `country_code` и `region` (штат или регион, если реестр региональный).

Настраиваемых полей 16:

`registration_number`, `incorporation_date`, `legal_address`, `vat_number`, `alternative_names`, `tax_number`, `company_type`, `legal_entity_identifier`, `location_of_registration`, `nature_of_business`, `registered_capital_amount`, `registered_capital_currency`, `website`, `email`, `phone`, `control_scheme`

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

Обязательность заполнения проверяется на стороне сервера: если отправить форму реестра с пустым обязательным полем, сервер вернёт `400` с сообщениями об ошибках для каждого поля, а интерфейс размещённой страницы верификации отображает только включённые поля. В API сценария настройка задаётся объектом `kyb_registry_fields_config` в узле KYB Registry. Его структура описана в разделе [конфигурации функций](https://docs.didit.me/ru/management-api/workflows/feature-configs.md#реестр-kyb).

> [!NOTE]
>
> Поле `vat_number`, отмеченное как **Обязательно**, проверяется только для компаний, учреждённых в стране ЕС, где применяется НДС (см. ниже). Для всех остальных стран оно считается необязательным, даже если отмечено как обязательное, поскольку собирать номер НДС ЕС не требуется. Номер `tax_number` всё равно проверяется, если он указан.

## VAT и проверка налогового номера

Когда отправляется шаг реестра, Didit проверяет `vat_number` компании по официальному источнику её страны.
Компания без `vat_number` проверяется по `tax_number`.
Номер можно передавать с кодом страны или без него и с любыми разделителями (`DE 123 456 789`, `DE123456789` и `123456789` для немецкой компании эквивалентны).

**Официальные реестры.** В этих странах номер проверяется в режиме реального времени по государственному или официальному реестру предприятий, который также возвращает зарегистрированное название (а для большинства и адрес):

| Страна | Источник |
| - | - |
| 27 стран-членов ЕС и Северная Ирландия (`XI`) | Европейская комиссия, [VIES](https://ec.europa.eu/taxation_customs/vies/) |
| Польша | VIES, затем реестр плательщиков НДС Министерства финансов («Белый список») для компании, которой нет в VIES |
| Норвегия | Регистрационный центр Brønnøysund (Центральный координирующий реестр юридических лиц) |
| Швейцария | Реестр UID Федерального статистического управления |
| Бразилия | Реестр CNPJ Receita Federal |
| Колумбия | RUES, Единый предпринимательский и социальный реестр торговых палат |
| Коста-Рика | Реестр налогоплательщиков Министерства финансов (Hacienda) |
| Эквадор | Реестр налогоплательщиков Налоговой службы (SRI) |
| Парагвай | Реестр RUC Национального налогового управления (DNIT) |

Французский SIREN или SIRET, голландский RSIN или полный венгерский налоговый номер, переданные как VAT-номер, перед проверкой преобразуются в соответствующий VAT-номер.
VAT-номера Греции проверяются с префиксом `EL` автоматически.

**Правила контрольных цифр.** В этих странах запрос к реестру невозможен, поэтому номер проверяется по официальному формату и правилам контрольных цифр страны: Албания, Андорра, Аргентина, Австралия, Азербайджан, Беларусь, Канада, Чили, Китай, Доминиканская Республика, Египет, Сальвадор, Гана, Гватемала, Исландия, Индия, Индонезия, Израиль, Япония, Кения, Лихтенштейн, Мексика, Молдова, Монако, Черногория, Марокко, Мозамбик, Новая Зеландия, Северная Македония, Перу, Россия, Сан-Марино, Сербия, Сингапур, ЮАР, Южная Корея, Тайвань, Таиланд, Тунис, Türkiye, Украина, Великобритания, США, Уругвай, Венесуэла и Вьетнам.
Эти правила применяются и в ЕС, когда `tax_number` является национальным налоговым идентификатором без VAT-номера для проверки, например немецким Steuernummer.
`tax_number` указывает только на наличие налогового идентификатора, а не на регистрацию по НДС, поэтому, если VIES его не находит, результат определяется по этим правилам, а не становится `invalid`.

Компании из любой другой страны получают `vat_validation_status: "not_applicable"`.
Так же обрабатываются и сессии песочницы, которые никогда не обращаются к налоговым реестрам.

Результат сохраняется у компании и передаётся в [payload решения KYB](https://docs.didit.me/ru/business-verification/response-schema.md#блок-company):

| Поле | Описание |
| - | - |
| `vat_number` | VAT-номер в том виде, в котором он был передан |
| `vat_validation_status` | `valid`, `invalid`, `format_valid`, `invalid_format`, `could_not_validate` или `not_applicable` |
| `vat_validated_number` | Номер, который был проверен, в том виде, в котором он указан в источнике (например, VAT-номер, полученный из SIREN) |
| `vat_validation_source` | Источник, определивший статус (см. ниже) |
| `vat_validated_name` | Название, зарегистрированное в источнике, если он его раскрывает |
| `vat_validated_address` | Адрес, зарегистрированный в источнике, если он его раскрывает |
| `vat_checked_at` | Временная метка проверки |

| Статус | Значение |
| - | - |
| `valid` | Официальный реестр подтвердил, что номер зарегистрирован и активен |
| `invalid` | В официальном реестре нет действующей регистрации для номера. В ЕС в VIES попадают только компании, зарегистрированные для внутриевропейской торговли |
| `format_valid` | Номер соответствует формату и правилам контрольных цифр страны; запрос к реестру не выполнялся |
| `invalid_format` | Номер не соответствует формату или правилам контрольных цифр страны |
| `could_not_validate` | Реестр был недоступен, поэтому номер не удалось проверить. Он будет проверен снова при следующем запуске проверки реестра |
| `not_applicable` | VAT-номер или налоговый идентификатор не были переданы, у страны нет реестра или правил проверки, либо сессия является сессией песочницы |

`vat_validation_source` принимает одно из значений: `eu_vies`, `pl_vat_white_list`, `no_brreg`, `ch_uid_register`, `br_receita_federal`, `co_rues`, `cr_hacienda`, `ec_sri`, `py_dnit` или `format_rules`.

Когда номер получает статус `valid`, `invalid`, `format_valid` или `invalid_format`, результат сохраняется на всю сессию, и реестр повторно не запрашивается, если только номер не изменился.

**Сверка названия.** Когда номер имеет статус `valid` и источник раскрывает зарегистрированное название, Didit сопоставляет его с указанным названием компании с учётом неточных совпадений.
Значимое расхождение вызывает предупреждение `KYB_COMPANY_VAT_NAME_MISMATCH` без изменения статуса сессии: это мягкий сигнал для проверяющих.
Его `additional_data` содержит `registry_name`, `registry_source` и `submitted_name`, а также `vies_name`, если источником является VIES.
Некоторые страны-члены ЕС не раскрывают название или адрес; поля в этом случае возвращаются пустыми, и сравнение не выполняется.

**Настраиваемые действия.** Две настройки в узле проверки реестра KYB определяют, что происходит с сессией при неуспешной проверке (значения `REVIEW`, `DECLINE`, `NO_ACTION`):

| Параметр | Срабатывает, когда | По умолчанию |
| - | - | - |
| `kyb_vat_invalid_action` | `vat_validation_status` равен `invalid`, либо `vat_number` имеет статус `invalid_format` | `REVIEW`: сессия переходит в статус «на проверке» |
| `kyb_vat_unverified_action` | `vat_validation_status` равен `could_not_validate` | `NO_ACTION`: без влияния на сессию |

`tax_number` со статусом `invalid_format` отображается в payload без запуска действия, поскольку в свободном текстовом поле для налогового номера часто указывается другой идентификатор компании.

Каждый результат также вызывает соответствующее предупреждение (`KYB_COMPANY_VAT_INVALID`, `KYB_COMPANY_VAT_COULD_NOT_VALIDATE`) в проверке реестра. См. [предупреждения о верификации бизнеса (KYB)](https://docs.didit.me/ru/business-verification/warnings.md#предупреждения-реестра-kyb).

## Перекрёстная проверка данных

Didit автоматически сравнивает данные, предоставленные пользователем, и канонические данные с данными, которые вернул реестр, и с данными OCR, извлечёнными из загруженных документов:

* **Название компании**: нечёткое сопоставление, которое учитывает сокращения и различия в оформлении
* **Регистрационный номер**: проверка на точное совпадение
* **Страна**: проверка согласованности страны, указанной пользователем, и страны из реестра
* **Адрес**: геокодирование и нормализация для сравнения

Все расхождения отмечаются как предупреждения в сессии и видны аналитикам в консоли.

## Финансовая сводка

Если данные доступны, Didit получает из реестра сводные финансовые данные:

* Выручка или оборот
* Количество сотрудников
* Коды отраслей SIC/NACE
* Даты подачи отчётности и статус соответствия требованиям

## Дополнительные поля реестра

В зависимости от охвата юрисдикций ответ реестра может также содержать:

* `alternative_names`: торговые наименования, DBA-названия, прежние юридические названия
* `legal_entity_identifier` (LEI): для финансовых учреждений и публичных компаний
* `website`, `email`, `phone`: контактные данные, которые есть в реестре
* `nature_of_business`: краткое описание деятельности (на языке реестра)
* `registered_capital`: уставный или выпущенный капитал в виде объекта `{amount, currency}`

Все поля попадают в блок [`business`](https://docs.didit.me/ru/business-verification/response-schema) решения KYB.

## Достоверность и статус верификации

Каждый ответ реестра содержит `verification_status`:

| Значение | Описание |
| - | - |
| `VERIFIED` | Реестр нашёл совпадение, и данные были получены. |
| `FAILED` | Реестр нашёл совпадение, но получить данные не удалось (например, ответ был частичным). |
| `UNKNOWN` | Компанию не удалось найти ни в одном реестре. |

Используйте вместе с `is_from_registry`, чтобы строить собственную логику последующей обработки:

| `is_from_registry` | `verification_status` | Описание |
| - | - | - |
| true | VERIFIED | Полностью подтверждено по официальному реестру |
| true | FAILED | Частично: некоторые поля могут быть устаревшими или отсутствовать |
| false | UNKNOWN | Только данные, предоставленные пользователем; совпадения в реестре нет |

## Результаты перекрёстной проверки

Каждая перекрёстная проверка выполняется по отдельному полю и возвращает одно из значений:

* `MATCH`: предоставленные данные совпадают с данными реестра.
* `MISMATCH`: существенное расхождение. Отмечается как предупреждение.
* `NO_DATA`: одна из сторон была пустой, поэтому сравнение невозможно.

Расхождения видны для каждого поля при просмотре сессии в консоли.

## Что влияет на результат

Статус компании, страна регистрации, результаты AML-проверки и соответствие заявленным данным передаются в решение в виде тегов предупреждений для проверки по реестру и AML-скрининга.
Ваш сценарий определяет, одобряет, отправляет на проверку или отклоняет каждое предупреждение.
Сигналы и ключи сценария, которые ими управляют, описаны в разделе [оценка рисков](https://docs.didit.me/ru/business-verification/risk-assessment.md).

## Поддерживаемые страны

Покрытие зависит от страны. Разбивку по уровням для каждого региона смотрите в разделе [поддерживаемые страны](https://docs.didit.me/ru/business-verification/supported-countries.md).

## Следующие шаги

> [card] [Структура владения](https://docs.didit.me/ru/business-verification/ownership.md)
>
> Идентификация UBO и цепочки владения.

> [card] [Схема ответа](https://docs.didit.me/ru/business-verification/response-schema.md)
>
> Где каждое поле находится в payload.

> [card] [Поддерживаемые страны](https://docs.didit.me/ru/business-verification/supported-countries.md)
>
> Покрытие по регионам.


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