Податковий календар на Python: строки за роллю скриптом
Оновлено 26.09.2026
Бухгалтерська фірма хоче щомісяця розсилати клієнтам план звітності, аналітик будує річний календар платежів компанії, розробник наповнює внутрішню систему нагадувань. Усім потрібні строки подання звітів і сплати податків для конкретного типу платника на конкретний місяць. Initask API повертає їх запитом `GET https://dani.initask.com/v1/deadlines` з параметрами `role` і `month`. На Python це кілька рядків з requests.
Базовий запит
```python import os, requests
r = requests.get( "https://dani.initask.com/v1/deadlines?role=fop-3&month=2026-11", headers={"Authorization": f"Bearer {os.environ['INITASK_KEY']}"}, timeout=10, ) body = r.json() print(r.headers["X-RateLimit-Remaining"], body["data"]) ```
Ключ зберігається у змінній середовища `INITASK_KEY`. Без ключа доступно 100 запитів на добу з однієї IP-адреси, для щомісячного скрипта цього вистачає з великим запасом.
Що в даних
Відповідь містить роль, місяць і перелік строків, упорядкований за датою. Для ФОП третьої групи на листопад 2026 серед строків є декларація платника єдиного податку 3 групи за III квартал зі строком 9 листопада і військовий збір за III квартал зі строком 19 листопада.
| Поле строку | Що означає |
|---|---|
| id | ідентифікатор строку |
| date | дата строку |
| title | назва |
| kind | report, pay або register |
| description | що зробити |
| norm | норма закону |
| url | сторінка строку |
| verify | чи варто звірити з календарем ДПС |
Ідентифікатор `id` стабільний, і за ним зручно відстежувати, чи строк уже оброблено: наприклад, чи надіслано нагадування клієнту. Дата вже врахувала перенесення з вихідного на наступний робочий день за п. 49.20 ПКУ.
Кілька ролей і річний календар
Компанія часто має кілька ролей одночасно: ТОВ, платник ПДВ, роботодавець. Скрипт робить запит для кожної ролі і обʼєднує строки за датою. Для річного календаря він проходить дванадцять місяців. Ролей девʼять, місяців дванадцять, тож повний календар на рік для всіх ролей займає обмежену кількість запитів, і його достатньо побудувати один раз.
Альтернатива для загального календаря: роль `all`, яка повертає всі строки місяця одним запитом. Далі скрипт може сам розкласти їх за типами платників.
Обробка помилок
| Код | Коли | Що робити у скрипті |
|---|---|---|
| 400 | невідома роль або місяць у форматі, відмінному від YYYY-MM | перевірити роль і формат місяця |
| 404 | рік поза календарем (зараз 2026 і 2027) | не запитувати роки поза календарем |
| 429 | вичерпано ліміт | зачекати час із заголовка Retry-After |
Помилка 404 для років після 2027 очікувана: календар охоплює 2026 і 2027 роки. Скрипт річного планування має враховувати це обмеження і не падати на ньому.
Строки з позначкою verify
Строки з `verify: true` варто звіряти з офіційним календарем ДПС: наприклад, коли строк припадає на свято під час воєнного стану. У прикладі така позначка стоїть біля сплати військового збору. Скрипт розсилки може відкладати нагадування про такі строки, доки бухгалтер не підтвердить дату вручну.
Звіт для клієнта з одного скрипта
Для бухгалтерської фірми найкорисніший результат скрипта це щомісячний лист клієнту з його строками. Скрипт бере ролі клієнта з вашої бази, отримує строки, відбирає звіти і платежі, які стосуються саме цього клієнта, і формує короткий перелік: дата, що зробити, посилання на пояснення. Для платежів бухгалтер може дописати суму. Такий лист клієнт отримує на початку місяця і менше питає про строки в месенджері.
Опис строку в полі `description` уже написаний для людини: наприклад, для декларації третьої групи там сказано, що ФОП додають до неї відомості про ЄСВ за себе. Його можна вставляти в лист дослівно, без переписування.
Кешування і ліміти
Шлюз кешує відповідь на 360 хвилин. Строки місяця змінюються рідко, тому скрипт може зберігати відповідь у файлі і оновлювати раз на тиждень.
| План | Запитів | Ціна, грн на місяць |
|---|---|---|
| Безкоштовний | 100 на добу | 0 |
| Старт | 10000 на місяць | 990 |
| Про | 100000 на місяць | 2990 |
Що робити
- Запустіть приклад для своєї ролі і поточного місяця.
- Обʼєднайте строки кількох ролей компанії в один перелік за датою.
- Відстежуйте оброблені строки за `id`, щоб не надсилати нагадування двічі.
- Строки з `verify: true` підтверджуйте вручну; види діяльності клієнтів перевіряйте через API КВЕД.
- Опис полів у документації податкового календаря, тарифи на сторінці Ціни і ліміти.
Питання і відповіді
Як отримати податкові строки в Python?
Запит requests.get до https://dani.initask.com/v1/deadlines з параметрами role і month і ключем у заголовку Authorization повертає перелік строків за датою.
Чому API повертає 404 для наступних років?
Календар зараз охоплює 2026 і 2027 роки, запит на інший рік повертає not_found.
Як отримати строки для кількох ролей?
Зробіть кілька запитів з різними role і обʼєднайте строки за датою або візьміть role=all.