В обычном магазине у товара есть цена. В B2B-магазине у товара есть цена для конкретного клиента, в конкретном количестве, на сегодняшний день - и это единственное отличие, из которого вытекает всё остальное: авторизация, скрытые цены, подключение к ERP, согласование заказов и то, почему оптовый проект стоит в разы больше обычного магазина.
Эта статья - разбор требований, а не предложение. По ней вы поймёте, что из вашего задания платформа сделает сама, а что является разработкой.
Цена в B2B считается, а не задаётся
У оптового прайса обычно четыре слоя, и каждый может перебить предыдущий:
- Базовый прайс - каталожная цена без скидок.
- Ценовой уровень сегмента - дилер, монтажник, конечный покупатель.
- Индивидуальный прайс клиента - согласованная цена на отдельные позиции.
- Количественные и акционные цены - от пяти штук иначе, до конца месяца иначе.
Порядок, в котором слои вычисляются, - коммерческое решение, а не технический нюанс. У вопроса «действует ли при акции индивидуальный прайс или акционная цена, когда акционная выше?» нет универсально верного ответа, и дать его должен коммерческий директор, а не программист. Неотвеченный, он всё равно будет отвечен - только случайно и в коде.
Практическое следствие для запроса: подрядчик, который на первой встрече об этом не спросит, либо B2B не делал, либо оставляет это на допработы.
Цены без DPH можно показывать фирмам, а не потребителям
Это самая частая правовая ошибка B2B-магазинов, которые продают и конечным покупателям.
Потребитель должен до завершения заказа знать конечную цену с DPH. Аргумент «на сайте написано, что цены без DPH» не работает: потребитель не обязан досчитывать цену калькулятором. Указание цены без налога для потребителя поэтому рискованно: конечная цена с налогами относится к существенной информации, а её сокрытие или искажение подпадает под недобросовестные коммерческие практики по § 4 закона № 634/1992 Sb. о защите потребителя (вводящее в заблуждение действие § 5, вводящее в заблуждение умолчание § 5a).
Отсюда единственное разумное решение: режим отображения определяется авторизацией, а не переключателем. Неавторизованный посетитель и клиент с аккаунтом конечного потребителя видят цены с DPH. Проверенный корпоративный аккаунт видит цены без DPH и сумму с налогом рядом.
Ставки на 31. 8. 2026: базовая 21 %, сниженная 12 %, книги и аудиокниги 0 % (ZDPH § 47). В 2026 году ставки не менялись.
Скрытые цены для неавторизованных чего-то стоят, и честно это сказать
Скрыть цены до авторизации - законное коммерческое решение. Но у него есть цена, которую подрядчики обычно не называют.
Что скрытые цены закроют: структурированные данные с ценой, а с ними и расширенные результаты в поиске; фид в Google Merchant Center и на сравнители; и возможность найти вас по запросу с ценой. Каталог останется индексируемым, торговый аргумент из выдачи исчезнет.
Что скрытые цены дадут: конкурент не видит ваших дилерских условий, а вы получаете регистрацию как шаг, после которого знаете, с кем говорите.
Средний путь существует и обычно лучше обеих крайностей: публичная конечная цена с DPH, дилерская цена после авторизации. Поисковикам есть что индексировать, коммерческие условия остаются непубличными.
Налоговый номер проверяется по VIES, а не на доверии
Регистрация корпоративного аккаунта, где налоговый номер переписывается из поля в базу, - будущая проблема в бухгалтерии. Поле заполняют с опечатками, с пробелами, с префиксом страны и без него, а иногда оно принадлежит фирме, которой уже нет.
Проверка по реестру VIES делается в момент регистрации и снова при каждой следующей покупке в другое государство-член. Причина практическая: режим переноса налоговой обязанности при трансграничном B2B стоит на том, что покупатель имеет действующий налоговый номер для целей торговли внутри ЕС. Проверка занимает секунду и экономит корректировочные налоговые документы.
Базовое правило места оказания услуг в B2B - место получателя (ZDPH § 9). Для товаров внутри ЕС действуют другие правила и другие исключения, и это тот пункт, где спрашивать надо бухгалтера, а не агентство.
Неплательщик DPH станет идентифицированным лицом и без единой кроны оборота
Вещь, которая удивляет почти каждого начинающего оптовика, и касается она и вас как владельца магазина.
Лицо, обязанное к налогу, которое не является плательщиком DPH, становится идентифицированным лицом в момент, когда принимает услугу от поставщика без места нахождения в ЧР. Никакой оборотный порог не применяется, решает сам факт покупки (ZDPH § 6g - § 6l). Заявление на регистрацию необходимо подать в течение 15 дней со дня, когда оно им стало (ZDPH § 97).
Практически это значит, что реклама в Google Ads, подписка на платформу, приложение из зарубежного магазина, хостинг или лицензия дизайнерского инструмента эту обязанность запускают. Идентифицированное лицо декларирует и платит налог с принятой услуги, но права на вычет не имеет - налог заплачен и не вернётся.
Это не повод чего-то не покупать. Это повод знать заранее, потому что неподанная регистрация тихо обрастает пенями годами.
Покупка по счёту - это кредит, а не способ оплаты
Кнопка «Оплатить по счёту» - самая дешёвая часть всей истории. Дорого то, что должно за ней стоять:
- Кредитный лимит на клиента, который уменьшается неоплаченными заказами, а не только просроченными счетами.
- Отсрочка по клиенту, а не одна на всех.
- Блокировка при превышении лимита или при просроченном счёте, включая решение, блокировать заказ или лишь отправить его на согласование.
- Источник правды о долге. Состояние задолженности знает бухгалтерия, а не магазин.
Последний пункт определяет бюджет проекта. Пока лимит стережёт магазин по своим данным, он стережёт его по неполным числам: платёж пришёл на счёт, а магазин о нём не знает. Живое подключение к ERP эту проблему решает, и это же место, где цена проекта растёт. У ABRA Flexi мы следим за кредитными лимитами через REST API в реальном времени, у Pohoda через XML и mPohoda, у систем Helios и Money через SOAP или собственный мост данных. Подробнее на странице CRM и ERP под заказ.
Заказ в фирме часто оформляет не тот, кто его утверждает
Об этом забывают, потому что в B2C такого нет. В фирме аккаунт обычно у нескольких человек, и права у них разные:
- закупщик, который собирает заказ;
- утверждающий, который пропускает его дальше свыше определённой суммы;
- бухгалтер, которому нужны счета и история, но который не закупает;
- филиал или подразделение со своим адресом доставки и своим бюджетом.
Отсюда функции, которых в обычной платформе нет: статус заказа «ждёт утверждения», уведомление утверждающему, корзина, сохранённая как запрос, повторный заказ из истории и массовое добавление в корзину по списку кодов. Последнее для оптовых клиентов часто важнее всего дизайна: они закупают по своему списку, а не листая каталог.
Прайсы забираются из ERP, а не ведутся вручную
Индивидуальный прайс существует в ERP, потому что там его создаёт менеджер. В магазин он переносится, и направление переноса определяется один раз и жёстко: ERP - источник правды о цене и складе, магазин - источник правды о заказе.
Там, где это не решено, возникает самый дорогой тип ошибки в B2B: две разные цены на один товар в двух системах и выяснение, какая действует, задним числом за три месяца. Вопрос, который надо задать раньше любого технического, звучит так: что произойдёт, когда обе стороны разойдутся?
Как мы строим регулярную синхронизацию и что делать, когда источник данных пропадает, разбираем в статье о фидах поставщиков.
Почему headless B2B-портал начинается с 250 000 Kč
Наша опубликованная цена - от 250 000 Kč за 10-14 недель, тогда как магазин на Shopify или WooCommerce мы строим от 50 000 Kč. Разница пятикратная, и делает её не дизайн.
При нашей ставке 1 800 Kč за час работы над e-commerce это примерно 138 часов против 27. Эта разница - работа в одном-единственном месте: цена. Каждый слой прайса означает свою логику, свои тесты и своё поведение в корзине, в счёте, в кредит-ноте и в фидах. Цена при этом - единственное, что в B2B не имеет права быть неверным, потому что ошибка умножается объёмом заказа.
К этому добавляются вещи, которые в цене прячутся, а время берут: роли и права пользователей, процесс согласования, кредитные лимиты, двусторонняя синхронизация с ERP и тестовые сценарии на все сочетания.
Из чего цена проекта складывается по позициям, разбираем в статье о цене интернет-магазина.
Когда B2B-портал вам никто не продаст, потому что он вам не нужен
Эта ветка широкая, и её стоит пройти раньше, чем начинать запрашивать предложения.
Если у вас один прайс на всех покупателей, до пятидесяти активных клиентов, вы получаете оплату заранее или по авансовому счёту, продаёте только в ЧР и СК и заказы приходят вам письмом без проблем - вам хватит обычного магазина с клиентской группой и скидкой в процентах. Разработка собственной ценовой логики не вернёт вам ничего.
Эта граница сдвигается, как только верна любая из фраз: у вас больше одного ценового уровня, хотя бы десять клиентов с индивидуальным прайсом, вы продаёте по счёту с отсрочкой, или прайс меняется в ERP чаще раза в квартал. Тогда ручное ведение уже стоит дороже, чем его устранение.
Двенадцать вопросов, после которых предложения сравнимы
Отправьте их всем подрядчикам разом и положите ответы рядом.
- В каком порядке вычисляются ценовые уровни, индивидуальные прайсы и акции?
- Кто источник правды о цене и складе - ERP или магазин?
- Что произойдёт, когда ERP и магазин разойдутся?
- Как проверяется налоговый номер при регистрации корпоративного аккаунта?
- Видит ли неавторизованный посетитель цены, и если нет, что это сделает с фидами?
- Как переключается отображение с DPH и без DPH и по чему?
- Где стережётся кредитный лимит и откуда берёт состояние задолженности?
- Умеет ли система статус заказа «ждёт утверждения» и кто его назначит?
- Можно ли добавить в корзину список кодов сразу?
- Сколько пользователей может быть у одного корпоративного аккаунта и с какими правами?
- Кто решает перенос налоговой обязанности у покупателя из ЕС?
- Сколько стоит добавление тринадцатого ценового уровня через год после запуска?
Оптовый магазин покупают не по шаблону и даже не по платформе. Его покупают по тому, способен ли подрядчик описать, что произойдёт, когда две системы не сойдутся в цене.
Пришлите нам свои прайсы, а не задание
Самый быстрый путь к реальной калькуляции идёт через ваши данные. Нам нужен образец прайса с ценовыми уровнями, информация о том, в какой системе вы ведёте учёт и склад, и число клиентов с индивидуальной ценой. По этому объём оценивается точнее, чем по сколь угодно длинному заданию.
Что мы строим и на чём, найдёте на странице создания интернет-магазинов; подключение к чешским ERP и собственным системам описываем на странице CRM и ERP.
Напишите на info@lamapixel.com или звоните +420 775 599 009.