Claude Cursor Skill

tax-calendar-proactive

Проактивный налоговый штурман для ИП и малого ООО. По 3-5 фактам о бизнесе (форма, режим, примерный оборот, сотрудники) сам строит персональный налоговый календарь: что горит, когда срок, сколько примерно платить, и заранее предупреждает о приближении к НДС-порогу и лимиту УСН. Н

LLM Mart · 0 points · 0 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download ilyautov-small-business-ru-small-business-ru_skills_tax-calendar-proactive-044f539.zip · 15 KB
Part of ilyautov/small-business-ru — 34 skills

Install

skills CLI npx skills add https://github.com/ilyautov/small-business-ru/tree/main/small-business-ru/skills/tax-calendar-proactive
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install ilyautov-small-business-ru@llmmart
Git git clone https://github.com/ilyautov/small-business-ru.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole ilyautov/small-business-ru collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Налоговый штурман (проактивный)

Подготовлено для проверки вашим бухгалтером. Не является налоговой консультацией. Ставки и сроки актуальны на 2026 год. Перед уплатой сверяйтесь с действующими нормами и личным кабинетом ФНС.

Налоговая не присылает счёт. Срок просто наступает — и если ты его пропустил, прилетают пени, блокировка счёта и требование ровно тогда, когда денег нет. Для ИП жёстче вдвойне: фиксированные взносы (57 390 ₽ на 2026) и доп. 1% платятся, даже если дохода не было. А с 2026 добавился НДС-порог 20 млн ₽ — пробил его незаметно, и со следующего квартала ты плательщик НДС, ещё не зная об этом.

Ты — проактивный штурман по налогам для собственника малого бизнеса. Твоя работа — чтобы человек никогда не пропустил срок и не получил неожиданную сумму. Ты не справочник, который отвечает на вопрос. Ты сам смотришь на календарь, видишь, что приближается, и говоришь об этом первым — с конкретной суммой и датой.

Считаем кодом, не в уме — это деньги клиента. Калькулятор tax_calc.py сверен на контрольных точках: доход 8 млн ₽ → доп. 1% = 77 000 ₽; доход 40 млн ₽ → упор в годовой потолок 300 888 ₽; доход 0 → фикс 57 390 ₽ всё равно к уплате. Все ставки, сроки и лимиты — из выверенного на 2026 канона (RULES.md, разд. 4), а не из головы модели.

Принципы

  1. Zero-prompt. Не требуй от человека знать налоговую терминологию. Задай минимум простых вопросов, остальное выведи сам.
  2. Grounding обязателен. Каждую цифру (ставка, срок, лимит) бери ТОЛЬКО из раздела 4 RULES.md. Никогда не выдумывай. Если данных в каноне нет — пиши «уточните у бухгалтера», не угадывай.
  3. Проактивность. Всегда начинай с того, что ГОРИТ (ближайшие 60 дней), а не с полного списка. Сначала — «вот что важно сейчас».
  4. Суммы, а не только даты. «28 июля — аванс УСН» бесполезно. «28 июля — аванс УСН, примерно X ₽ при текущем темпе» — ценно.
  5. Предупреждай о траектории. Следи за приближением к порогам (НДС 20 млн, лимит УСН 490,5 млн) и говори об этом ЗАРАНЕЕ, а не когда уже поздно.

Шаг 1 — Собрать профиль (минимум вопросов)

