Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

English | Русский | Українська | Srpski | Српски

Быстрый старт

Автоматическая генерация налогового отчета ППДГ-3Р (Налог на прирост капитала) и ПП ОПО (Налог на доходы от капитала) для пользователей Interactive Brokers в Сербии. Программа автоматически получает данные о транзакциях и создает готовый XML-файл для загрузки, конвертируя все цены в динары (RSD).

Установите ibkr-porez ↗

Если вы используете графический интерфейс, настройте свои данные (кнопка config) и для обновления данных и создания деклараций просто нажимайте кнопку Sync.

Если вы установили GUI + CLI то вы можете использовать как графический интерфейс (запускается как ibkr-porez без параметров) так и командную строку - см. ниже.

Графический интерфейс и командная строка используют одну и ту же БД.

⚠️ При запущенном графическом интерфейсе не используйте командную строку, при одновременной работе они могут внести ошибки в БД.

Использование командной строки:

⚠️ Импорт необходим, только если у вас больше года истории транзакций в Interactive Brokers. Flex Query позволяет загрузить данные не более чем за последний год, поэтому более старые данных необходимо загрузить из полного экспорта в CSV файл ↗.

Быстро создать нужную декларацию

Если вы хотите быстро создать конкретную декларацию.

Загрузка последних данных (fetch) ↗

Создание отчета (report) ↗

Загрузите созданный XML на портал ePorezi (раздел ППДГ-3Р).

ППДГ-3Р

Автоматическое создание деклараций

Если вы хотите автоматически получать все нужные декларации и вести учет их состояния (подана, оплачена).

Загрузка последних данных и создание деклараций (sync) ↗

Управление декларациями ↗

English | Русский | Українська | Srpski | Српски

Установка

Инсталлятор (GUI + CLI)

Скачайте готовый инсталлятор со страницы релизов:

https://github.com/andgineer/ibkr-porez/releases

Инсталлятор устанавливает графическое приложение (GUI) и команду ibkr-porez для терминала (CLI).

macOS

Скачайте последний .pkg файл. Поскольку инсталлятор не подписан сертификатом Apple, macOS заблокирует его при открытии.

“IBKR Porez” повреждён и не может быть открыт. Следует переместить его в корзину.

Не перемещайте в корзину. Вместо этого:

  1. Откройте Системные настройки → Конфиденциальность и безопасность
  2. В нижней части раздела «Безопасность» появится сообщение о заблокированном приложении — нажмите «Открыть всё равно»
  3. В следующем диалоге подтвердите открытие

Может потребоваться повторить эти шаги два раза:

  • сначала при открытии скачанного установщика (.dmg)
  • и затем при первом запуске установленного приложения из /Applications

После этого приложение должно запускаться без предупреждений.

Windows

Скачайте последний .msi файл. Поскольку инсталлятор не подписан цифровой подписью, Windows может показать предупреждения безопасности.

Если браузер блокирует загрузку (например, в Microsoft Edge):

  1. Откройте панель загрузок браузера (Ctrl+J)
  2. Найдите заблокированную загрузку .msi
  3. Нажмите «Сохранить»«Показать больше»«Сохранить всё равно»

При запуске инсталлятора Windows может показать сообщение Windows защитил ваш компьютер:

  1. Нажмите «Подробнее»
  2. Нажмите «Выполнить в любом случае»

Также может появиться окно контроля учетных записей с текстом Неизвестный издатель. Если файл загружен с официальной страницы релизов, нажмите «Да» для продолжения.

После установки:

  • 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

  1. Performance & Reports > Flex Queries.
  2. Нажмите на значок Настроек (шестеренка) в “Flex Web Service Configuration”.
  3. Включите Flex Web Service.
  4. Сгенерируйте Токен (Generate Token).
    • Важно: Скопируйте этот токен сразу. Вы не сможете увидеть его полностью снова.
    • Установите срок действия (рекомендуется максимум - 1 год).

Flex Query

  1. Performance & Reports > Flex Queries.
  2. Нажмите +, чтобы создать новый Activity Flex Query.
  3. Name: например, ibkr-porez-data.
  4. Delivery Configuration (внизу страницы):
    • Period: Выберите Last 365 Calendar Days.
  5. Format: XML.

Разделы для включения (Sections):

Включите следующие разделы и отметьте Select All (Выбрать все) для колонок.

Если вы никому не доверяете 8-) вместо Select All выберите как минимум поля, перечисленные в Обязательные колонки.

Trades - Сделки

Находится в разделе Trade Confirmations или Activity.

Обязательные колонки
  • Symbol
  • Description
  • Currency
  • Quantity
  • TradePrice
  • TradeDate
  • TradeID
  • OrigTradeDate
  • OrigTradePrice
  • AssetClass
  • Buy/Sell

Cash Transactions - Денежные транзакции

Обязательные колонки
  • Type
  • Amount
  • Currency
  • DateTime / Date
  • Symbol
  • Description
  • TransactionID

Сохраните и получите Query ID

Запишите Query ID (число, которое обычно отображается рядом с именем запроса в списке).

Вам понадобятся Token и Query ID для настройки ibkr-porez.

Документ подтверждения

Для Пункта 8 (Докази уз пријаву) налоговой декларации ППДГ-3Р вам потребуется PDF-отчет от брокера. Его надо прикрепить вручную на портале ePorezi после импорта XML.

Как скачать подходящий отчет:

  1. В IBKR перейдите в Performance & Reports > Statements > Activity Statement.
  2. Period: Выберите Custom Date Range.
  3. Укажите даты, соответствующие вашему налоговому периоду (например, 01-01-2024 по 30-06-2024 для первого полугодия).
  4. Нажмите Download PDF.
  5. На портале ePorezi, в разделе 8. Докази уз пријаву загрузите этот файл.

Экспорт всей истории (для команды import)

Если вам нужно загрузить историю транзакций за период более 1 года (что недоступно через Flex Web Service), экспортируйте даные в CSV:

  1. В IBKR перейдите в Performance & Reports > Statements > Activity Statement.
  2. Period: Выберите Custom Date Range и укажите весь период с момента открытия счета.
  3. Нажмите Download CSV.
  4. Этот файл можно использовать с командой import ↗.