English | Русский | Українська | Srpski | Српски
Быстрый старт
Автоматическая генерация налогового отчета ППДГ-3Р (Налог на прирост капитала) и ПП ОПО (Налог на доходы от капитала) для пользователей Interactive Brokers в Сербии. Программа автоматически получает данные о транзакциях и создает готовый XML-файл для загрузки, конвертируя все цены в динары (RSD).
Если вы используете графический интерфейс, настройте свои данные (кнопка config) и для обновления данных и создания деклараций просто нажимайте кнопку Sync.
Если вы установили GUI + CLI то вы можете использовать как графический интерфейс (запускается как ibkr-porez без параметров)
так и командную строку - см. ниже.
Графический интерфейс и командная строка используют одну и ту же БД.
⚠️ При запущенном графическом интерфейсе не используйте командную строку, при одновременной работе они могут внести ошибки в БД.
Использование командной строки:
⚠️ Импорт необходим, только если у вас больше года истории транзакций в Interactive Brokers. Flex Query позволяет загрузить данные не более чем за последний год, поэтому более старые данных необходимо загрузить из полного экспорта в CSV файл ↗.
Быстро создать нужную декларацию
Если вы хотите быстро создать конкретную декларацию.
Загрузка последних данных (fetch) ↗
Загрузите созданный XML на портал ePorezi (раздел ППДГ-3Р).

Автоматическое создание деклараций
Если вы хотите автоматически получать все нужные декларации и вести учет их состояния (подана, оплачена).
Загрузка последних данных и создание деклараций (sync) ↗
English | Русский | Українська | Srpski | Српски
Установка
Инсталлятор (GUI + CLI)
Скачайте готовый инсталлятор со страницы релизов:
https://github.com/andgineer/ibkr-porez/releases
Инсталлятор устанавливает графическое приложение (GUI) и команду ibkr-porez для терминала (CLI).
macOS
Скачайте последний .pkg файл.
Поскольку инсталлятор не подписан сертификатом Apple, macOS заблокирует его при открытии.
“IBKR Porez” повреждён и не может быть открыт. Следует переместить его в корзину.
Не перемещайте в корзину. Вместо этого:
- Откройте Системные настройки → Конфиденциальность и безопасность
- В нижней части раздела «Безопасность» появится сообщение о заблокированном приложении — нажмите «Открыть всё равно»
- В следующем диалоге подтвердите открытие
Может потребоваться повторить эти шаги два раза:
- сначала при открытии скачанного установщика (
.dmg) - и затем при первом запуске установленного приложения из
/Applications
После этого приложение должно запускаться без предупреждений.
Windows
Скачайте последний .msi файл.
Поскольку инсталлятор не подписан цифровой подписью, Windows может показать предупреждения безопасности.
Если браузер блокирует загрузку (например, в Microsoft Edge):
- Откройте панель загрузок браузера (
Ctrl+J) - Найдите заблокированную загрузку
.msi - Нажмите «Сохранить» → «Показать больше» → «Сохранить всё равно»
При запуске инсталлятора Windows может показать сообщение Windows защитил ваш компьютер:
- Нажмите «Подробнее»
- Нажмите «Выполнить в любом случае»
Также может появиться окно контроля учетных записей с текстом Неизвестный издатель. Если файл загружен с официальной страницы релизов, нажмите «Да» для продолжения.
После установки:
- IBKR Porez появится в меню Пуск
- Команда
ibkr-porezбудет доступна в терминале (может потребоваться перезапуск терминала)
Скачать готовый бинарный файл
Также можно скачать бинарные файлы для вашей платформы со страницы релизов:
https://github.com/andgineer/ibkr-porez/releases
Архив содержит оба бинарных файла: ibkr-porez (CLI) и ibkr-porez-gui (GUI).
Распакуйте архив и поместите файлы в директорию, указанную в PATH.
Сборка из исходников
Если у вас установлен Rust:
cargo install ibkr-porez
English | Русский | Українська | Srpski | Српски
Использование
Настройка (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
English | Русский | Українська | Srpski | Српски
Interactive Brokers (IBKR)
Flex Web Service
- Performance & Reports > Flex Queries.
- Нажмите на значок Настроек (шестеренка) в “Flex Web Service Configuration”.
- Включите Flex Web Service.
- Сгенерируйте Токен (Generate Token).
- Важно: Скопируйте этот токен сразу. Вы не сможете увидеть его полностью снова.
- Установите срок действия (рекомендуется максимум - 1 год).
Flex Query
- Performance & Reports > Flex Queries.
- Нажмите +, чтобы создать новый Activity Flex Query.
- Name: например,
ibkr-porez-data. - Delivery Configuration (внизу страницы):
- Period: Выберите Last 365 Calendar Days.
- Format: XML.
Разделы для включения (Sections):
Включите следующие разделы и отметьте Select All (Выбрать все) для колонок.
Если вы никому не доверяете 8-) вместо Select All выберите как минимум поля, перечисленные в Обязательные колонки.
Trades - Сделки
Находится в разделе Trade Confirmations или Activity.
Обязательные колонки
SymbolDescriptionCurrencyQuantityTradePriceTradeDateTradeIDOrigTradeDateOrigTradePriceAssetClassBuy/Sell
Cash Transactions - Денежные транзакции
Обязательные колонки
TypeAmountCurrencyDateTime/DateSymbolDescriptionTransactionID
Сохраните и получите Query ID
Запишите Query ID (число, которое обычно отображается рядом с именем запроса в списке).
Вам понадобятся Token и Query ID для настройки ibkr-porez.
Документ подтверждения
Для Пункта 8 (Докази уз пријаву) налоговой декларации ППДГ-3Р вам потребуется PDF-отчет от брокера. Его надо прикрепить вручную на портале ePorezi после импорта XML.
Как скачать подходящий отчет:
- В IBKR перейдите в Performance & Reports > Statements > Activity Statement.
- Period: Выберите Custom Date Range.
- Укажите даты, соответствующие вашему налоговому периоду (например,
01-01-2024по30-06-2024для первого полугодия). - Нажмите Download PDF.
- На портале ePorezi, в разделе 8. Докази уз пријаву загрузите этот файл.
Экспорт всей истории (для команды import)
Если вам нужно загрузить историю транзакций за период более 1 года (что недоступно через Flex Web Service), экспортируйте даные в CSV:
- В IBKR перейдите в Performance & Reports > Statements > Activity Statement.
- Period: Выберите Custom Date Range и укажите весь период с момента открытия счета.
- Нажмите Download CSV.
- Этот файл можно использовать с командой import ↗.