Если профиль уже сохранён в памяти (## Контекст бизнеса / ## Налоговый профиль) — используй его, не переспрашивай. Иначе задай по одному, простым языком:

  1. «Вы ИП, ООО или самозанятый?» (форма бизнеса)
  2. «Какой налоговый режим — УСН „Доходы“ 6%, УСН „Доходы минус расходы“ 15%, или другой?» Если человек не знает — помоги определить по обороту и расходам.
  3. «Примерный оборот за прошлый год и ожидаемый в этом?» (грубо, для прикидки сумм и проверки порогов)
  4. «Есть наёмные сотрудники? Сколько?» (включает зарплатный блок)
  5. (для ИП) «Доход за прошлый год — больше или меньше 300 000 ₽?» (для расчёта доп. взноса 1%)

Если подключён ~~бухгалтерия или ~~платежи — подтяни оборот сам, спроси только подтверждение.

Покажи собранный профиль и предложи сохранить в память, чтобы не спрашивать снова.

Шаг 2 — Определить применимые налоги и сроки

На основе профиля собери релевантный набор из канона (раздел 4):

Для ИП на УСН без сотрудников:

  • Авансы УСН: 28.04 / 28.07 / 28.10, итоговая декларация ИП 27.04 (за прошлый год).
  • Фиксированные взносы ИП: 57 390 ₽, срок 28.12.
  • Доп. взнос 1% с дохода свыше 300 000 ₽: срок 01.07 следующего года, максимум 321 818 ₽.
  • Напоминание: на УСН «Доходы» без работников налог уменьшается на взносы до 100%.

Для ИП/ООО с сотрудниками — добавь зарплатный блок:

  • НДФЛ и взносы через ЕНП: уведомления 3 и 25 числа, уплата 5 и 28 числа.
  • РСВ, 6-НДФЛ, ЕФС-1 — по срокам из канона (раздел 4.8).
  • Льгота МСП 15% — только приоритетные отрасли (раздел 4.6), не применяй автоматически.

Для самозанятого (НПД): налог 4%/6%, уплата ежемесячно до 28 числа, лимит 2,4 млн ₽/год. Предупреди при приближении к лимиту.

Единый механизм: уплата налогов (ЕНП) — до 28 числа, уведомления — до 25 числа.

Шаг 3 — Расчёт сумм (что можешь — посчитай, что не можешь — запроси)

  • Авансы УСН «Доходы»: доход за период × 6% − уплаченные взносы (для ИП без работников). Если дохода за период нет — спроси или оцени по темпу.
  • Доп. 1% ИП: (доход за год − 300 000) × 1%, не более 321 818 ₽.
  • Фикс. взносы: 57 390 ₽ (фиксировано).
  • Всегда показывай формулу и допущение: «при доходе X за период → аванс ≈ Y ₽». Человек должен видеть, из чего сумма.

Шаг 4 — Проверка порогов (проактивные предупреждения)

  • НДС-порог 20 млн ₽ (главное на 2026): если оборот приближается к 20 млн — предупреди: «При обороте X вы в Z млн от НДС-порога. Если пробьёте 20 млн — со следующего квартала станете плательщиком НДС (ставка 5% / 7% / 22%). Стоит заранее обсудить с бухгалтером выбор ставки.»
  • Лимит УСН 490,5 млн ₽: предупреди при приближении — иначе слёт с УСН.
  • Лимит НПД 2,4 млн ₽: для самозанятого — предупреди заранее, чтобы успел перейти на ИП.

Шаг 5 — Вывод: сначала что горит

Единый формат killer-карточки (общий для counterparty-guard / tax-calendar-proactive / cross-source-verify): шапка {эмодзи} {что} — на {дата} → вердикт → Почему:/буллеты → действие (Следующий шаг:) → футер Что проверено: (источник + дата + tier) и Что НЕ проверено:. Один узнаваемый вид во всех стеках (markdown, без host-specific вёрстки).

Формат вывода — всегда от срочного к дальнему:

🧭 Налоговый штурман — [профиль одной строкой] — на [дата]

🔴 ГОРИТ (ближайшие 30 дней):
  • [дата] — [налог], ≈ [сумма] ₽ — [короткое пояснение/формула]

🟡 СКОРО (30-60 дней):
  • [дата] — [налог], ≈ [сумма] ₽

⚠️ НА ГОРИЗОНТЕ (предупреждения о порогах):
  • [предупреждение о НДС-пороге / лимите УСН / лимите НПД]

📅 Дальше в году:
  • [дата] — [налог]
  • ...

Следующий шаг: [одно конкретное действие]

Что проверено: ставки/сроки — канон RULES.md (2026); суммы — tax_calc.py.
Что НЕ проверено: фактический доход/расход за период — со слов клиента / нужна выгрузка.

Заверши предложением: «Хотите, поставлю напоминание за N дней до каждого срока?» (если доступны напоминания/расписание).

Пример (иллюстративный, профиль условный)

Профиль: ИП на УСН «Доходы» 6%, без сотрудников, оборот ~8 млн ₽/год. Дата: 15.06.2026. Вопроса не было — штурман выдаёт сам:

🧭 Налоговый штурман — ИП, УСН 6%, без работников, ~8 млн ₽/год — на 15.06.2026

🔴 ГОРИТ (30 дней):
  • 01.07 — доп. взнос 1% за 2025: (8 000 000 − 300 000) × 1% ≈ 77 000 ₽

🟡 СКОРО (30–60 дней):
  • 28.07 — аванс УСН за II кв.: доход за период × 6% − уплаченные взносы

⚠️ НА ГОРИЗОНТЕ:
  • При 8 млн ты в ~12 млн от НДС-порога (20 млн). Запас есть — но держим в уме.

📅 Дальше в году: 28.10 — аванс УСН III кв.; 28.12 — фикс. взносы 57 390 ₽.

Следующий шаг: отложить ~77 000 ₽ к 01.07. Поставить напоминание за 7 дней?

Что проверено: ставки/сроки — канон RULES.md (2026); суммы — tax_calc.py.
Что НЕ проверено: фактический доход за период — со слов клиента, нужна выгрузка.

Суть: человек ничего не спрашивал — штурман сам поднял горящий доп. 1% с уже посчитанной суммой.

Точки подтверждения (approval gates)

  • Ничего не платит и не подаёт сам. Только считает, напоминает, готовит. Любая уплата/подача — действие человека.
  • Каждая сумма — оценка, не факт. Помечай «≈» и показывай допущение.
  • Не даёт налоговую консультацию. При сложных вопросах (выбор ставки НДС, переквалификация, спорные расходы) — направляй к бухгалтеру.
  • Grounding. Если для расчёта не хватает выверенной нормы из канона — не выдумывай, запроси или направь к бухгалтеру.

Точные вычисления (скрипт)

Суммы НЕ считай в уме — это деньги клиента. Запускай калькулятор:

python3 scripts/tax_calc.py --year 2026 --rejim usn6 --dohod 8000000 --rabotniki 0

Скрипт (stdlib, ставки из канона) считает: фикс. взнос, доп. 1% с потолком по году, налог УСН с уменьшением на взносы (без работников на свои взносы до 100% налога; с работниками на свои + за работников через --vznosy-rabotniki, но не более 50% налога), флаг НДС-порога (20 млн) и лимита УСН, ловушку нулевого дохода. Если есть работники, но взносы за них не переданы, скрипт считает вычет только по своим взносам и предупреждает. Проверено: подтверждает ручные расчёты (8 млн → доп.1% 77 000; 40 млн → упор в потолок 300 888; доход 0 → фикс 57 390 всё равно). Результат — оценка для бухгалтера, не факт.

Reference

  • RULES.md (раздел 4) — прозаический канон ставок, сроков, лимитов для модели. При расхождении — приоритет у канона.
  • scripts/tax_data.py — числовой реестр-канон констант (вендор-копия finance-ru/nalog-ru, провенанс по НПА); из него калькулятор берёт цифры.
  • scripts/tax_calc.py — калькулятор взносов/аванса УСН/порогов.

Changelog

  • 0.2.2 (16.06.2026) — налоговые константы калькулятор берёт из единого реестра-канона tax_data.py (вендор-копия finance-ru/nalog-ru, провенанс по НПА), цифры не расходятся между паками; в вывод добавлены источник цифр и проактивная свежесть (порог НДС 2027). Для глубокого финучёта роутер направляет в пак finance-ru.
  • 0.2.1 (16.06.2026) — единый формат killer-карточки (шапка с датой → буллеты по срочности → Следующий шаг → футер Что проверено/НЕ проверено), общий с counterparty-guard и cross-source-verify. Калькулятор: точный вычет для УСН-6 с работниками (--vznosy-rabotniki, потолок 50%), покрыт eval.
  • 0.2 (15.06.2026) — упаковка: pitch от боли (срок наступает сам, пени/блокировка), пруф-callout (сверка калькулятора + канон 2026), worked-пример проактивной выдачи. Ссылки на канон выправлены с LOCALIZATION-GUIDE на RULES.md.
  • 0.1 — проактивный календарь по профилю, расчёт сумм скриптом, проверка порогов НДС/УСН/НПД.
Files (small-business-ru)
  • reference
    • test-cases.md 4.3 KB
      # Тест-набор: налоговый штурман (регрессия)
      
      Прогонять при любой правке скилла и обязательно после переноса на другой двигатель (GigaChat/Yandex/T-lite).
      Все ожидаемые цифры — из `RULES.md` раздел 4 (выверено на 2026). Дата отсчёта примеров: 15.06.2026.
      
      | # | Профиль | Что проверяет | Ожидаемый результат |
      |---|---|---|---|
      | A | ИП, УСН «Доходы» 6%, без работников, доход 2025 = 8 млн | Базовый расчёт | Доп. 1% за 2025 = (8 000 000 − 300 000) × 1% = **77 000 ₽** (< потолка 300 888). Фикс. 2026 = 57 390 ₽. НДС нет (< 20 млн). |
      | B | ИП, УСН «Доходы», доход = **0** | Ловушка нулевого дохода | Аванс УСН = 0. Доп. 1% = 0. **Фикс. взнос 57 390 ₽ ВСЁ РАВНО к уплате** (28.12). Подсказать: закрытие ИП / переход на НПД / основания освобождения. Нулевую декларацию подать. |
      | C | ИП/ООО, УСН «Доходы», темп 2026 → ~19,5 млн | Предупреждение перед НДС-порогом | НДС пока нет (≤ 20 млн), но **проактивное предупреждение**: «осталось ~0,5 млн до НДС-порога, со следующего квартала после пробития 20 млн — НДС». Доп. 1% (прогноз) ≈ 192 000 ₽. |
      | D | ИП/ООО, УСН «Доходы», доход 2025 = **21 млн** | Пробитие НДС-порога | **Плательщик НДС с 2026** (> 20 млн). Красный флаг: выбор ставки 5% (без вычетов, диапазон 20–272,5 млн) vs 22% (с вычетами) → к бухгалтеру. Доп. 1% за 2025 = (21 000 000 − 300 000) × 1% = **207 000 ₽** (< 300 888). |
      | E | ИП, УСН «Доходы», доход 2025 = **40 млн** | Упор в потолок взноса 1% | Сырой 1% = (40 000 000 − 300 000) × 1% = 397 000 ₽, **но потолок за 2025 = 300 888 ₽ → к уплате 300 888 ₽**, не 397 000. Штурман обязан капнуть на потолок. НДС: плательщик, ставка 5%. УСН-лимит 490,5 млн — ОК. |
      | F | ИП, УСН «Доходы минус расходы» 15%, доход 10 млн, расходы 7 млн | Другая база 1% + минимальный налог | Налог УСН = (10−7) млн × 15% = 450 000 ₽; мин. налог 1% от доходов = 100 000 < 450 000 → платится 450 000. Доп. 1% = (10 000 000 − 7 000 000 − 300 000) × 1% = **27 000 ₽** (упрощённо). ⚠️ С 2026 база = за минусом взносов ОПС/ОМС → точный расчёт к бухгалтеру. НДС нет (< 20 млн). |
      
      ## Известные грабли (must-catch для скилла)
      
      1. **Нулевой доход ≠ нулевые обязательства** — фикс. взнос платится всегда (профиль B). Самая частая ошибка предпринимателя.
      2. **Потолок 1% привязан к году** — 277 571 (2024) / 300 888 (2025) / 321 818 (2026). Не применять потолок не того года (профиль E).
      3. **База 1% зависит от режима** — «Доходы» считает с дохода, «Д−Р» с (доходы − расходы) (профиль F vs A).
      4. **Режим «Д−Р» с 2026** — расходы за минусом взносов ОПС/ОМС, не выдумывать точную сумму, направлять к бухгалтеру.
      5. **НДС-порог 20 млн** — предупреждать ЗАРАНЕЕ (профиль C), не постфактум.
      6. **Фикс. взнос привязан к году** — 53 658 ₽ (2025) / 57 390 ₽ (2026), срок 28.12. ✅ выверено.
      7. **Неполный год ИП** — взносы пропорционально дням регистрации (в наборе не покрыт — добавить кейс G).
      
  • scripts
    • tax_calc.py 12.3 KB
      #!/usr/bin/env python3
      # -*- coding: utf-8 -*-
      """
      tax_calc.py — точный калькулятор налогов ИП/УСН РФ. Считает КОДОМ, не «в уме»
      (числа = реальные деньги клиента, ошибка дороже всего). Только stdlib.
      
      Ставки/потолки берутся из реестра-канона tax_data.py (вендор-копия
      finance-ru/nalog-ru, провенанс по НПА); значения совпадают с RULES.md раздел 4 (2026).
      НЕ налоговая консультация — результат проверяет бухгалтер.
      
      Запуск:
          python3 tax_calc.py --year 2026 --rejim usn6 --dohod 8000000 [опции]
      
      Опции:
          --year       2025 | 2026 (год, за который считаем)
          --rejim      usn6 (Доходы 6%) | usn15 (Доходы-расходы 15%)
          --dohod      годовой доход, ₽
          --rashod     расходы за год (для usn15), ₽
          --rabotniki  есть ли работники: 0/1 (влияет на уменьшение аванса: без=100%, с=50%)
          --vznosy-uplacheno  сколько взносов «за себя» уже уплачено, ₽ (по умолчанию 0).
                              На вычет НЕ влияет (с 2025 фикс. взносы уменьшают аванс
                              начислением), но уменьшает «взносы_к_доплате» и «итого_к_доплате»
          --vznosy-rabotniki  страховые взносы за работников за период, ₽ (usn6 с работниками:
                              входят в вычет вместе со своими, общий потолок 50% налога)
      """
      import sys, json, argparse
      
      # --- КОНСТАНТЫ ---
      # Цифры 2026 берутся из единого канона tax_data.py (вендор-копия реестра Никиты
      # Утова с привязкой к НПА и провенансом) — чтобы налоговые цифры не расходились
      # между паками семьи. Историю 2024/2025 держим локально (в каноне только 2026).
      import os
      sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
      
      # Зеркало канона на случай, если tax_data.py недоступен. Сверяется с каноном
      # в eval (run_eval.py, проверка mirror-sync) — при обновлении канона CI упадёт,
      # пока зеркало не обновят вместе с ним.
      _MIRROR_2026 = {"fix": 57390, "cap": 321818, "porog_1pct": 300_000,
                      "nds_porog": 20_000_000, "usn_limit": 490_500_000}
      try:
          import tax_data as _td
          _C2026 = {
              "fix": _td.get("ip_fixed_vznosy"),       # 57390
              "cap": _td.get("ip_1pct_cap"),           # 321818
              "porog_1pct": _td.get("ip_1pct_threshold"),       # 300000
              "nds_porog": _td.get("usn_nds_exempt_threshold"), # 20_000_000
              "usn_limit": _td.get("usn_income_limit"),         # 490_500_000
          }
          _CANON = "tax_data.py (канон finance-ru/nalog-ru)"
      except Exception:  # канон недоступен — зеркало тех же выверенных значений
          _C2026 = dict(_MIRROR_2026)
          _CANON = "встроенное зеркало канона (tax_data.py не найден)"
      
      # Ставки из НК РФ (стабильные, в канон tax_data не вынесены):
      USN6_RATE = 0.06        # УСН «Доходы»
      USN15_RATE = 0.15       # УСН «Доходы минус расходы»
      USN_MIN_RATE = 0.01     # минимальный налог УСН-15, % от доходов
      EXTRA_1PCT_RATE = 0.01  # доп. взнос ИП с дохода свыше порога
      
      FIX_VZNOS = {2024: 49500, 2025: 53658, 2026: _C2026["fix"]}     # фикс. взносы ИП «за себя»
      CAP_1PCT  = {2024: 277571, 2025: 300888, 2026: _C2026["cap"]}   # потолок доп. взноса 1% по году
      NDS_POROG = _C2026["nds_porog"]   # порог НДС для УСН (доход > → плательщик НДС)
      USN_LIMIT = _C2026["usn_limit"]   # лимит дохода для применения УСН (2026)
      POROG_1PCT = _C2026["porog_1pct"] # доход, свыше которого считается доп. 1%
      
      def calc(year, rejim, dohod, rashod, rabotniki, vznosy_uplacheno, vznosy_rabotniki=0):
          warn = []
          if dohod < 0:
              return {"ошибка": f"доход не может быть отрицательным (получено {dohod})"}
          if rashod < 0:
              return {"ошибка": f"расход не может быть отрицательным (получено {rashod})"}
          if vznosy_uplacheno < 0 or vznosy_rabotniki < 0:
              return {"ошибка": "взносы не могут быть отрицательными"}
          if rabotniki not in (0, 1):
              return {"ошибка": f"rabotniki: 0 | 1 (получено {rabotniki})"}
          if year not in FIX_VZNOS:
              return {"ошибка": f"нет выверенных ставок за {year} (есть 2024-2026)"}
      
          fix = FIX_VZNOS[year]
          if year != 2026:
              warn.append(f"пороги НДС/лимита УСН в расчёте — из канона 2026; для {year} сверьте пороги с бухгалтером")
      
          # доп. взнос 1%
          if rejim == "usn6":
              baza_1pct = max(0, dohod - POROG_1PCT)
          elif rejim == "usn15":
              baza_1pct = max(0, dohod - rashod - POROG_1PCT)
              warn.append("usn15: с 2026 база 1% — за минусом взносов ОПС/ОМС; формула упрощена, уточнить у бухгалтера")
          else:
              return {"ошибка": "rejim: usn6 | usn15"}
          vznos_1pct_raw = round(baza_1pct * EXTRA_1PCT_RATE)
          cap = CAP_1PCT[year]
          vznos_1pct = min(vznos_1pct_raw, cap)
          if vznos_1pct_raw > cap:
              warn.append(f"доп.1% упёрся в потолок {cap:,} ₽ за {year} (сырой расчёт {vznos_1pct_raw:,})".replace(",", " "))
      
          vznosy_vsego = fix + vznos_1pct
      
          # налог УСН
          if rejim == "usn6":
              nalog_do_vycheta = round(dohod * USN6_RATE)
              # уменьшение на взносы (с 2025 фикс. взносы уменьшают аванс независимо от факта уплаты):
              #  - без работников: на свои взносы (фикс + 1%) до 100% налога;
              #  - с работниками: на свои + за работников, но не более 50% налога.
              if rabotniki == 0:
                  vychet = min(vznosy_vsego, nalog_do_vycheta)
              else:
                  deductible = vznosy_vsego + vznosy_rabotniki
                  predel = round(nalog_do_vycheta * 0.5)
                  vychet = min(deductible, predel)
                  if vznosy_rabotniki == 0:
                      warn.append("указаны работники, но взносы за них = 0 — вычет посчитан только по своим взносам; если платите зарплаты, добавьте --vznosy-rabotniki для точного расчёта")
              nalog_k_uplate = max(0, nalog_do_vycheta - vychet)
          else:  # usn15
              baza = max(0, dohod - rashod)
              if rashod > dohod:
                  warn.append(f"расходы ({rashod:,} ₽) превышают доходы ({dohod:,} ₽) — убыток; налоговая база 0, но минимальный налог 1% от доходов платится всё равно".replace(",", " "))
              nalog_raschet = round(baza * USN15_RATE)
              min_nalog = round(dohod * USN_MIN_RATE)
              nalog_k_uplate = max(nalog_raschet, min_nalog)
              nalog_do_vycheta = nalog_raschet
              vychet = 0
              if min_nalog > nalog_raschet:
                  warn.append(f"сработал минимальный налог 1% от доходов ({min_nalog:,} ₽ > расчётного {nalog_raschet:,})".replace(",", " "))
      
          # НДС-порог
          nds = None
          if dohod > NDS_POROG:
              nds = f"⚠️ доход {dohod:,} ₽ > порога {NDS_POROG:,} ₽ → плательщик НДС (ставки 5/7/22%, выбор с бухгалтером)".replace(",", " ")
          else:
              ost = NDS_POROG - dohod
              if ost < 5_000_000:
                  nds = f"приближение к НДС-порогу: осталось {ost:,} ₽ до 20 млн".replace(",", " ")
      
          if dohod > USN_LIMIT:
              warn.append(f"⚠️ доход превысил лимит УСН {USN_LIMIT:,} ₽ → слёт с УСН на ОСНО".replace(",", " "))
      
          if dohod == 0:
              warn.append(f"доход 0, но фикс. взнос {fix:,} ₽ платится ВСЁ РАВНО (пока ИП открыт)".replace(",", " "))
      
          # уже уплаченные взносы «за себя»: на вычет не влияют (с 2025 уменьшение —
          # начислением), но остаток к доплате обязан их учитывать
          vznosy_k_doplate = max(0, vznosy_vsego - vznosy_uplacheno)
          if vznosy_uplacheno > vznosy_vsego:
              warn.append(f"взносов уплачено ({vznosy_uplacheno:,} ₽) больше, чем начислено ({vznosy_vsego:,} ₽) — переплата, сверьте с ЛК ФНС".replace(",", " "))
      
          def rub(x): return f"{x:,} ₽".replace(",", " ")
          return {
              "год": year, "режим": rejim, "доход": rub(dohod),
              "фикс_взнос": rub(fix),
              "доп_взнос_1пр": rub(vznos_1pct),
              "взносы_всего": rub(vznosy_vsego),
              "взносы_уплачено": rub(vznosy_uplacheno),
              "взносы_к_доплате": rub(vznosy_k_doplate),
              "налог_усн_до_вычета": rub(nalog_do_vycheta),
              "уменьшение_на_взносы": rub(vychet),
              "налог_усн_к_уплате": rub(nalog_k_uplate),
              "итого_налоги_взносы": rub(nalog_k_uplate + vznosy_vsego),
              "итого_к_доплате": rub(nalog_k_uplate + vznosy_k_doplate),
              "ндс": nds,
              "предупреждения": warn,
              "_источник_цифр": _CANON,
              "_свежесть": _freshness_note(year),
              "_дисклеймер": "не налоговая консультация; сверьте с бухгалтером и ЛК ФНС; ставки на " + str(year),
          }
      
      
      def _freshness_note(year):
          """Проактивно: известные плановые изменения налоговых порогов (из канона tax_data)."""
          try:
              if _td.stale("usn_nds_exempt_threshold", year + 1):
                  nv = _td.current_value("usn_nds_exempt_threshold", year + 1)
                  return f"порог НДС на УСН меняется со следующего года на {nv:,} ₽ — учтите заранее".replace(",", " ")
          except Exception:
              pass
          return None
      
      def main():
          p = argparse.ArgumentParser()
          p.add_argument("--year", type=int, default=2026)
          p.add_argument("--rejim", default="usn6")
          p.add_argument("--dohod", type=float, required=True)
          p.add_argument("--rashod", type=float, default=0)
          p.add_argument("--rabotniki", type=int, default=0)
          p.add_argument("--vznosy-uplacheno", type=float, default=0)
          p.add_argument("--vznosy-rabotniki", type=float, default=0,
                         help="страховые взносы за работников за период, ₽ (для usn6 с работниками: входят в вычет, потолок 50%)")
          p.add_argument("--json", action="store_true")
          a = p.parse_args()
          res = calc(a.year, a.rejim, int(a.dohod), int(a.rashod), a.rabotniki, int(a.vznosy_uplacheno), int(a.vznosy_rabotniki))
          if "ошибка" in res:
              print(json.dumps(res, ensure_ascii=False) if a.json else f"ошибка: {res['ошибка']}",
                    file=sys.stderr)
              sys.exit(1)
          if a.json:
              print(json.dumps(res, ensure_ascii=False, indent=2))
          else:
              for k, v in res.items():
                  if k == "предупреждения":
                      for w in v: print("  ⚠️", w)
                  elif v is not None and not k.startswith("_"):
                      print(f"{k:24}: {v}")
              print(res["_дисклеймер"])
      
      if __name__ == "__main__":
          main()
      
    • tax_data.py 9.7 KB
      #!/usr/bin/env python3
      # -*- coding: utf-8 -*-
      # ВЕНДОР-КОПИЯ канона из finance-ru/skills/nalog-ru/scripts/tax_data.py (пак Никиты Утова).
      # Единый источник правды по налоговым цифрам РФ для всех паков RU Business Packs.
      # НЕ форкать здесь: правки вносить в канон finance-ru и синхронизировать сюда.
      """
      tax_data — ЕДИНЫЙ ИСТОЧНИК ПРАВДЫ для налоговых констант РФ + их провенанс.
      
      Зачем: цифры не разбросаны по calc_*.py и references/*.md, а собраны здесь с
      привязкой к НПА (первоисточнику) и проверочной ссылке. verify_data.py сверяет,
      что код не разошёлся с реестром, и сигналит, когда цифра пора пересверить.
      
      Поля записи:
        value, unit, year   — значение и период
        npa                 — ПЕРВОИСТОЧНИК: статья НК / номер ФЗ / постановление
        src_tier            — "НПА"  : ссылка ведёт на официальный текст акта
                              "обзор": ссылка на разбор (НПА указан в npa, текст сверь)
        source              — URL для проверки
        verified, tier      — дата веб-сверки; online/reference
        code_const          — "<модуль>.<ИМЯ>": с чем сверяется код
        future              — известное расписание изменений {год: значение}
      """
      
      SCHEMA = "tax-data/v2"
      DATA_YEAR = 2026
      
      TAX_DATA = {
          "ip_fixed_vznosy": {
              "value": 57390, "unit": "руб/год", "year": 2026,
              "npa": "НК РФ ст.430 п.1.2", "src_tier": "НПА",
              "source": "https://www.consultant.ru/document/cons_doc_LAW_28165/c03008a92ccba28226abe4034e9aa43e3a2ffeb4/",
              "verified": "2026-06-16", "tier": "online",
              "code_const": "calc_vznosy.FIX_IP_2026",
              "note": "Срок 28.12.2026. Суммы по годам прямо в ст.430 (2025: 53 658).",
          },
          "ip_1pct_cap": {
              "value": 321818, "unit": "руб/год", "year": 2026,
              "npa": "НК РФ ст.430 п.1.2 (потолок доп. взноса)", "src_tier": "НПА",
              "source": "https://www.consultant.ru/document/cons_doc_LAW_28165/c03008a92ccba28226abe4034e9aa43e3a2ffeb4/",
              "verified": "2026-06-16", "tier": "online",
              "code_const": "calc_vznosy.EXTRA_CAP_2026",
              "note": "Макс всего за год = 57 390 + 321 818 = 379 208.",
          },
          "ip_1pct_threshold": {
              "value": 300000, "unit": "руб", "year": 2026,
              "npa": "НК РФ ст.430 п.1 (1% сверх 300 тыс)", "src_tier": "НПА",
              "source": "https://www.consultant.ru/document/cons_doc_LAW_28165/c03008a92ccba28226abe4034e9aa43e3a2ffeb4/",
              "verified": "2026-06-16", "tier": "online",
              "code_const": "calc_vznosy.EXTRA_THRESHOLD",
              "note": "Порог стабилен много лет.",
          },
          "emp_base_limit": {
              "value": 2979000, "unit": "руб/год", "year": 2026,
              "npa": "Постановление Правительства РФ от 31.10.2025 N 1705", "src_tier": "НПА",
              "source": "https://www.consultant.ru/document/cons_doc_LAW_518016/",
              "verified": "2026-06-16", "tier": "online",
              "code_const": "calc_vznosy.BASE_LIMIT_2026",
              "note": "Единая предельная база. Сверх — тариф 30%→15.1% (в коде упрощено, см. assumptions).",
          },
          "mrot": {
              "value": 27093, "unit": "руб/мес", "year": 2026,
              "npa": "ФЗ от 28.11.2025 N 429-ФЗ (ст.1 ФЗ-82)", "src_tier": "НПА",
              "source": "https://www.consultant.ru/law/ref/mrot/2026/",
              "verified": "2026-06-16", "tier": "online",
              "code_const": "calc_vznosy.MROT_2026",
              "note": "С 01.01.2026. 1.5×МРОТ = 40 639.5 — порог МСП-тарифа.",
          },
          "nds_general_rate": {
              "value": 0.22, "unit": "доля", "year": 2026,
              "npa": "НК РФ ст.164 п.3 (ред. ФЗ от 28.11.2025 N 425-ФЗ)", "src_tier": "обзор",
              "source": "https://www.buhgalteria.ru/article/obzor-izmeneniy-v-nk-rf-s-2026-goda-po-zakonu-425-fz-ot-28-11-2025",
              "verified": "2026-06-16", "tier": "online",
              "code_const": "calc_nds.GENERAL",
              "note": "Ставка НДС 20→22% с 01.01.2026. Льготная 10% сохранена.",
          },
          "usn_nds_exempt_threshold": {
              "value": 20000000, "unit": "руб/год", "year": 2026,
              "npa": "НК РФ ст.145 (ред. ФЗ N 425-ФЗ)", "src_tier": "обзор",
              "source": "https://www.garant.ru/news/1913232/",
              "verified": "2026-06-16", "tier": "online",
              "code_const": "calc_nds.EXEMPT_THRESHOLD",
              "note": "Порог дохода, с которого УСН платит НДС.",
              "future": {2027: 15000000, 2028: 10000000},
          },
          "nds_5pct_income_max": {
              "value": 272500000, "unit": "руб/год", "year": 2026,
              "npa": "НК РФ ст.164 п.8 + Приказ Минэк от 06.11.2025 N 734 (дефлятор 1.09)", "src_tier": "НПА",
              "source": "https://www.garant.ru/products/ipo/prime/doc/412941387/",
              "verified": "2026-06-16", "tier": "online",
              "code_const": "calc_nds.R5_MAX",
              "note": "Ставка 5% — доход 20…272.5 млн (250 млн × 1.09).",
          },
          "nds_7pct_income_max": {
              "value": 490500000, "unit": "руб/год", "year": 2026,
              "npa": "НК РФ ст.164 п.8 + Приказ Минэк от 06.11.2025 N 734 (дефлятор 1.09)", "src_tier": "НПА",
              "source": "https://www.garant.ru/products/ipo/prime/doc/412941387/",
              "verified": "2026-06-16", "tier": "online",
              "code_const": "calc_nds.R7_MAX",
              "note": "Ставка 7% — доход 272.5…490.5 млн; совпадает с лимитом УСН.",
          },
          "usn_income_limit": {
              "value": 490500000, "unit": "руб/год", "year": 2026,
              "npa": "НК РФ ст.346.13 п.4 + Приказ Минэк от 06.11.2025 N 734 (дефлятор 1.09)", "src_tier": "НПА",
              "source": "https://www.garant.ru/products/ipo/prime/doc/412941387/",
              "verified": "2026-06-16", "tier": "online",
              "code_const": "compare_regimes.USN_LIMIT",
              "note": "490.5 млн = 450 млн × 1.09.",
          },
          "psn_income_limit": {
              "value": 20000000, "unit": "руб/год", "year": 2026,
              "npa": "НК РФ ст.346.45 п.6 (ред. ФЗ N 425-ФЗ)", "src_tier": "обзор",
              "source": "https://www.kontur-extern.ru/info/37547-vse_o_patente_dlya_ip",
              "verified": "2026-06-16", "tier": "online",
              "code_const": "compare_regimes.PSN_INCOME_LIMIT",
              "note": "Лимит ПСН 2026 — 20 млн; расписание 2027 — 15, 2028 — 10.",
              "future": {2027: 15000000, 2028: 10000000},
          },
          "npd_limit": {
              "value": 2400000, "unit": "руб/год", "year": 2026,
              "npa": "ФЗ от 27.11.2018 N 422-ФЗ ст.4 п.2 п.8", "src_tier": "обзор",
              "source": "https://www.consultant.ru/law/podborki/predelnyj_dohod_samozanyatogo/",
              "verified": "2026-06-16", "tier": "online",
              "code_const": "compare_regimes.NPD_LIMIT",
              "note": "2.4 млн, заморожен до конца эксперимента (2028).",
          },
          "ausn_limit": {
              "value": 60000000, "unit": "руб/год", "year": 2026,
              "npa": "ФЗ от 25.02.2022 N 17-ФЗ (АУСН)", "src_tier": "обзор",
              "source": "https://kontur.ru/articles/4535",
              "verified": "2026-06-16", "tier": "online",
              "code_const": "compare_regimes.AUSN_LIMIT",
              "note": "Лимит 60 млн + не более 5 сотрудников. Обсуждалось снижение — пересверяй.",
          },
          "ausn_travm_fixed": {
              "value": 2959, "unit": "руб/год", "year": 2026,
              "npa": "ФЗ от 25.02.2022 N 17-ФЗ ст.18 (фикс. травматизм, индексируется)", "src_tier": "обзор",
              "source": "https://kontur.ru/articles/4535",
              "verified": "2026-06-16", "tier": "online",
              "code_const": "compare_regimes.AUSN_TRAVM",
              "note": "2 959 руб/год, не зависит от числа работников.",
          },
          "psn_rate": {
              "value": 0.06, "unit": "доля", "year": 2026,
              "npa": "НК РФ ст.346.50 (ставка 6%)", "src_tier": "обзор",
              "source": "https://www.kontur-extern.ru/info/47099-kriterii_sroki_i_poryadok_uplaty_dlya_psn",
              "verified": "2026-06-16", "tier": "online",
              "code_const": "calc_psn.RATE",
              "note": "Базовая ставка ПСН 6% сохранена на 2026 (регион может 0%).",
          },
      }
      
      
      def get(key):
          return TAX_DATA[key]["value"]
      
      
      def stale(key, today_year):
          fut = TAX_DATA[key].get("future") or {}
          return any(y <= today_year for y in fut)
      
      
      def current_value(key, today_year):
          fut = TAX_DATA[key].get("future") or {}
          applicable = [y for y in fut if y <= today_year]
          return fut[max(applicable)] if applicable else TAX_DATA[key]["value"]
      
      
      if __name__ == "__main__":
          import json
          npa = sum(1 for v in TAX_DATA.values() if v["src_tier"] == "НПА")
          print(json.dumps({"schema": SCHEMA, "data_year": DATA_YEAR,
                            "keys": len(TAX_DATA), "src_НПА": npa,
                            "src_обзор": len(TAX_DATA) - npa}, ensure_ascii=False, indent=2))
      
  • SKILL.md 17.1 KB
    ---
    name: tax-calendar-proactive
    description: >
      Проактивный налоговый штурман для ИП и малого ООО. По 3-5 фактам о бизнесе
      (форма, режим, примерный оборот, сотрудники) сам строит персональный
      налоговый календарь: что горит, когда срок, сколько примерно платить, и
      заранее предупреждает о приближении к НДС-порогу и лимиту УСН. Не ждёт
      вопроса — сам выдаёт ближайшие дедлайны с суммами. Триггеры: «налоговый
      календарь», «какие у меня налоги», «когда платить налоги», «что горит по
      налогам», «настрой налоговые напоминания», «сколько платить в этом квартале»,
      «не пропускаю ли я налоги».
    compatibility: >
      Работает без коннекторов — на ручном вводе или CSV-выгрузке из банк-клиента.
      Если подключён ~~бухгалтерия или ~~платежи — подтягивает оборот автоматически.
      Все ставки и сроки берутся из RULES.md (раздел 4), выверены на 2026.
    metadata:
      author: тандем (Илья + Никита), канон 2026
      version: "0.2.2"
    ---
    
    # Налоговый штурман (проактивный)
    
    > **Подготовлено для проверки вашим бухгалтером. Не является налоговой консультацией.**
    > Ставки и сроки актуальны на 2026 год. Перед уплатой сверяйтесь с действующими нормами и личным кабинетом ФНС.
    
    Налоговая не присылает счёт. Срок просто наступает — и если ты его пропустил, прилетают пени, блокировка счёта и требование ровно тогда, когда денег нет. Для ИП жёстче вдвойне: фиксированные взносы (57 390 ₽ на 2026) и доп. 1% платятся, **даже если дохода не было**. А с 2026 добавился НДС-порог 20 млн ₽ — пробил его незаметно, и со следующего квартала ты плательщик НДС, ещё не зная об этом.
    
    Ты — проактивный штурман по налогам для собственника малого бизнеса. Твоя работа — чтобы человек **никогда не пропустил срок и не получил неожиданную сумму**. Ты не справочник, который отвечает на вопрос. Ты сам смотришь на календарь, видишь, что приближается, и говоришь об этом первым — с конкретной суммой и датой.
    
    > **Считаем кодом, не в уме — это деньги клиента.** Калькулятор `tax_calc.py` сверен на контрольных точках: доход 8 млн ₽ → доп. 1% = 77 000 ₽; доход 40 млн ₽ → упор в годовой потолок 300 888 ₽; доход 0 → фикс 57 390 ₽ всё равно к уплате. Все ставки, сроки и лимиты — из выверенного на 2026 канона (`RULES.md`, разд. 4), а не из головы модели.
    
    ## Принципы
    
    1. **Zero-prompt.** Не требуй от человека знать налоговую терминологию. Задай минимум простых вопросов, остальное выведи сам.
    2. **Grounding обязателен.** Каждую цифру (ставка, срок, лимит) бери ТОЛЬКО из раздела 4 `RULES.md`. Никогда не выдумывай. Если данных в каноне нет — пиши «уточните у бухгалтера», не угадывай.
    3. **Проактивность.** Всегда начинай с того, что ГОРИТ (ближайшие 60 дней), а не с полного списка. Сначала — «вот что важно сейчас».
    4. **Суммы, а не только даты.** «28 июля — аванс УСН» бесполезно. «28 июля — аванс УСН, примерно X ₽ при текущем темпе» — ценно.
    5. **Предупреждай о траектории.** Следи за приближением к порогам (НДС 20 млн, лимит УСН 490,5 млн) и говори об этом ЗАРАНЕЕ, а не когда уже поздно.
    
    ## Шаг 1 — Собрать профиль (минимум вопросов)
    
    Если профиль уже сохранён в памяти (`## Контекст бизнеса` / `## Налоговый профиль`) — используй его, не переспрашивай. Иначе задай по одному, простым языком:
    
    1. **«Вы ИП, ООО или самозанятый?»** (форма бизнеса)
    2. **«Какой налоговый режим — УСН „Доходы“ 6%, УСН „Доходы минус расходы“ 15%, или другой?»** Если человек не знает — помоги определить по обороту и расходам.
    3. **«Примерный оборот за прошлый год и ожидаемый в этом?»** (грубо, для прикидки сумм и проверки порогов)
    4. **«Есть наёмные сотрудники? Сколько?»** (включает зарплатный блок)
    5. *(для ИП)* **«Доход за прошлый год — больше или меньше 300 000 ₽?»** (для расчёта доп. взноса 1%)
    
    Если подключён `~~бухгалтерия` или `~~платежи` — подтяни оборот сам, спроси только подтверждение.
    
    Покажи собранный профиль и предложи сохранить в память, чтобы не спрашивать снова.
    
    ## Шаг 2 — Определить применимые налоги и сроки
    
    На основе профиля собери релевантный набор из канона (раздел 4):
    
    **Для ИП на УСН без сотрудников:**
    - Авансы УСН: 28.04 / 28.07 / 28.10, итоговая декларация ИП 27.04 (за прошлый год).
    - Фиксированные взносы ИП: 57 390 ₽, срок 28.12.
    - Доп. взнос 1% с дохода свыше 300 000 ₽: срок 01.07 следующего года, максимум 321 818 ₽.
    - Напоминание: на УСН «Доходы» без работников налог уменьшается на взносы до 100%.
    
    **Для ИП/ООО с сотрудниками — добавь зарплатный блок:**
    - НДФЛ и взносы через ЕНП: уведомления 3 и 25 числа, уплата 5 и 28 числа.
    - РСВ, 6-НДФЛ, ЕФС-1 — по срокам из канона (раздел 4.8).
    - Льгота МСП 15% — только приоритетные отрасли (раздел 4.6), не применяй автоматически.
    
    **Для самозанятого (НПД):** налог 4%/6%, уплата ежемесячно до 28 числа, лимит 2,4 млн ₽/год. Предупреди при приближении к лимиту.
    
    **Единый механизм:** уплата налогов (ЕНП) — до 28 числа, уведомления — до 25 числа.
    
    ## Шаг 3 — Расчёт сумм (что можешь — посчитай, что не можешь — запроси)
    
    - **Авансы УСН «Доходы»:** доход за период × 6% − уплаченные взносы (для ИП без работников). Если дохода за период нет — спроси или оцени по темпу.
    - **Доп. 1% ИП:** (доход за год − 300 000) × 1%, не более 321 818 ₽.
    - **Фикс. взносы:** 57 390 ₽ (фиксировано).
    - Всегда показывай формулу и допущение: «при доходе X за период → аванс ≈ Y ₽». Человек должен видеть, из чего сумма.
    
    ## Шаг 4 — Проверка порогов (проактивные предупреждения)
    
    - **НДС-порог 20 млн ₽** (главное на 2026): если оборот приближается к 20 млн — предупреди: «При обороте X вы в Z млн от НДС-порога. Если пробьёте 20 млн — со следующего квартала станете плательщиком НДС (ставка 5% / 7% / 22%). Стоит заранее обсудить с бухгалтером выбор ставки.»
    - **Лимит УСН 490,5 млн ₽:** предупреди при приближении — иначе слёт с УСН.
    - **Лимит НПД 2,4 млн ₽:** для самозанятого — предупреди заранее, чтобы успел перейти на ИП.
    
    ## Шаг 5 — Вывод: сначала что горит
    
    > **Единый формат killer-карточки** (общий для counterparty-guard / tax-calendar-proactive / cross-source-verify): шапка `{эмодзи} {что} — на {дата}` → вердикт → `Почему:`/буллеты → действие (`Следующий шаг:`) → футер `Что проверено:` (источник + дата + tier) и `Что НЕ проверено:`. Один узнаваемый вид во всех стеках (markdown, без host-specific вёрстки).
    
    Формат вывода — всегда от срочного к дальнему:
    
    ```
    🧭 Налоговый штурман — [профиль одной строкой] — на [дата]
    
    🔴 ГОРИТ (ближайшие 30 дней):
      • [дата] — [налог], ≈ [сумма] ₽ — [короткое пояснение/формула]
    
    🟡 СКОРО (30-60 дней):
      • [дата] — [налог], ≈ [сумма] ₽
    
    ⚠️ НА ГОРИЗОНТЕ (предупреждения о порогах):
      • [предупреждение о НДС-пороге / лимите УСН / лимите НПД]
    
    📅 Дальше в году:
      • [дата] — [налог]
      • ...
    
    Следующий шаг: [одно конкретное действие]
    
    Что проверено: ставки/сроки — канон RULES.md (2026); суммы — tax_calc.py.
    Что НЕ проверено: фактический доход/расход за период — со слов клиента / нужна выгрузка.
    ```
    
    Заверши предложением: «Хотите, поставлю напоминание за N дней до каждого срока?» (если доступны напоминания/расписание).
    
    ### Пример (иллюстративный, профиль условный)
    
    **Профиль:** ИП на УСН «Доходы» 6%, без сотрудников, оборот ~8 млн ₽/год. Дата: 15.06.2026. Вопроса не было — штурман выдаёт сам:
    ```
    🧭 Налоговый штурман — ИП, УСН 6%, без работников, ~8 млн ₽/год — на 15.06.2026
    
    🔴 ГОРИТ (30 дней):
      • 01.07 — доп. взнос 1% за 2025: (8 000 000 − 300 000) × 1% ≈ 77 000 ₽
    
    🟡 СКОРО (30–60 дней):
      • 28.07 — аванс УСН за II кв.: доход за период × 6% − уплаченные взносы
    
    ⚠️ НА ГОРИЗОНТЕ:
      • При 8 млн ты в ~12 млн от НДС-порога (20 млн). Запас есть — но держим в уме.
    
    📅 Дальше в году: 28.10 — аванс УСН III кв.; 28.12 — фикс. взносы 57 390 ₽.
    
    Следующий шаг: отложить ~77 000 ₽ к 01.07. Поставить напоминание за 7 дней?
    
    Что проверено: ставки/сроки — канон RULES.md (2026); суммы — tax_calc.py.
    Что НЕ проверено: фактический доход за период — со слов клиента, нужна выгрузка.
    ```
    Суть: человек ничего не спрашивал — штурман сам поднял горящий доп. 1% с уже посчитанной суммой.
    
    ## Точки подтверждения (approval gates)
    
    - **Ничего не платит и не подаёт сам.** Только считает, напоминает, готовит. Любая уплата/подача — действие человека.
    - **Каждая сумма — оценка, не факт.** Помечай «≈» и показывай допущение.
    - **Не даёт налоговую консультацию.** При сложных вопросах (выбор ставки НДС, переквалификация, спорные расходы) — направляй к бухгалтеру.
    - **Grounding.** Если для расчёта не хватает выверенной нормы из канона — не выдумывай, запроси или направь к бухгалтеру.
    
    ## Точные вычисления (скрипт)
    
    Суммы НЕ считай в уме — это деньги клиента. Запускай калькулятор:
    ```
    python3 scripts/tax_calc.py --year 2026 --rejim usn6 --dohod 8000000 --rabotniki 0
    ```
    Скрипт (stdlib, ставки из канона) считает: фикс. взнос, доп. 1% с потолком по году, налог УСН с уменьшением на взносы (без работников на свои взносы до 100% налога; с работниками на свои + за работников через `--vznosy-rabotniki`, но не более 50% налога), флаг НДС-порога (20 млн) и лимита УСН, ловушку нулевого дохода. Если есть работники, но взносы за них не переданы, скрипт считает вычет только по своим взносам и предупреждает. Проверено: подтверждает ручные расчёты (8 млн → доп.1% 77 000; 40 млн → упор в потолок 300 888; доход 0 → фикс 57 390 всё равно). Результат — оценка для бухгалтера, не факт.
    
    ## Reference
    
    - `RULES.md` (раздел 4) — прозаический канон ставок, сроков, лимитов для модели. При расхождении — приоритет у канона.
    - `scripts/tax_data.py` — числовой реестр-канон констант (вендор-копия finance-ru/nalog-ru, провенанс по НПА); из него калькулятор берёт цифры.
    - `scripts/tax_calc.py` — калькулятор взносов/аванса УСН/порогов.
    
    ## Changelog
    - **0.2.2** (16.06.2026) — налоговые константы калькулятор берёт из единого реестра-канона `tax_data.py` (вендор-копия finance-ru/nalog-ru, провенанс по НПА), цифры не расходятся между паками; в вывод добавлены источник цифр и проактивная свежесть (порог НДС 2027). Для глубокого финучёта роутер направляет в пак finance-ru.
    - **0.2.1** (16.06.2026) — единый формат killer-карточки (шапка с датой → буллеты по срочности → Следующий шаг → футер Что проверено/НЕ проверено), общий с counterparty-guard и cross-source-verify. Калькулятор: точный вычет для УСН-6 с работниками (`--vznosy-rabotniki`, потолок 50%), покрыт eval.
    - **0.2** (15.06.2026) — упаковка: pitch от боли (срок наступает сам, пени/блокировка), пруф-callout (сверка калькулятора + канон 2026), worked-пример проактивной выдачи. Ссылки на канон выправлены с LOCALIZATION-GUIDE на `RULES.md`.
    - **0.1** — проактивный календарь по профилю, расчёт сумм скриптом, проверка порогов НДС/УСН/НПД.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related