Використання
Налаштування (config)
ibkr-porez config
Створення або зміна особистих даних і параметрів доступу до IBKR.
Вам буде запропоновано ввести:
- IBKR Flex Token: Отримання токена ↗
- IBKR Query ID: Створення Flex Query ↗
- Personal ID: JMBG / EBS
- Full Name: Ім’я та прізвище
- Address: Адреса реєстрації
- City Code: 3-значний код муніципалітету. Приклад:
223(Новий Сад). Код можна знайти в довіднику (дивіться колонку “Шифра”). Також код доступний у випадаючому списку на порталі ePorezi. - Phone: Телефон
- Email: Email
- Data Directory: Абсолютний шлях до папки з файлами даних (
transactions.json,declarations.json,rates.jsonтощо). За замовчуванням:ibkr-porez-dataу папці застосунку. - Output Folder: Абсолютний шлях до папки для збереження файлів із команд
sync,export,export-flex,report. За замовчуванням: папка Downloads вашої системи.
Отримання даних (fetch)
ibkr-porez fetch
Завантажує останні дані з IBKR і синхронізує курси валют із НБС (Національний банк Сербії).
Зберігає їх у локальне сховище.
Імпорт історичних даних (import)
ibkr-porez import /path/to/activity_statement.csv
Завантаження історії транзакцій старше 365 днів, які неможливо отримати через Flex Query (fetch).
Щоб створити файл із транзакціями на порталі Interactive Brokers, дивіться Експорт повної історії ↗
⚠️ Не забудьте після
importвиконатиfetch, щоб застосунок додав максимум деталей принаймні за останній рік до менш детальних даних, завантажених із CSV.
Логіка синхронізації (import + fetch)
Під час завантаження даних із CSV (import) і Flex Query (fetch) система надає пріоритет більш повним даним Flex Query:
- Дані Flex Query (
fetch) є джерелом правди. Вони перезаписують дані CSV за будь-які дати, що збігаються. - Якщо запис Flex Query збігається з CSV за змістом (Дата, Тікер, Ціна, Кількість), це вважається оновленням (заміною на офіційний ID).
- Якщо структура даних відрізняється (наприклад, спліт ордерів у Flex Query проти “склеєного” запису в CSV), старий запис CSV видаляється, а нові записи Flex Query додаються.
- Повністю ідентичні записи пропускаються.
Синхронізація даних і створення декларацій (sync)
ibkr-porez sync
Робить усе те саме, що й fetch:
- Завантажує останні транзакції з IBKR через Flex Query
- Синхронізує курси валют із НБС
Після цього створює всі необхідні декларації за останні 45 днів (якщо вони ще не були створені).
Далі ви можете Керувати створеними деклараціями.
💡 Якщо ви запустили
syncуперше і вона створила декларації, які ви вже подали до початку використання застосунку, ви можете швидко позначити їх усі як сплачені й прибрати з виводу list:ibkr-porez list --status submitted -1 | ibkr-porez pay
Перегляд статистики (stat)
ibkr-porez stat --year 2025
ibkr-porez stat --ticker AAPL
ibkr-porez stat --month 2025-01
Показує:
- Отримані дивіденди (у RSD)
- Кількість продажів (оподатковуваних подій)
- Оцінку реалізованого P/L (Капітальний дохід) (у RSD)
- Детальну розбивку за тікерами або місяцями (під час використання фільтрів)
Генерація податкового звіту (report)
ibkr-porez report
Якщо не вказати тип звіту та період, за замовчуванням генерується ППДГ-3Р за останнє повне півріччя.
- Створить
ppdg3r_XXXX_HY.xmlв Output Folder - Імпортуйте цей файл на портал Податкової адміністрації Сербії (ePorezi)
- Вручну завантажте в пункт 8 файл із Документ-підтвердження
Як вибрати інший тип декларації або період часу, дивіться в документації:
ibkr-porez report --help
Керування деклараціями
Після створення декларацій через команду sync ви можете переглядати їх, змінювати статус і експортувати для завантаження на податковий портал.
Список декларацій (list)
Показує список усіх декларацій із можливістю фільтрації за статусом.
# Показати активні декларації (за замовчуванням):
# draft + submitted + pending
ibkr-porez list
# Показати всі декларації
ibkr-porez list --all
# Фільтр за статусом
ibkr-porez list --status draft
ibkr-porez list --status submitted
ibkr-porez list --status pending
ibkr-porez list --status finalized
# Лише ID декларацій (для використання в пайпах)
ibkr-porez list --ids-only
ibkr-porez list --status draft -1
Приклад використання в linux-стилі:
# Відправити всі чернетки
ibkr-porez list --status draft -1 | ibkr-porez submit
Перегляд деталей декларації (show)
Показує детальну інформацію про конкретну декларацію.
ibkr-porez show <declaration_id>
Відображає:
- Тип декларації (PPDG-3R або PP OPO)
- Період декларації
- Статус (чернетка, подана, в очікуванні, завершена)
- Деталі транзакцій і розрахунків
- Прикріплені файли
Подання декларації (submit)
ibkr-porez submit <id> [<id> ...]
Позначає декларацію як подану (імпортовану на податковий портал).
Поведінка залежить від типу декларації:
PPDG-3Rпісляsubmitпереходить у статусpending(очікування рішення податкової щодо суми податку).PP OPOпісляsubmit:- переходить у
submitted, якщо є податок до сплати; - одразу переходить у
finalized, якщо податок до сплати0.
- переходить у
Оплата декларації (pay)
ibkr-porez pay <id> [<id> ...]
ibkr-porez pay <id> --tax 1234.56
Позначає декларацію як завершену (finalized) і зберігає дату оплати.
Опція --tax дозволяє одразу зафіксувати суму податку під час оплати, без окремого кроку assess.
Після цього вона зникне зі списку, який показує list (без --all).
Фіксація суми за рішенням податкової (assess)
# Записати офіційну суму податку за рішенням
ibkr-porez assess <declaration_id> --tax-due 1234.56
# Записати суму й одразу позначити як уже сплачену
ibkr-porez assess <declaration_id> --tax-due 1234.56 --paid
Команда потрібна насамперед для PPDG-3R, де суму податку визначає податкова після подання декларації.
Що робить команда:
- записує офіційну суму податку в метадані декларації;
- з
--paidодразу переводить декларацію вfinalized; - без
--paid:- якщо сума більша за нуль, залишає декларацію активною (
submitted) для подальшої оплати; - якщо сума дорівнює нулю, переводить декларацію в
finalized.
- якщо сума більша за нуль, залишає декларацію активною (
Експорт декларації (export)
ibkr-porez export <declaration_id>
ibkr-porez export <declaration_id> -o /path/to/output
Копіює XML і всі прикріплені файли (attach) в Output Folder або в каталог, вказаний у параметрах.
Відкат статусу декларації (revert)
# Відкотити до чернетки (за замовчуванням)
ibkr-porez revert <id> [<id> ...]
# Відкотити до поданої
ibkr-porez revert <id> [<id> ...] --to submitted
Відкочує статус декларації.
Прикріплення файлу до декларації (attach)
# Прикріпити файл
ibkr-porez attach <declaration_id> /path/to/file.pdf
# Видалити прикріплений файл
ibkr-porez attach <declaration_id> <file_id> --delete
ibkr-porez attach <declaration_id> --delete --file-id <file_id>
Прикріплює файл до декларації або видаляє прикріплений файл зі сховища декларацій.
Для збереження у сховищі декларацій використовується лише ім’я файлу (шлях відкидається), тому імена мають бути унікальними - інакше файл із тим самим ім’ям перезапише раніше завантажений файл з таким самим ім’ям навіть з іншого шляху.
💡 Прикріплені файли копіюються разом з XML декларації під час експорту (export)
Експорт Flex Query (export-flex)
ibkr-porez export-flex 2025-01-15
ibkr-porez export-flex 2025-01-15 -o /path/to/output.xml
ibkr-porez export-flex 2025-01-15 -o - # Вивід у stdout (для пайпів)
Експортує XML-файл Flex Query, отриманий під час fetch або sync, на вказану дату.
Приклад використання в linux-стилі:
ibkr-porez export-flex 2025-01-15 | ibkr-porez import