API курсу НБУ: офіційний курс гривні на будь-яку дату
Оновлено 26.09.2026
Initask API віддає офіційний курс гривні НБУ на задану дату для всіх валют або лише для потрібних кодів. Адреса `GET https://dani.initask.com/v1/rates`, параметри `date` і `cur` необовʼязкові. Курс подається за одну одиницю валюти, дата у відповіді це дата встановлення курсу. Архів доступний з 1996-01-06.
Для чого
Три найчастіші сценарії: перерахунок інвойсу у гривню на дату операції, курсові різниці в обліку і ціни в інтернет-магазині. Усім трьом потрібен саме офіційний курс на конкретну дату, а не комерційний курс банку.
Параметри
| Параметр | Де | Обовʼязковий | Опис |
|---|---|---|---|
| date | у запиті | ні | дата у форматі YYYY-MM-DD, від 1996-01-06 до завтра; без параметра береться сьогодні за Києвом |
| cur | у запиті | ні | коди валют ISO 4217 через кому, до 20 кодів; без параметра повертаються всі валюти |
Приклад запиту курсу долара і євро на 2026-09-25:
``` curl -H "Authorization: Bearer $INITASK_KEY" "https://dani.initask.com/v1/rates?date=2026-09-25&cur=USD,EUR" ```
Відповідь
| Поле | Значення |
|---|---|
| date | дата курсу |
| base | базова валюта, завжди UAH |
| rates | курси |
| rates[].cc | код валюти |
| rates[].name | назва валюти |
| rates[].rate | гривень за одну одиницю |
| rates[].r030 | цифровий код валюти |
У прикладі на 2026-09-25 курс євро 51.122, долара США 44.9729 гривні за одиницю. Цифрові коди 978 і 840 зручні, коли облікова система зберігає валюти числами.
Поле `rate` завжди гривень за одну одиницю, навіть для єни і форинта. Додатково ділити нічого не треба: те, що НБУ для деяких валют публікує курс за кілька одиниць, шлюз уже врахував.
Курсові різниці: на яку дату брати курс
Для обліку важлива саме дата операції. Інвойс від іноземного постачальника перераховується за курсом на дату оприбуткування, оплата за курсом на дату платежу, а різниця між ними і є курсовою різницею. Тому в обліковій системі курс запитують для кожної дати окремо, а не беруть сьогоднішній. Параметр `date` приймає будь-яку дату в межах архіву, і відповідь на минулу дату завжди однакова, тож її можна зберігати і не запитувати повторно. Для звіту за місяць зручно один раз завантажити курси на кожен день і тримати їх у своїй таблиці.
Коли зʼявляється курс на завтра
НБУ встановлює курс на наступний робочий день близько 15:30 за Києвом. Після цього запит із завтрашньою датою повертає новий курс. До цього часу такий запит дасть 404, і це нормальна відповідь по суті: курсу ще немає.
Помилки
| Код | Помилка | Коли |
|---|---|---|
| 400 | bad_request | дата у форматі, відмінному від YYYY-MM-DD, або поза межами |
| 404 | not_found | на дату немає курсів або серед них немає запитаних валют |
Друга причина 404 трапляється, коли в `cur` передано код валюти, яку НБУ не публікує. Перевірте код за ISO 4217.
Кеш, джерело і ліміти
Курс на минулу дату тримається в кеші добу, на сьогодні і завтра 10 хвилин. Джерело: Національний банк України, архів kurs.initask.com з 2020 року, раніші дати напряму з bank.gov.ua.
| План | Запитів | Ціна, грн на місяць |
|---|---|---|
| Безкоштовний | 100 на добу | 0 |
| Старт | 10000 на місяць | 990 |
| Про | 100000 на місяць | 2990 |
Ключ передається заголовком `Authorization: Bearer КЛЮЧ` або параметром `key`. Без ключа 100 запитів на добу з однієї IP-адреси. Залишок ліміту видно в заголовку `X-RateLimit-Remaining`, після вичерпання приходить 429 і `Retry-After`.
Для більшості задач безкоштовного ліміту вистачає: курс на день достатньо запитати раз і зберегти у себе. Кешування на вашому боці ще й робить систему незалежною від зовнішнього запиту в момент оформлення документа.
Що робити
- Відкрийте документацію курсу НБУ і зробіть запит без параметрів, щоб побачити всі валюти на сьогодні.
- Додайте `cur` з потрібними кодами, щоб відповідь була коротшою.
- Запитуйте курс на дату операції, а не на сьогодні, коли рахуєте курсові різниці.
- Зберігайте отриманий курс у своїй базі разом з датою, щоб не запитувати його повторно.
- Для перевірки рахунків у платежах подивіться перевірку IBAN, для реквізитів контрагента картку компанії за ЄДРПОУ.
Питання і відповіді
Як отримати курс НБУ через API?
Зробіть запит GET https://dani.initask.com/v1/rates з параметром date у форматі YYYY-MM-DD і за потреби cur з кодами валют. Без параметрів прийдуть усі валюти на сьогодні за Києвом.
Коли зʼявляється курс НБУ на завтра?
НБУ встановлює курс на наступний робочий день близько 15:30 за Києвом. Після цього запит із завтрашньою датою повертає новий курс.
Курс вказано за одну одиницю валюти?
Так, для всіх валют, включно з єною і форинтом: поле rate це гривень за одну одиницю.