API перевірки IBAN для Python: валідація рахунків у скрипті
Оновлено 26.09.2026
Перевірка українського IBAN у Python це один запит `requests.get` до `https://dani.initask.com/v1/iban/{iban}`. Шлюз перевіряє довжину 29 знаків, контрольне число mod-97 і код банку за ISO 13616, а потім знаходить банк за МФО в довіднику НБУ. Скрипту лишається прочитати `valid` і, за потреби, текст помилок українською.
Приклад
```python import os, requests
r = requests.get( "https://dani.initask.com/v1/iban/UA213223130000026007233566001", headers={"Authorization": f"Bearer {os.environ['INITASK_KEY']}"}, timeout=10, ) body = r.json() print(r.headers["X-RateLimit-Remaining"], body["data"]) ```
Ключ у змінній середовища, таймаут обовʼязковий. Без ключа працює анонімний доступ на 100 запитів на добу з однієї IP-адреси.
Що повертається
Для прикладу відповідь каже, що рахунок коректний, МФО 322313, номер рахунку в банку 26007233566001, банк АТ «Укрексімбанк». Також приходить запис рахунку без пробілів і запис групами по чотири знаки.
Головне для скрипта поле `valid`: правда чи ні. Якщо ні, у `errors` лежить список причин українською. Поле `bank` містить обʼєкт банку з довідника НБУ або null, якщо МФО там не знайдено. Код обробки має враховувати обидва варіанти, інакше звернення до назви банку впаде на першому ж невідомому МФО.
Три види відповідей
| Ситуація | Код | Що в тілі | Що робить скрипт |
|---|---|---|---|
| рахунок коректний | 200 | valid: true | записує банк і МФО |
| рахунок з помилкою | 200 | valid: false і errors | записує причину |
| рядок довший за 34 знаки або зі сторонніми символами | 400 | error | позначає рядок як сміття |
Зверніть увагу: неправильний IBAN приходить як успішна відповідь. Скрипт, який вважає успіхом лише статус 200 і далі нічого не перевіряє, запише помилкові рахунки як правильні. Завжди читайте `valid`.
Після вичерпання ліміту приходить 429 із заголовком `Retry-After`: почекайте вказаний час і повторіть той самий рахунок.
Пакетна перевірка таблиці рахунків
Типова задача: є вивантаження довідника контрагентів з колонкою IBAN, треба знайти помилкові. Схема така. Читаєте рядки, прибираєте пробіли і дублікати рахунків, для кожного унікального IBAN робите запит, результат пишете в нову колонку: «коректний», «помилка: причина» або «не схоже на IBAN». Наприкінці зведення: скільки рахунків перевірено і скільки з помилками.
Дублікати прибирати варто: один рахунок часто стоїть у кількох рядках, а кожен запит рахується в ліміт. Відповіді на нашому боці кешуються на 1440 хвилин, проте ліміт від цього не змінюється.
Якщо в таблиці є колонка з назвою банку, яку вносили вручну, порівняйте її з назвою з відповіді: розбіжність часто означає, що рахунок переписали з іншого документа. Для великого довідника стежте за заголовком `X-RateLimit-Remaining`. Коли залишок закінчується, збережіть позицію і продовжіть після скидання ліміту, момент якого показує `X-RateLimit-Reset`.
Як оформити результат для людей
Бухгалтер чи фінансист, якому скрипт віддає результат, хоче бачити зрозумілу таблицю замість сирих відповідей. Корисні колонки: вихідний рахунок, рахунок без пробілів, висновок, причина помилки, назва банку і МФО. Рядки з помилками зручно винести на окремий аркуш, щоб їх можна було розібрати і виправити в довіднику. Підсумок нагорі аркуша відповідає на головне питання: скільки рахунків перевірено і скільки треба виправити.
Межі перевірки
Перевірка математична: вона ловить помилку в одній цифрі і майже всі перестановки сусідніх цифр. Стан рахунку знає лише банк. Скрипт може сказати, що рахунок записано правильно, і нічого не скаже про те, чи він відкритий.
Ліміти
| План | Запитів | Ціна, грн на місяць |
|---|---|---|
| Безкоштовний | 100 на добу | 0 |
| Старт | 10000 на місяць | 990 |
| Про | 100000 на місяць | 2990 |
Суміжні ендпоінти
Для власника рахунку з кодом ЄДРПОУ скрипт може одразу взяти картку компанії і перевірити, що вона працює. Для валютних сум у тому самому довіднику знадобиться курс НБУ на дату. Структура відповіді однакова в усіх ендпоінтах, тож функція запиту пишеться один раз.
Що робити
- Запустіть приклад з рахунком з документації.
- Змініть одну цифру і подивіться на `valid: false` і `errors`.
- Обробіть випадок, коли `bank` дорівнює null.
- Для таблиці приберіть дублікати і стежте за залишком ліміту.
- Повний опис у документації перевірки IBAN, тарифи на сторінці Ціни і ліміти.
Питання і відповіді
Як перевірити IBAN на Python?
Зробіть requests.get до https://dani.initask.com/v1/iban/{iban} з заголовком Authorization: Bearer КЛЮЧ і прочитайте поле valid. Для помилкового рахунку причини лежать у errors.
Чому неправильний IBAN повертає код 200?
Відповідь 200 з valid: false означає, що запит оброблено і рахунок перевірено. Код 400 приходить лише для рядка довшого за 34 знаки або зі сторонніми символами.
Що означає bank: null?
Банк з таким МФО не знайдено в довіднику НБУ. Скрипт має обробляти цей випадок окремо.