Как мы везли мыло со Шри-Ланки, потеряли на фрахте и перенесли производство в Россию
История одного бруска: от личной проблемы до Честного знака и ФФД 1.2.
У меня проблемная кожа. Не «иногда высыпает», а много лет подряд.
Мыло, которое мне подошло, я нашёл случайно — привёз со Шри-Ланки. Оно просто работало, и это было настолько нехарактерно для моего опыта с уходовой косметикой, что мы с женой решили попробовать привезти партию и продавать здесь.
Партия была маленькая, на пробу: 100 штук. Классический тест гипотезы — вложить немного и посмотреть, покупает ли это кто-то кроме меня.
Первая партия: товар не менялся, менялась картинка
Сначала я сделал карточку товара сам. Фото на телефон, текст своими руками. Продажи пошли, но вялые — 10 в месяц.
Дальше я сделал то, что в цифровых продуктах делают на автомате, а в мелкой рознице почему-то считают избыточным: заказал профессиональную фотосессию с моделью. Продажи выросли до 20 в месяц.
Потом добавил в карточку видео, сгенерированное нейросетью. Оставшийся товар ушёл за неделю.
Сто брусков — не та выборка, по которой можно делать выводы о рынке. Но одна вещь следует железно: товар не менялся вообще ни разу, менялась только его подача. Всё, что произошло между «вялыми продажами» и «распродано за неделю», — это картинка.
Очень отрезвляющий опыт для человека, который девять лет делал продукты и привык думать, что решает функциональность.
Вторая партия и Ормуз
После такого результата решение было очевидным: заказываем 1000 штук.
И здесь в историю вмешалась геополитика. Пока партия готовилась, случился кризис вокруг Ормузского пролива, и стоимость морской логистики пошла вверх по всему миру.
Оговорка, которую я сделаю сам, потому что её мне обязательно напишут в комментариях: маршрут из Шри-Ланки в Россию через Ормузский пролив не идёт. Прямой связи нет.
Связь косвенная. Блокировка одного из ключевых коридоров даёт эффект домино: суда уходят на альтернативные маршруты, рейсы удлиняются, доступного тоннажа становится меньше, а страховые надбавки за военные риски закладываются во фрахт на смежных направлениях. По оценкам за август 2026 года, конфликт поднял ставки в среднем на полторы тысячи долларов за двадцатифутовый контейнер и на три тысячи за сорокафутовый. Контейнерные ставки из Азии на восточное побережье США выросли более чем вдвое за год.
Мой маршрут в этом списке не главный пострадавший. Но когда дорожает всё сразу, дешёвых вариантов не остаётся ни у кого.
Итог для меня в одной цифре: себестоимость одного куска мыла с доставкой стала 900 рублей.
Девятьсот рублей за брусок мыла — это не бизнес. Это цена, при которой ты либо ставишь ценник, за который никто не купит, либо работаешь в минус.
Никакого третьего варианта арифметика не предлагала.
Решение: переносим производство сюда
Мы решили перенести производство в Россию.
Звучит как большой шаг, на практике это несколько месяцев переговоров. Я искал заводы с контрактным производством, способные повторить рецептуру. Нашёл, договорился.
Дальше мы разделились. Жена взяла на себя перенос бренда и адаптацию продукта под российский рынок — рецептура в рамках нашего техрегламента, состав, упаковка, всё, что связано с тем, чтобы продукт остался тем же самым, но стал легальным здесь. Я взял на себя сайт и техническую часть.
Про техническую часть дальше, потому что именно она оказалась самой недооценённой.
Почему свой сайт, а не только маркетплейс
Три причины, и ни одна не про «хочу свой сайтик».
Комиссия площадки берётся с цены, а не с прибыли. В низкомаржинальном физическом товаре это принципиально другая математика, чем кажется на старте.
Вы не знаете своего покупателя. У площадки есть его почта, история, поведение. У вас — обезличенная строка в отчёте. Повторную продажу делать некому.
Вы не управляете витриной. Карточка живёт по правилам площадки и завтра может уехать вниз без объяснений.
Свой сайт всё это решает. Взамен он приносит обязанности, которые площадка раньше несла за вас.
Стек
Next.js на фронте и бэке, Т-Касса как эквайринг, облачная касса Эвотор для фискализации.
Логика простая: минимум подвижных частей и минимум интеграций, которые придётся чинить в одиночку. Облачная ККТ вместо физической — потому что физическая касса это железка, которая должна где-то стоять и обслуживаться. Облачная снимает этот класс проблем целиком.
Эквайринг и касса — разные вещи, и это первое, что стоит понять. Эквайринг принимает деньги. Касса формирует фискальный документ и отправляет его в ФНС через ОФД. Одно без другого нелегально. Многие сервисы продают их пакетом, отсюда иллюзия, что это одна сущность.
Сайт я написал за выходные. На то, чтобы с него можно было легально принять деньги и пробить чек, ушло 9-10 недель.
Честный знак: что и когда
Мыло и моющие средства попали в обязательную маркировку с 1 мая 2025 года — коды наносят производители и импортёры. Дальше требования расширились на оборот: с 1 июля 2026 года участники обязаны передавать сведения о движении товара через ЭДО, а о выбытии — через онлайн-кассу.
Что нужно, чтобы войти в систему:
- Получить УКЭП. Без неё дальше ничего не происходит.
- Зарегистрироваться в ГИС МТ.
- Завести карточки товара в Национальном каталоге. Отдельная работа: у каждого SKU свой набор атрибутов, и он проверяется.
- Настроить заказ и оплату кодов. Код стоит 50 копеек плюс НДС — единственное место во всей истории, где цифры приятные.
- Подключить ЭДО.
ФФД 1.2 и почему нельзя остаться на 1.05
Формат фискальных документов 1.2 умеет передавать код маркировки в чеке. Продаёте маркированный товар — обязаны быть на 1.2, потому что в чек должен уехать код конкретной единицы, а не просто наименование и цена.
Механика: касса кладёт код в чек, чек уходит в ОФД, ОФД передаёт сведения в ГИС МТ, код выбывает из оборота. С этого момента брусок считается проданным конечному потребителю и не может быть легально продан ещё раз.
Ломается вот здесь.
Какой именно код класть в чек
В офлайн-рознице вопроса нет: кассир сканирует DataMatrix с той пачки, которую держит в руках. Физический товар и фискальный документ связаны через сканер.
В интернет-магазине сканера нет. Покупатель нажал «Оплатить», эквайринг подтвердил, касса обязана пробить чек — и в этот чек нужно положить код той самой единицы, которая поедет покупателю. Но она лежит на складе, и никто её не сканировал.
Значит, нужен поштучный учёт кодов на своей стороне. Не «на складе 200 брусков», а «вот 200 конкретных кодов, каждый в одном из состояний: свободен, зарезервирован под заказ, выбыл». Перед формированием чека вы атомарно берёте свободный код, привязываете к заказу и только потом отдаёте в кассу.
Алгоритмически несложно. Просто совершенно не то, чем вы планировали заниматься.
Грабли, на которые я наступил: состояние «зарезервирован» обязано иметь таймаут. Иначе брошенные корзины и неудачные платежи потихоньку съедают пул кодов, и система однажды сообщает, что товара нет, хотя коробка на складе полная.
Возвраты
Покупатель вернул товар — нужен чек возврата, и код должен вернуться в оборот. То есть «выбыл» — не терминальное состояние, а обратимое. Если не заложить это сразу, переделывать придётся больно: состояние размазано по заказам, чекам и складу.
Проектируйте жизненный цикл кода до того, как напишете первый обработчик платежа. Состояний у него больше, чем у заказа, и живёт он дольше.
Что оказалось дороже всего
Не деньги. Коды стоят копейки, облачная касса — 2500-5000 рублей, эквайринг — процент со сделки.
Дорого стоит порядок операций. Оплата, фискализация, выбытие кода, отгрузка, ЭДО — пять систем, каждая со своим состоянием, и любая может отвалиться посередине. Оплата прошла, а касса не ответила. Чек пробился, а код не выбыл. Всё выбыло, а отгрузка сорвалась.
По сути вы пишете распределённую транзакцию без распределённых транзакций, вечерами, для магазина, который продаёт мыло.
Что помогло: не пытаться сделать всё синхронно в одном запросе. Оплата подтверждается — заказ переходит в состояние, дальше очередь и ретраи с идемпотентностью на каждом шаге. Скучно и надёжно.
Что я вынес
Два вывода, и оба не те, за которыми я шёл.
Первый: логистическое плечо — это не строка в смете, а фактор риска уровня всего бизнеса. Мы построили экономику на маршруте, который не контролируем, и он подорожал по причине, к нам не имеющей никакого отношения. Перенос производства сюда стоил нам месяцев, но убрал зависимость, которую мы изначально даже не считали зависимостью.
Второй: порог входа в этой нише сместился. Раньше он был «уметь сделать сайт». Теперь — «уметь провести единицу товара через государственную систему прослеживаемости». Первое умеют многие, второе сильно меньше.
Это неплохой ров. Просто выкопан он не нами.