A wholesale store differs from a retail store not by a catalog, but by what happens after clicking "buy": each customer has his own price, there is a minimum lot and multiple of packaging, and the order is closed with an invoice, not a check. OpenCart has buyer groups and price levels for this - the rest has to be completed. On July 31, 2026, we took measurements from seven wholesale catalogs: from 1,656 addresses in medical to 13,590 in linen, the first response of the server was 289-576.8 ms. Terms - from 30 working days. We name the cost after the free audit: it depends on how many price levels and how many documents the site has to close instead of the manager.
ms on directories from 1.6 to 13.6 thousand addresses
on the catalog of 1,848 items, the analyst does not collect data from 2023
What was found inside
30-55
Guide
working days, cost — after audit
Who it's for
Situations where this service delivers results
Scenario 1 of 4
You sell to dealers and give everyone your price
Now it lives in Excel and in the head of the manager: the file was forwarded, the price is out of date, the client is arguing. OpenCart buyer groups transfer the price steps to the site - the dealer sees his column after logging in, the retail visitor the basic one. The price source is one, and it is updated by import, not by mail.
We'll review your situation in a free audit
Scenario 2 of 4
The order is sent in batches, not pieces
Multiplicity of packaging, minimum order amount, packaging, size grids inside the model. In the wholesale underwear store from our sample, this is done by selecting sizes and colors inside the card: the buyer chooses the assortment in one place, instead of going through 40 pages. The catalog there holds 13,428 product cards.
Scenario 3 of 4
The client needs a document, not a check
Non-cash settlement, invoice, transfer to IBAN. In measured catalogs, this is the norm: in linen, there are eight methods of calculation, including an invoice; in the catalog of sewing spare parts — cash without VAT to the FOP account and payment upon receipt at the carrier's warehouse.
Scenario 4 of 4
Half of the manager's time is spent on repeat orders
The cabinet with history makes a repeat operation in two clicks: the client opens a previous order and repeats it. This is about seven working days, and it makes sense only where customers really order regularly - otherwise no one uses the office.
Cases
Tasks and results in numbers — all metrics measured by us
wholesale store of underwear, catalog of over 13,000 items
Task
Selection by sizes and colors within the model, packaging, wholesale prices by order levels.
Solution
OpenCart. Eight payment methods — from Privat24 to invoice — are presented both in text and in JSON-LD via acceptedPaymentMethod.
Result
13,590 addresses in the site map (13,428 product cards, 161 categories, main), only one duplicate — 0.007%. TTFB 289 ms. Defects found: the HTML of the main page is 751.2 KB, and the standard addresses of the site map give an empty body - the working one is on a non-standard path. Measured on 07/31/2026.
wholesale store of cosmetics for the beauty industry, catalog of about 4,000 items
Task
Wholesale catalog with brand and category navigation and quick checkout for buyers.
Solution
OpenCart, a canonical sitemap at a separate address. WayForPay, cash on delivery, bank account, two delivery services, six types of JSON-LD.
Result
4,167 addresses in the canonical site map: 3,947 products, 166 brands, 47 categories, 6 information pages and the main page. TTFB 576.8ms at 192.4KB HTML. Defect found: an old site map with 7,782 entries for 2,755 unique addresses lives in parallel, and there is not a single address of the second language version in it. Measured on 07/31/2026.
B2B catalog of spare parts for industrial sewing machines
Task
Find a part by code or equipment model in a minimum of steps: an error in selection costs production downtime.
Solution
OpenCart, selection of parts by machine model, technical diagrams, availability request form. Cash without VAT to the FOP account.
Result
1,992 addresses in the site map without a single duplicate — 1,848 product cards and 138 categories. TTFB 388.1ms at 120.2KB HTML, third lightest sample page. Defect found: Universal Analytics is still in the code, GA4 is not there at all - analytics does not collect data from July 2023. Measured on 07/31/2026.
wholesale supplier of goods from China, B2B catalog of about 6,000 items
Task
Allow business customers to order the assortment directly: a catalog with wholesale prices and a short path from searching for an item to an order.
Solution
OpenCart 3, two language versions with a separate sitemap for each. FAQPage and BreadcrumbList micro-markup, chat, postpaid.
Result
5,830 products, confirmed by two methods: OpenCart search returned 58 pages of 100 items plus 30, sitemap - 6,234 addresses in each of the two languages, total 12,468. TTFB 506.9ms, full load 552.7ms at 333.1KB. Measured on 07/31/2026.
What's included
Complete list of work and what you get as a result
Buyer groups and price levels: retail, dealer, key customer - everyone sees their own column after logging in
Wholesaler registration with manual moderation: access to wholesale prices is opened by the manager, not the form
Multiplicity of packaging, minimum batch and minimum amount in the basket with a hint why the button is inactive
Quick order by list: article number and quantity in the form, without going to each card
Client's office: order history, previous order repeat, statuses and documents
Documents: invoice from the order, non-cash settlement, transfer to IBAN
Price import with field mapping and price and balance update schedule
XML upload of own price for dealers and platforms
Technical SEO: CNC, canonical, unique title, sitemap without duplicates, JSON-LD Store and BreadcrumbList
GA4 analytics with cart and checkout events — so you can see where the shopper is dropping off
When this service isn't right
What's not included — so there are no surprises at delivery
Bookkeeping and creation of primary documents in your accounting system
Filling the catalog with descriptions and characteristics
Legal texts: offer contract, return conditions for legal entities
Hosting, domain, acquiring
Finding dealers and working with the base is marketing, not development
Process steps
Transparent stages with approval at every step
Total duration:30–55 days
1
Brief and analysis of the commercial scheme
3-5 working days
Who are your customers, how many price levels do they have, how is the order currently agreed and which documents does the manager close with his hands.
2
TK: buyer groups, prices, documents
4-7 working days
The "buyer group → price → conditions" matrix, multiplicity and minimum batch rules, a list of documents and who forms them. This is the most important document of the project.
3
Prototype catalog and cabinet
4-7 working days
Buyer scenario from item search to invoice, quick list order form, cabinet structure. We agree to the design.
4
Design and layout
6-10 working days
Catalogue, card with dimensional grid and packing, basket with hints about multiplicity, cabinet. A wholesale interface is information density, not image density.
5
Assembly: prices, multiplicity, basket, documents
7-13 working days
Groups of buyers, price tiers, basket limits, creation of an invoice, moderation of dealer registration.
6
Catalog import and integration
4-8 working days
Price mapping, update schedule, delivery, analytics with cart events, uploading own price for dealers.
7
Testing on a live order, transmission
2-5 working days
Running a full cycle under each group of buyers — from login to the account and TTN, then transferring access and instructions to the manager.
Contract, act and 30-day warranty
Every project gets a written contract: scope, deadlines, amount, acceptance procedure. After delivery — act and invoice, then 30 calendar days of warranty.
Sole proprietor & bank transfer
The contractor is a registered sole proprietor. Payment by invoice with closing documents.
Rights & access — yours
Code, design and materials transfer to you after full payment. Domain, hosting, repository and analytics are registered to you.
Client portal instead of email chains
During the project you get access to a portal: contracts, invoices, acts and project status in one place.
European clients
Among our work — projects for Norway, Bulgaria, Moldova and Spain.
Verifiable numbers
Every case in the portfolio comes with a link to a live site and a technical measurement.
Audit first, then pricing
There is no price list on the site intentionally: the scope of the same work differs multiples between clients.
We say "no" when unsure
If the task isn't ours or the deadline is unrealistic — we tell you upfront.
What affects the price
Why two seemingly identical tasks are priced differently
How many price levels?The two buyer groups are settings. Five groups with their own discounts for categories and personal prices for individual items — this is already a separate logic of pricing and testing of each combination on a live order.
Document managementInvoice with number and requisites, act, TTN. Each document is a template, substitution of data from the order and verification on the real order, not a check mark in the settings.
Exchange with accounting systemReading the price file is included in the work. Two-way exchange with 1C or BAS - about ten working days: balances, prices and statuses of orders both ways.
Dealer's officeHistory, repeat order, own documents, limit and debt - about seven working days. Without a real base of regular customers, it does not pay off: the office is simply not used.
Catalog volumeThe measured wholesale catalogs range from 1,602 to 13,428 cards. The volume does not affect the design, but the import scheme and whether the filter can handle item counting.
Language versionsThe second language takes about five working days. Two of the seven measured catalogs have bilingualism, but the second branch did not make it to the site map: it does not exist for searching.
Did not find your case?
Describe how it works on your side — we will tell you whether “Development of a wholesale B2B online store” fits and what it means in your situation. No brief and no call: one question, one answer.
Technologies & integrations
What we build on and what it connects to
Stack
OpenCart 4.x is set by default
OpenCart 3.x — when you need a module that is not yet available under 4.x
PHP
MySQL
nginx
themes UniShop, UniShop2, chameleon, luxshop
ocmod
OpenCart buyer groups
Product Discount / Special
Integrations
non-cash settlement
invoice
transfer to IBAN
postpaid
Nova Poshta
Meest Express
Ukrposhta
XML price download
Google Tag Manager
GA4
Google Ads (AW-10933820071)
Crisp
JivoSite
Your wholesale store against the price in Excel and an office on the site
How this option differs from the alternative
Excel price / office on siteOur approach
Actuality of pricesExcel: Each client has its own version of the file. Maidanchik: prices are kept separatelyone source: import from the schedule price
Who sees the wholesale priceExcel: Everyone to whom the file is forwarded. Field: according to the rules of the fieldonly after login, by buyer group
Repeat orderExcel: new correspondence every time. Field: depends on the functionalitytwo clicks in the history room
DocumentsExcel: the manager does it with his hands. Maidanchik: own templates, cannot be changedthe invoice is generated from the order
Customer dataExcel: scattered in the mail. Field: access is restricted by rulesyour database, export at any time
What we need from you
We can't start without this — best to prepare in advance
1Price in CSV or XML with all price levels - it shows how many groups of buyers should be created.
2Discount scheme: what does the price depend on - the client group, the volume of the order, the product category or everything together.
3Multiplicity and minimum batch rules by category: packaging, packaging, minimum amount.
4Samples of documents currently issued by the manager: invoice, specification, report.
5Details for non-cash payment and an answer as to whether VAT is required on the invoice.
6One person on your side who knows the commercial terms and can confirm them without negotiation.
If something is missing — let us know, we'll help you gather it or do it as a separate task.
FAQ
Most frequently asked questions — with concrete answers
Can I show different prices to different customers?
Yes, this is the standard mechanism of OpenCart: buyer groups and price levels. The client sees his column after logging in, the retail visitor - the basic one. The complexity begins where the price depends not only on the group, but also on the volume of the order and the category at the same time: then this is already a separate logic that must be described in the TOR and tested for each combination.
How much does a wholesale store cost and what does the amount depend on?
We do not publish the public price: the difference between the projects is too big for a single figure to be fair. Two groups of buyers with multiplicity, cashless settlement and price import are one job; several price levels with personal prices, a dealer's office with history and documents and uploading your own price is completely different. The main drivers of the amount are the number of price levels and the number of documents that the site has to close instead of the manager. Both of these numbers are visible on the free audit, after which we call the cost.
How long does development take?
30–55 working days from approval of technical specifications. Layout: brief and analysis of the commercial scheme 3-5 days, TOR on prices and documents 4-7, prototype of the catalog and cabinet 4-7, design and layout 6-10, assembly of prices and documents 7-13, import and integration 4-8, testing on live order and transfer 2-5. The longest stage is assembly, because each combination of group and price must be checked separately.
How to close the multiplicity of packaging so that the customer does not order 7 pieces from a box of 12?
Multiplicity is set at the level of the product, and the cart simply does not allow you to issue multiples - with a hint why the button is inactive. Same with minimum batch and minimum order amount. This is not cosmetic: each such order is otherwise returned to the manager for manual approval, and this is the most expensive way to take orders. And a version nuance, which is more honest to mention here than at the stage of integrations: by default, we install OpenCart 4.x, but the multiplicity, price steps and invoice in Ukrainian assemblies often close the modules that are still available under 3.x. Therefore, first we check your list of modules: everything you need is available under 4.x - install 4.x; there is nothing under the four yet - we discuss 3.x at the start and fix the version in the TK.
Can I bill directly from the order?
Yes, and this is what most often removes the most routine from the manager: details, number, items and amounts are substituted from the order. In the measured wholesale catalogs, the invoice is a method of payment, for example, in linen — together with cashless transfer and payment at the pick-up point. We fix the list of your documents at the TK stage.
We have a catalog in 1C - how to synchronize balances?
One-way file price import is included: prices and balances are updated on a schedule. Two-way exchange with 1C or BAS is a separate job, about ten working days, because it is a two-way synchronization: balances and prices here, order statuses there. The mechanics here are simple - synchronization removes the most expensive mistake of wholesale, selling what is not in stock.
Do you need a dealer's office?
Depends on how often they come back to you. If the client orders once a quarter, the office will be empty. If every week - a cabinet with a history and repeat order takes most of the correspondence off the manager, and this work is returned in time, not in additional sales. The honest answer depends on your repeat order frequency, and you know that, not us.
Is a wholesale store even necessary in the search?
Yes, but not like retail. The buyer is looking for specific articles and categories, not "buy cheap". We close the technical part in the same way: CNC, canonical, unique title, site map without duplicates, JSON-LD. In the measured catalogs, this is where the most holes are found - in one of them, two site maps live in parallel, the old one with duplicates and the new canonical one.
How does a wholesale store differ from a retail store in development?
The catalog is almost nothing, but everything after the "buy" button is different. The price depends on who entered. The number is limited to multiples. The payment is closed with a document. Registration is moderated, because wholesale prices are not shown to random visitors. Each of these things is a separate piece of logic, and it is they, not the design, that make the difference in terms of time between a retail store and a wholesale store.
What about the warranty and payment for the work?
Advance payment of 50% at the start, the rest — after acceptance before the start. Two rounds of edits at the design stage are included in the cost if they are within the approved TOR. Thirty calendar days after acceptance, we correct errors free of charge (warranty period according to the contract). The price in euros is fixed for 14 days from the date of the offer, the hryvnia amount is converted at the NBU exchange rate on the day of invoicing.
Send a price list with price levels and a sample invoice issued by the manager.
In response, the matrix "buyer group → price → conditions", a list of what the site will close instead of the manager, and an estimate by stages with calendar dates.
From measured cases13,590 addresses in the site map (13,428 product cards, 161 categories, main), only one duplicate
There is no price list on the site on purpose: the same work differs several times over between two clients, and a “from” figure explains nothing in that case. First a free audit — we count your pages, duplicates and speed — then we name the sum and the deadline and fix both in the contract.