Методика расчёта НДС в выручке и прибыли¶
Проблема¶
Для расчёта реальной прибыли по товару нужна выручка без НДС, сопоставимая с себестоимостью без НДС. Считать все суммы реализации по единой ставке 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%, нулевой ставки практически нет.
Три разных расчёта НДС — не путать¶
- % скидки от РРЦ: цена реализации (с НДС) сравнивается с РРЦ (тоже с НДС) — обе величины «грязные» (gross), НДС не искажает результат, т.к. сравниваются однородные величины.
- Факт. выручка без НДС (эта методика): построчно через
Summa − SummaNDS, используется с себестоимостью без НДС для расчёта реальной маржи по факту. - Прогноз выручки без НДС (планировщики каналов): для будущих периодов ставка конкретной сделки не известна заранее — микс ставок на уровне позиции плана непредсказуем. Требует отдельного эмпирического подхода — см. ниже.
Формула для прогноза: эмпирическая доля НДС канала (k)¶
Наивно вычитать флэт-22% из плановой выручки неточно там, где у канала заметна доля продаж по 0%/«Без НДС» (в первую очередь «Дилеры Brodeks»). Методика — построчная аппроксимация по всей истории (не окно за последний период — не хватает выборки на непопулярных артикулах):
- Строки со стандартной ставкой (
20%или22%, неважно какая исторически действовала) → выручка без НДС =Summa / 1.22(аппроксимация «как если бы уже действовала текущая ставка 22%», валовая цена принимается неизменной). - Строки с льготной ставкой (
0%/ «Без НДС») →Summaбез изменений (реальное освобождение, не трогаем).
Свёрнуто в одну формулу на канал:
k = 0.1803 × (1 − доля_выручки_по_льготной_ставке)
где 0.1803 = 22 / 122 — доля НДС в валовой сумме при ставке 22%.
Плановая выручка без НДС = Плановая выручка с НДС × (1 − k).
Почему аппроксимация с фиксированной валовой ценой, а не пересчёт от чистой цены¶
Альтернатива — сохранять чистую цену продавца и пересчитывать валовую цену вверх при смене ставки НДС — даёт менее естественную модель. Для ретроспективной нормализации используется аппроксимация с фиксированной валовой ценой как более простое и защитимое допущение.
Две методики расчёта ставки НДС¶
В проекте фигурируют два разных числа, оба верные, но с разным смыслом — их не нужно путать:
- k — доля НДС в валовой (грязной) выручке. Это то, что напрямую используется в формуле выше:
Выручка без НДС = Выручка с НДС × (1 − k). Значения k получаются в диапазоне 16–18% — при поверхностном взгляде это может показаться заниженным по сравнению с привычной ставкой НДС 20–22%, но это ожидаемо: k считается от валовой суммы (числитель — налог, знаменатель — вся сумма с налогом), а не от чистой цены. - Ставка НДС «сверху» — привычное представление, как в законодательстве и в счетах-фактурах (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 по строкам (артикул × канал), а не только на уровне канала:
- Считать
kв разрезе (артикул × канал) за недавний период (после перехода на 22%, т.е. с 01.05.2026). - Двухуровневая модель с порогом по объёму: у артикула с достаточным числом строк/суммой за период — берём его собственный
k; при малом объёме данных — откатываемся на канальныйk, чтобы не тащить шум единичной нерезидентской сделки в прогноз. Порог объёма подбирается эмпирически. - Очерёдность внедрения: сначала канальный
k(уже реализован, простая формула), артикульный разрез с порогом — следующий шаг поверх него.
Реализация в таблице¶
- В шапке листа — ячейка с эмпирической ставкой НДС канала (рядом с коэффициентом скидки от РРЦ).
- Себестоимость берётся сразу «без НДС» из справочника себестоимости.
- Помесячный блок плана — 5 подколонок: Шт | Шт вручную | Сумма выручки (с НДС) | Выручка без НДС (
=Сумма_выручки × (1 − k)) | Прибыль без НДС (=Выручка_без_НДС − Кол-во × Себестоимость_без_НДС). - Итоговый блок переведён на ту же без-НДС основу — выручка, себестоимость, прибыль и рентабельность считаются по каждому из двух ценовых сценариев (автоматическая цена / вручную заданная РРЦ) параллельно.
- Проверка на реальных данных (канал «Дилеры Brodeks», бренд Brodeks): рентабельность по автоматическому сценарию — 52,4%, по фактическому (с редкими ручными правками цены) — 51,6%.
PDF-версия (тяжёлый файл)¶
Хранится только на Google Drive (правило проекта — тяжёлые файлы не хранятся локально/в git). Индекс — HEAVY_FILES.