Оптовий магазин відрізняється від роздрібного не каталогом, а тим, що відбувається після кліку «купити»: у кожного клієнта своя ціна, є мінімальна партія й кратність упаковки, а замовлення закривається рахунком, а не чеком. У OpenCart під це є групи покупців і рівні цін — решту доводиться добудовувати. 31 липня 2026 року ми зняли показники з семи оптових каталогів: від 1 656 адрес у медичному до 13 590 у білизняному, перша відповідь сервера 289–576,8 мс. Терміни — від 30 робочих днів. Вартість називаємо після безкоштовного аудиту: вона залежить від того, скільки цінових рівнів і скільки документів має закривати сайт замість менеджера.
289–576,8 мс на каталогах від 1,6 до 13,6 тис. адрес
Що знайшли всередині
на каталозі з 1 848 позицій аналітика не збирає дані з 2023 року
Показники зняті нашим виміром на живих сайтах відповідного масштабу.
після безкоштовного аудиту
Вартість
30
Гарантія
днів після підписання акта
7
B2B-каталогів поміряли
оптових магазинів, вимір 31.07.2026
13 590
Найакуратніша карта сайту вибірки
адрес, з них лише 1 дублікат — 0,007%
289–576,8 мс
Перша відповідь сервера
на каталогах від 1,6 до 13,6 тис. адрес
на каталозі з 1 848 позицій аналітика не збирає дані з 2023 року
Що знайшли всередині
30–55
Орієнтир
робочих днів, вартість — після аудиту
Кому підходить
Ситуації, у яких ця послуга дає результат
Ситуація 1 з 4
Продаєте дилерам і кожному даєте свою ціну
Зараз це живе в Excel і в голові менеджера: файл переслали, ціна застаріла, клієнт сперечається. Групи покупців OpenCart переносять сходинки цін на сайт — дилер бачить свою колонку після входу, роздрібний відвідувач базову. Джерело цін одне, і воно оновлюється імпортом, а не листуванням.
Розберемо вашу ситуацію на безкоштовному аудиті
Ситуація 2 з 4
Замовлення йде партіями, а не штуками
Кратність упаковки, мінімальна сума замовлення, фасування, розмірні сітки всередині моделі. В оптовому магазині білизни з нашої вибірки це зроблено підбором розмірів і кольорів усередині картки: закупівельник набирає асортимент в одному місці, а не ходить по 40 сторінках. Каталог там тримає 13 428 карток товару.
Ситуація 3 з 4
Клієнту потрібен документ, а не чек
Безготівковий розрахунок, рахунок-фактура, переказ на IBAN. У виміряних каталогах це норма: у білизняному вісім способів розрахунку, включно з рахунком-фактурою; у каталозі швейних запчастин — безготівка без ПДВ на рахунок ФОП і оплата після отримання на складі перевізника.
Ситуація 4 з 4
Половина часу менеджера йде на повторні замовлення
Кабінет з історією робить повтор операцією в два кліки: клієнт відкриває попереднє замовлення й повторює його. Це близько семи робочих днів, і має сенс тільки там, де клієнти справді замовляють регулярно — інакше кабінетом ніхто не користується.
Кейси
Задачі та результат у цифрах — усі показники зняті нашим виміром
оптовий магазин нижньої білизни, каталог понад 13 тис. позицій
Задача
Підбір за розмірами й кольорами всередині моделі, фасування, оптові ціни за рівнями замовлення.
Рішення
OpenCart. Вісім способів розрахунку — від Приват24 до рахунка-фактури — винесені і в текст, і в JSON-LD через acceptedPaymentMethod.
Результат
13 590 адрес у карті сайту (13 428 карток товару, 161 категорія, головна), лише один дублікат — 0,007%. TTFB 289 мс. Знайдені дефекти: HTML головної 751,2 КБ, а стандартні адреси карти сайту віддають порожнє тіло — робоча лежить на нестандартному шляху. Вимір 31.07.2026.
оптовий магазин косметики для б'юті-індустрії, каталог близько 4 тис. позицій
Задача
Оптовий каталог із навігацією за брендами й категоріями та швидким оформленням для закупівельників.
Рішення
OpenCart, канонічна карта сайту на окремій адресі. WayForPay, післяплата, рахунок у банку, дві служби доставки, шість типів JSON-LD.
Результат
4 167 адрес у канонічній карті сайту: 3 947 товарів, 166 брендів, 47 категорій, 6 інформаційних сторінок і головна. TTFB 576,8 мс при 192,4 КБ HTML. Знайдений дефект: паралельно живе стара карта сайту з 7 782 записами на 2 755 унікальних адрес, і жодної адреси другої мовної версії в ній немає. Вимір 31.07.2026.
B2B-каталог запчастин для промислових швейних машин
Задача
Знайти деталь за кодом або моделлю обладнання за мінімум кроків: помилка в підборі коштує простою виробництва.
Рішення
OpenCart, підбір деталей за моделлю машини, технічні схеми, форма запиту наявності. Безготівка без ПДВ на рахунок ФОП.
Результат
1 992 адреси в карті сайту без жодного дубліката — 1 848 карток товару і 138 категорій. TTFB 388,1 мс при 120,2 КБ HTML, третя найлегша сторінка вибірки. Знайдений дефект: у коді досі стоїть Universal Analytics, GA4 немає взагалі — аналітика не збирає дані з липня 2023 року. Вимір 31.07.2026.
оптовий постачальник товарів із Китаю, B2B-каталог близько 6 тис. позицій
Задача
Дати бізнес-клієнтам замовляти асортимент напряму: каталог з оптовими цінами й короткий шлях від пошуку позиції до заявки.
Рішення
OpenCart 3, дві мовні версії з окремою картою сайту на кожну. Мікророзмітка FAQPage і BreadcrumbList, чат, післяплата.
Результат
5 830 товарів, підтверджено двома методами: пошук OpenCart дав 58 сторінок по 100 позицій плюс 30, карта сайту — по 6 234 адреси на кожну з двох мов, разом 12 468. TTFB 506,9 мс, повне завантаження 552,7 мс при 333,1 КБ. Вимір 31.07.2026.
Що входить
Повний перелік робіт і того, що ви отримуєте на виході
Групи покупців і рівні цін: роздріб, дилер, ключовий клієнт — кожен бачить свою колонку після входу
Реєстрація оптовика з ручною модерацією: доступ до оптових цін відкриває менеджер, а не форма
Кратність упаковки, мінімальна партія й мінімальна сума в кошику з підказкою, чому кнопка неактивна
Швидке замовлення списком: артикул і кількість у форму, без переходу в кожну картку
Кабінет клієнта: історія замовлень, повтор попереднього замовлення, статуси й документи
Документи: рахунок-фактура із замовлення, безготівковий розрахунок, переказ на IBAN
Імпорт прайсу з мапінгом полів і розкладом оновлення цін та залишків
XML-вивантаження власного прайсу для дилерів і майданчиків
Технічне SEO: ЧПУ, canonical, унікальні title, карта сайту без дублів, JSON-LD Store і BreadcrumbList
Аналітика GA4 з подіями кошика й оформлення — щоб було видно, де відвалюється закупівельник
Коли ця послуга не підходить
Що не входить у роботу — щоб не було сюрпризів на здачі
Ведення бухгалтерії і формування первинних документів у вашій обліковій системі
Наповнення каталогу описами й характеристиками
Юридичні тексти: договір оферти, умови повернення для юридичних осіб
Хостинг, домен, еквайринг
Пошук дилерів і робота з базою — це маркетинг, а не розробка
Як проходить робота
Прозорі етапи з погодженням на кожному кроці
Загальний строк:30–55 днів
1
Бриф і розбір комерційної схеми
3–5 робочих днів
Хто ваші клієнти, скільки в них рівнів цін, як зараз узгоджується замовлення й які документи закриває менеджер руками.
2
ТЗ: групи покупців, ціни, документи
4–7 робочих днів
Матриця «група покупця → ціна → умови», правила кратності й мінімальної партії, перелік документів і хто їх формує. Це найважливіший документ проєкту.
3
Прототип каталогу й кабінету
4–7 робочих днів
Сценарій закупівельника від пошуку позиції до рахунку, форма швидкого замовлення списком, структура кабінету. Погоджуємо до дизайну.
4
Дизайн і верстка
6–10 робочих днів
Каталог, картка з розмірною сіткою й фасуванням, кошик з підказками про кратність, кабінет. Оптовий інтерфейс — це щільність інформації, а не картинки.
5
Збірка: ціни, кратність, кошик, документи
7–13 робочих днів
Групи покупців, сходинки цін, обмеження кошика, формування рахунка-фактури, модерація реєстрації дилера.
6
Імпорт каталогу й інтеграції
4–8 робочих днів
Мапінг прайсу, розклад оновлення, доставка, аналітика з подіями кошика, вивантаження власного прайсу для дилерів.
7
Тестування на живому замовленні, передача
2–5 робочих днів
Прогін повного циклу під кожною групою покупців — від входу до рахунка й ТТН, потім передача доступів та інструкції менеджеру.
Працюємо офіційно
Договір, акт і рахунок — на кожен проєкт, а не тільки на великий. Без документів у вас немає ні прав на роботу, ні підстави провести витрати.
Договір, акт і гарантія 30 днів
На кожен проєкт письмовий договір: обсяг, строки, сума, порядок приймання. Після здачі — акт і рахунок, а далі 30 календарних днів гарантії: помилки з нашої вини усуваємо безоплатно. Усне з дзвінка дублюємо письмово того ж дня — домовленість, якої немає в тексті, не рахується.
ФОП і безготівковий розрахунок
Виконавець — зареєстрований ФОП. Оплата на рахунок із закривними документами, які бухгалтерія проведе як витрати. Курс для гривневої оплати фіксується договором, а не з’ясовується постфактум.
Права й доступи — ваші
Код, дизайн і матеріали переходять до вас після повної оплати. Домен, хостинг, репозиторій, аналітику й рекламні кабінети оформлюємо на вас — щоб сайт не залежав від підрядника. NDA підписуємо на запит, після завершення свої доступи видаляємо самі.
Портал клієнта замість переписки
На час роботи ви отримуєте доступ до порталу: договори, рахунки, акти й стан проєкту в одному місці. Документи формуються з даних угоди, тому реквізити й суми в них не розходяться, а про оплати й дедлайни нагадує система, а не пам’ять менеджера.
Замовники з Європи
Серед робіт — проєкти для Норвегії, Болгарії та Іспанії: болгарський магазин трьома мовами з кур’єрською доставкою, іспанський з оплатою карткою й переказом, норвезький сайт клініки. Це видно в портфоліо, а не тільки в описі.
Цифри, які можна перевірити
Кожен кейс у портфоліо — з посиланням на живий сайт і технічним виміром: швидкість відповіді, вага сторінки, обсяг каталогу, знайдені дефекти. Ці цифри можна зняти самому й звірити з нашими.
Спершу аудит, потім сума
Прайсу на сайті немає навмисно: обсяг тієї самої роботи у двох клієнтів відрізняється в рази, і цифра «від» нічого не пояснює. Спершу безкоштовний розбір — рахуємо ваші сторінки, дублі й швидкість, — потім називаємо суму й строк і фіксуємо їх у договорі.
Кажемо «ні», коли не впевнені
Якщо задача не наша, строк нереальний або послуга вам просто не потрібна — скажемо це першим листом, а не після передоплати. Гарантій позицій у пошуку не даємо: їх не дає ніхто, а обіцянка без механізму — це продаж, а не робота.
NDA підписуємо на запит. Після завершення співпраці наші доступи до ваших сервісів видаляємо самі й повідомляємо про це.
Що впливає на вартість
Чому дві однакові на вигляд задачі рахуються по-різному — і що саме ми міряємо на аудиті
Скільки цінових рівнівДві групи покупців — це налаштування. П'ять груп із власними знижками на категорії й персональними цінами на окремі позиції — це вже окрема логіка ціноутворення й тестування кожної комбінації на живому замовленні.
ДокументообігРахунок-фактура з номером і реквізитами, акт, ТТН. Кожен документ — це шаблон, підстановка даних із замовлення й перевірка на реальному замовленні, а не галочка в налаштуваннях.
Обмін з обліковою системоюЧитання прайсу файлом входить у роботу. Двосторонній обмін з 1С чи BAS — близько десяти робочих днів: залишки, ціни й статуси замовлень в обидві сторони.
Кабінет дилераІсторія, повтор замовлення, свої документи, ліміт і борг — близько семи робочих днів. Без реальної бази постійних клієнтів це не окупається: кабінетом просто не користуються.
Обсяг каталогуУ виміряних оптових каталогах розкид від 1 602 до 13 428 карток. Обсяг впливає не на дизайн, а на схему імпорту й на те, чи витримує фільтр підрахунок позицій.
Мовні версіїДруга мова — близько п'яти робочих днів. У двох із семи виміряних каталогів двомовність зроблена, але друга гілка не потрапила в карту сайту: для пошуку її не існує.
Не знайшли свій випадок?
Опишіть, як це влаштовано у вас, — відповімо, чи підходить «Розробка оптового B2B інтернет-магазину» і що це означає у вашій ситуації. Без брифу й без дзвінка: одне питання, одна відповідь.
Технології та інтеграції
На чому будуємо і з чим це з’єднується
Стек
OpenCart 4.x — ставимо за замовчуванням
OpenCart 3.x — коли потрібен модуль, якого під 4.x ще немає
PHP
MySQL
nginx
теми UniShop, UniShop2, chameleon, luxshop
ocmod
групи покупців OpenCart
Product Discount / Special
Інтеграції
безготівковий розрахунок
рахунок-фактура
переказ на IBAN
післяплата
Нова Пошта
Meest Express
Укрпошта
XML-вивантаження прайсу
Google Tag Manager
GA4
Google Ads (AW-10933820071)
Crisp
JivoSite
Свій оптовий магазин проти прайсу в Excel і кабінету на майданчику
Чим цей варіант відрізняється від «Excel-прайс / кабінет на майданчику»
Excel-прайс / кабінет на майданчикуНаш підхід
Актуальність цінExcel: у кожного клієнта своя версія файлу. Майданчик: ціни ведуться окремоодне джерело: імпорт із прайсу за розкладом
Хто бачить оптову цінуExcel: усі, кому переслали файл. Майданчик: за правилами площадкилише після входу, за групою покупця
Повторне замовленняExcel: нова переписка щоразу. Майданчик: залежить від функціоналудва кліки в кабінеті з історії
ДокументиExcel: менеджер робить руками. Майданчик: свої шаблони, змінити не можнарахунок-фактура формується із замовлення
Дані про клієнтівExcel: розкидані по пошті. Майданчик: доступ обмежений правиламиваша база, експорт у будь-який момент
Що потрібно від вас
Без цього не почнемо — краще підготувати заздалегідь
1Прайс у CSV або XML з усіма ціновими рівнями — саме він показує, скільки груп покупців треба заводити.
2Схема знижок: від чого залежить ціна — від групи клієнта, обсягу замовлення, категорії товару чи всього разом.
3Правила кратності й мінімальної партії по категоріях: фасування, упаковка, мінімальна сума.
4Зразки документів, які зараз виставляє менеджер: рахунок, специфікація, акт.
5Реквізити для безготівкового розрахунку і відповідь, чи потрібен ПДВ у рахунку.
6Одну людину з вашого боку, яка знає комерційні умови й може їх підтвердити без узгоджень.
Якщо чогось із цього немає — скажіть, підкажемо, як зібрати або зробимо самі окремою задачею.
Часті питання
Те, що питають найчастіше — з конкретними відповідями
чи можна показувати різні ціни різним клієнтам?
Так, це штатний механізм OpenCart: групи покупців і рівні цін. Клієнт бачить свою колонку після входу, роздрібний відвідувач — базову. Складність починається там, де ціна залежить не тільки від групи, а ще й від обсягу замовлення й категорії одночасно: тоді це вже окрема логіка, яку треба описати в ТЗ і протестувати по кожній комбінації.
скільки коштує оптовий магазин і від чого залежить сума?
Публічного прайсу ми не публікуємо: на опті різниця між проєктами надто велика, щоб одна цифра була чесною. Дві групи покупців із кратністю, безготівковим розрахунком та імпортом прайсу — це одна робота; кілька цінових рівнів із персональними цінами, кабінет дилера з історією й документами і вивантаження власного прайсу — зовсім інша. Головні драйвери суми — кількість цінових рівнів і кількість документів, які має закривати сайт замість менеджера. Обидва ці числа видно на безкоштовному аудиті, після нього й називаємо вартість.
скільки триває розробка?
30–55 робочих днів від затвердження ТЗ. Розкладка: бриф і розбір комерційної схеми 3–5 днів, ТЗ по цінах і документах 4–7, прототип каталогу й кабінету 4–7, дизайн і верстка 6–10, збірка цін і документів 7–13, імпорт та інтеграції 4–8, тестування на живому замовленні й передача 2–5. Найдовший етап — збірка, бо кожну комбінацію групи й ціни треба перевірити окремо.
як закрити кратність упаковки, щоб клієнт не замовив 7 штук із коробки по 12?
Кратність ставиться на рівні товару, і кошик просто не дає оформити некратну кількість — з підказкою, чому кнопка неактивна. Те саме з мінімальною партією й мінімальною сумою замовлення. Це не косметика: кожне таке замовлення інакше повертається до менеджера на ручне узгодження, і це найдорожчий спосіб приймати замовлення. І версійний нюанс, який чесніше назвати тут, ніж на етапі інтеграцій: за замовчуванням ми ставимо OpenCart 4.x, але кратність, сходинки цін і рахунок-фактуру в українських складаннях часто закривають модулі, які поки виходять під 3.x. Тому спершу звіряємо ваш перелік модулів: усе потрібне є під 4.x — ставимо 4.x; чогось під четвірку ще немає — обговорюємо 3.x на старті й фіксуємо версію в ТЗ.
чи можна виставляти рахунок прямо із замовлення?
Так, і саме це найчастіше знімає з менеджера найбільше рутини: реквізити, номер, позиції й суми підставляються із замовлення. У виміряних оптових каталогах рахунок-фактура як спосіб розрахунку є, наприклад, у білизняному — разом із безготівковим переказом і оплатою в пункті самовивозу. Перелік ваших документів фіксуємо на етапі ТЗ.
у нас каталог у 1С — як синхронізувати залишки?
Односторонній імпорт прайсу файлом входить у роботу: ціни й залишки оновлюються за розкладом. Двосторонній обмін з 1С чи BAS — окрема робота, близько десяти робочих днів, бо це синхронізація в обидві сторони: залишки й ціни сюди, статуси замовлень туди. Механіка тут проста — синхронізація прибирає найдорожчу помилку опту, продаж того, чого немає на складі.
чи потрібен кабінет дилера?
Залежить від того, як часто до вас повертаються. Якщо клієнт замовляє раз на квартал, кабінет стоятиме порожній. Якщо щотижня — кабінет із історією й повтором замовлення знімає з менеджера більшу частину переписки, і ця робота повертається часом, а не додатковими продажами. Чесна відповідь залежить від вашої частоти повторних замовлень, і її знаєте ви, а не ми.
оптовий магазин взагалі потрібен у пошуку?
Так, але не так, як роздрібний. Закупівельник шукає конкретні артикули й категорії, а не «купити дешево». Технічну частину ми закриваємо однаково: ЧПУ, canonical, унікальні title, карта сайту без дублів, JSON-LD. У виміряних каталогах саме тут найбільше дірок — у одному з них паралельно живуть дві карти сайту, стара з дублями й нова канонічна.
чим оптовий магазин відрізняється від роздрібного в розробці?
Каталогом майже нічим, а от усе після кнопки «купити» — інше. Ціна залежить від того, хто увійшов. Кількість обмежена кратністю. Оплата закривається документом. Реєстрація проходить модерацію, бо оптові ціни не показують випадковим відвідувачам. Кожна з цих речей — окремий шматок логіки, і саме вони, а не дизайн, дають різницю в строку між роздрібним і оптовим магазином.
що з гарантією й оплатою робіт?
Передоплата 50% на старті, решта — після приймання перед запуском. Два раунди правок на етапі дизайну входять у вартість, якщо вони в межах затвердженого ТЗ. Тридцять календарних днів після приймання безкоштовно виправляємо помилки з нашого боку (гарантійний строк за договором). Ціна в євро фіксується на 14 днів з дати пропозиції, гривнева сума перераховується за курсом НБУ на день виставлення рахунку.
Прайса на сайті немає навмисно: обсяг тієї самої роботи у двох клієнтів відрізняється в рази, і цифра «від» у такому разі нічого не пояснює. Спершу безкоштовний аудит — рахуємо ваші сторінки, дублі й швидкість, — потім називаємо суму й строк і фіксуємо їх у договорі.