Перейти к содержанию

Методика расчёта НДС в выручке и прибыли

Проблема

Для расчёта реальной прибыли по товару нужна выручка без НДС, сопоставимая с себестоимостью без НДС. Считать все суммы реализации по единой ставке 22% неверно — часть продаж идёт по другим ставкам:

  • 20% — старая ставка, действовала в документах до 23.04.2026 (переходный период январь–апрель 2026).
  • 22% — текущая ставка, с 02.01.2026, единственная с апреля 2026.
  • 0% / «Без НДС» — реальное освобождение, не техническая нулевая ставка. Привязано к конкретным контрагентам-нерезидентам.

Источник данных

Отдельный справочник ставок не нужен — НДС уже хранится построчно в таблице фактических отгрузок 1С:

Поле RealizatsiyaTovarovUslugTovary_PROD Смысл
Summa Сумма строки с НДС (равна SummaSNDS).
StavkaNDS Ставка налога текстом (20%, 22%, 0%, «Без НДС»).
SummaNDS Сумма налога по строке.
SummaSNDS Сумма с НДС — математически равна Summa.

Факт. выручка без НДС по строке = Summa − SummaNDS (проверено математически на всех встреченных ставках: SummaNDS = Summa − Summa/(1+ставка)).

Механизм 0% / «Без НДС»

Не случайный разброс, а конкретные контрагенты-нерезиденты — 29 уникальных партнёров, все дилеры из Беларуси (Минск, Гродно, Брест) и Казахстана (Астана, Алматы, Караганда, Актау, Темиртау), плюс один В2В-партнёр (Казахстан). Совпадает с прайс-листами «Дилер-СНГ(33)»/«Цена продажи СНГ». Объясняет, почему у канала «Дилеры Brodeks» эмпирическая доля НДС заметно ниже стандартной — устойчивая база дилеров-экспортёров, а не шум выборки.

Фактическое распределение по ставкам (121К+ строк, весь период): 20% — 61 609 строк / 799,7 млн ₽; 22% — 56 753 / 544,8 млн ₽; 0% — 3 520 / 38,0 млн ₽; «Без НДС» — 5 / 1,8 млн ₽. У Розницы, маркетплейсов и интернет-магазина — почти только 20%/22%, нулевой ставки практически нет.

Три разных расчёта НДС — не путать

  1. % скидки от РРЦ: цена реализации (с НДС) сравнивается с РРЦ (тоже с НДС) — обе величины «грязные» (gross), НДС не искажает результат, т.к. сравниваются однородные величины.
  2. Факт. выручка без НДС (эта методика): построчно через Summa − SummaNDS, используется с себестоимостью без НДС для расчёта реальной маржи по факту.
  3. Прогноз выручки без НДС (планировщики каналов): для будущих периодов ставка конкретной сделки не известна заранее — микс ставок на уровне позиции плана непредсказуем. Требует отдельного эмпирического подхода — см. ниже.

Формула для прогноза: эмпирическая доля НДС канала (k)

Наивно вычитать флэт-22% из плановой выручки неточно там, где у канала заметна доля продаж по 0%/«Без НДС» (в первую очередь «Дилеры Brodeks»). Методика — построчная аппроксимация по всей истории (не окно за последний период — не хватает выборки на непопулярных артикулах):

  • Строки со стандартной ставкой (20% или 22%, неважно какая исторически действовала) → выручка без НДС = Summa / 1.22 (аппроксимация «как если бы уже действовала текущая ставка 22%», валовая цена принимается неизменной).
  • Строки с льготной ставкой (0% / «Без НДС») → Summa без изменений (реальное освобождение, не трогаем).

Свёрнуто в одну формулу на канал:

k = 0.1803 × (1 − доля_выручки_по_льготной_ставке)

где 0.1803 = 22 / 122 — доля НДС в валовой сумме при ставке 22%.

Плановая выручка без НДС = Плановая выручка с НДС × (1 − k).

Почему аппроксимация с фиксированной валовой ценой, а не пересчёт от чистой цены

Альтернатива — сохранять чистую цену продавца и пересчитывать валовую цену вверх при смене ставки НДС — даёт менее естественную модель. Для ретроспективной нормализации используется аппроксимация с фиксированной валовой ценой как более простое и защитимое допущение.

Две методики расчёта ставки НДС

