• Online Stores

Wholesale online store for B2B

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.
See how it works
Price
after a free audit
Guarantee
30 days after project sign-off
B2B directories were measured
7 wholesale stores, measurement 07/31/2026
after a free audit
Price
30
Guarantee

days after project sign-off

7
B2B directories were measured

wholesale stores, measurement 07/31/2026

13,590
The most accurate sample site map

addresses, of which only 1 duplicate — 0.007%

289–576.8
The first response from the server

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
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

Actuality of pricesone source: import from the schedule price
Who sees the wholesale priceonly after login, by buyer group
Repeat ordertwo clicks in the history room
Documentsthe invoice is generated from the order
Customer datayour database, export at any time
What we need from you

We can't start without this — best to prepare in advance

  1. Price in CSV or XML with all price levels - it shows how many groups of buyers should be created.
  2. Discount scheme: what does the price depend on - the client group, the volume of the order, the product category or everything together.
  3. Multiplicity and minimum batch rules by category: packaging, packaging, minimum amount.
  4. Samples of documents currently issued by the manager: invoice, specification, report.
  5. Details for non-cash payment and an answer as to whether VAT is required on the invoice.
  6. One 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

View cases
  • Reply within 2 hours
  • No commitment
  • We work under a contract

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.