Інтеграція підсказок ІНН/ОГРН/БІК через DaData на сайті
DaData — де-факто стандарт для автопідстановки реквізитів організацій на російських сайтах. Сервіс вміє за неповним ІНН або назвою організації повернути список компаній з повними реквізитами: ОГРН, КПП, юрадрес, ФІО директора, статус (дійсна/ліквідована). Аналогічно для банків — за БІК повертає наймення банку, кореспондентський рахунок, адресу.
Отримання токена
Реєстрація на dadata.ru, розділ «Особистий кабінет» → «API-ключі». Два ключі: Token (для запитів) та Secret (для деяких методів, наприклад стандартизації). Для підсказок достатньо тільки Token.
Безплатний тариф: 10 000 запитів на день. Для більшості форм реєстрації/заявок достатньо.
Підсказки по організаціям
Ендпоінт: POST https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/party
function suggestParty(string $query): array
{
$response = Http::withHeaders([
'Authorization' => 'Token ' . config('services.dadata.token'),
'Content-Type' => 'application/json',
])->post('https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/party', [
'query' => $query,
'count' => 5,
'status' => ['ACTIVE'], // тільки дійсні
]);
return $response->json('suggestions', []);
}
Відповідь для однієї організації:
{
"value": "ООО \"ЯНДЕКС\"",
"unrestricted_value": "ООО \"ЯНДЕКС\"",
"data": {
"inn": "7736207543",
"kpp": "770401001",
"ogrn": "1027700229193",
"name": {
"full_with_opf": "ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ \"ЯНДЕКС\""
},
"management": {
"name": "ВОЛОЖ АРКАДІЙ ЮРІЙОВИЧ",
"post": "ГЕНЕРАЛЬНИЙ ДИРЕКТОР"
},
"address": {
"value": "г Москва, ул Лева Толстого, д 16"
},
"state": {
"status": "ACTIVE"
}
}
}
При виборі компанії зі списку форма автозаповнюється: ІНН, КПП, ОГРН, юрадрес, ФІО директора — все з одної відповіді.
Пошук за точним ІНН або ОГРН
Коли користувач вводить цифри (ІНН — 10 або 12 знаків, ОГРН — 13), DaData розпізнає тип автоматично. Для точного запиту за ІНН:
$response = Http::withHeaders([
'Authorization' => 'Token ' . config('services.dadata.token'),
'Content-Type' => 'application/json',
])->post('https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/party', [
'query' => '7736207543', // точний ІНН
]);
$party = $response->json('suggestions.0.data');
Метод findById повертає розширену відповідь — включаючи історію зміни директора, всі КПП для головної організації тощо.
Підсказки по банках (БІК)
Ендпоінт аналогічний: /suggest/bank або /findById/bank.
$response = Http::withHeaders([
'Authorization' => 'Token ' . config('services.dadata.token'),
'Content-Type' => 'application/json',
])->post('https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/bank', [
'query' => '044525225',
]);
$bank = $response->json('suggestions.0.data');
// $bank['bic'] => '044525225'
// $bank['correspondent_account'] => '30101810400000000225'
// $bank['name']['payment'] => 'Ощебанк'
Фронтенд без бекенд-проксі
DaData підтримує прямі запити з браузера. Для цього в налаштуваннях кабінету потрібно додати домен у список дозволених джерел. Тоді запит йде напрямку з JS:
import { DaDataSuggestions } from 'react-dadata';
import 'react-dadata/dist/react-dadata.css';
<DaDataSuggestions
token="ВАШ_ТОКЕН"
type="party"
onChange={(suggestion) => {
setInn(suggestion?.data?.inn ?? '');
setKpp(suggestion?.data?.kpp ?? '');
setOgrn(suggestion?.data?.ogrn ?? '');
}}
/>
Бібліотека react-dadata — готовий компонент для React, не потрібно писати UI з нуля. Аналоги існують для Vue та ванільного JS.
Мінус прямих запитів з браузера: токен видимий у клієнтському коді. Якщо це неприйнятливо — робимо проксі на бекенді (контролер з кешуванням), який не розкриває ключ.
Кеширування
Підсказки по ІНН має смисл кешувати — дані організації змінюються рідко. Простий варіант на Laravel:
$data = Cache::remember("party_{$inn}", now()->addHours(24), function () use ($inn) {
return $this->fetchFromDadata($inn);
});
Кеш знижує витрату лімітів та прискорює повторні запити. Термін зберігання 24 години — розумний компроміс.
Типовий сценарій внедрення
Форма реєстрації юрлиці на сайті: поле «ІНН або назва компанії» з підсказками DaData. При виборі з списку інші поля (КПП, ОГРН, адреса, директор) заповняються автоматично. Це усуває помилки введення та скорочує час заповнення форми з 3–5 хвилин до 30 секунд.
Інтеграція займає 2–4 години: отримання токена, написання проксі-контролера, підключення компонента на фронтенді, тестування граничних випадків (ООО vs ІП, ліквідовані компанії).