В проекте фигурируют два разных числа, оба верные, но с разным смыслом — их не нужно путать:

  1. k — доля НДС в валовой (грязной) выручке. Это то, что напрямую используется в формуле выше: Выручка без НДС = Выручка с НДС × (1 − k). Значения k получаются в диапазоне 16–18% — при поверхностном взгляде это может показаться заниженным по сравнению с привычной ставкой НДС 20–22%, но это ожидаемо: k считается от валовой суммы (числитель — налог, знаменатель — вся сумма с налогом), а не от чистой цены.
  2. Ставка НДС «сверху» — привычное представление, как в законодательстве и в счетах-фактурах (20%/22%), считается от чистой цены без налога. Пересчитывается из k по формуле:
Ставка «сверху» = k / (1 − k)

Это чисто информационное представление для удобства чтения и сверки с привычными цифрами — в формулах листов используется только k, ставку «сверху» пересчитывать в саму формулу не нужно (потребовалась бы другая структура формулы — деление на (1 + ставка) вместо умножения на (1 − k) во всех местах, где k уже используется).

Значения по каналам (только бренд Brodeks, вся история)

Канал k (доля от валовой выручки) Ставка «сверху» (от чистой цены)
Дилеры Brodeks 16,25% 19,40%
В2В 18,01% 21,97%
Розница Москва 18,03% 22,00%
Розница СПб 18,03% 22,00%
Интернет-магазин 18,03% 22,00%
Маркетплейс Озон 18,03% 22,00%
Маркетплейс Wildberries 18,03% 22,00%

У всех каналов, кроме Дилеров, ставка «сверху» ровно 22,00% — продаж по льготной ставке в этих каналах почти нет, поэтому средняя ставка совпадает с действующей законодательной ставкой НДС. У Дилеров ставка «сверху» заметно ниже (19,40%) из-за заметной доли продаж дилерам-нерезидентам СНГ (ставка 0%/«Без НДС» по этим сделкам снижает средневзвешенную ставку канала).

Значение по каналу считается только по строкам бренда Brodeks — в исходном канале В2В, например, 980 из 1234 товаров относятся к другим брендам, их исключение меняет k с 17,94% до 18,01%.

Ограничение канального уровня

Проверено на топ-артикулах канала «Дилеры Brodeks» (май–июль 2026, 300–400 строк на артикул): разброс k по артикулам 0,095–0,18 — заметно шире, чем разброс между каналами (0,156–0,180). Не шум выборки, а системная разница: одни модели заметно популярнее у дилеров-нерезидентов, другие почти не идут на экспорт.

Направление дальнейшего развития методики — восстанавливать k по строкам (артикул × канал), а не только на уровне канала:

  1. Считать k в разрезе (артикул × канал) за недавний период (после перехода на 22%, т.е. с 01.05.2026).
  2. Двухуровневая модель с порогом по объёму: у артикула с достаточным числом строк/суммой за период — берём его собственный k; при малом объёме данных — откатываемся на канальный k, чтобы не тащить шум единичной нерезидентской сделки в прогноз. Порог объёма подбирается эмпирически.
  3. Очерёдность внедрения: сначала канальный k (уже реализован, простая формула), артикульный разрез с порогом — следующий шаг поверх него.

Реализация в таблице

  • В шапке листа — ячейка с эмпирической ставкой НДС канала (рядом с коэффициентом скидки от РРЦ).
  • Себестоимость берётся сразу «без НДС» из справочника себестоимости.
  • Помесячный блок плана — 5 подколонок: Шт | Шт вручную | Сумма выручки (с НДС) | Выручка без НДС (=Сумма_выручки × (1 − k)) | Прибыль без НДС (=Выручка_без_НДС − Кол-во × Себестоимость_без_НДС).
  • Итоговый блок переведён на ту же без-НДС основу — выручка, себестоимость, прибыль и рентабельность считаются по каждому из двух ценовых сценариев (автоматическая цена / вручную заданная РРЦ) параллельно.
  • Проверка на реальных данных (канал «Дилеры Brodeks», бренд Brodeks): рентабельность по автоматическому сценарию — 52,4%, по фактическому (с редкими ручными правками цены) — 51,6%.

PDF-версия (тяжёлый файл)

→ Открыть на Google Drive

Хранится только на Google Drive (правило проекта — тяжёлые файлы не хранятся локально/в git). Индекс — HEAVY_FILES.