In an ordinary shop a product has a price. In a B2B shop a product has a price for a specific customer, in a specific quantity, as of today - and that single difference is where everything else comes from: logging in, hidden prices, the ERP connection, order approval, and why a wholesale project costs several times what an ordinary shop does.
This article is a breakdown of requirements, not a quote. Use it to work out what a platform will do on its own and what is development.
A B2B price is calculated, not entered
A wholesale price list usually has four layers, and each one can override the one before it:
- Base price list - catalogue price with no discounts.
- Segment price tier - dealer, installer, end customer.
- Customer's individual price list - agreed prices on selected items.
- Quantity and promotional prices - different from five units, different until the end of the month.
The order in which the layers are evaluated is a commercial decision, not a technical detail. The question "during a promotion, does the individual price list apply or the promotional price, when the promotional price is higher?" has no universally correct answer, and it has to be answered by a sales director rather than a programmer. Left unanswered, it gets answered anyway - at random, and in code.
What this means when you ask for quotes: a supplier who does not ask about this at the first meeting either has not done B2B or is saving it for extra work.
You may show prices excluding VAT to businesses, not to consumers
This is the most common legal mistake in B2B shops that also sell to end customers.
A consumer has to know the final price including VAT before completing an order. The argument "the site says prices exclude VAT" does not hold: a consumer is not obliged to work the price out with a calculator. Quoting a price without tax to a consumer is therefore risky: the final price including taxes counts as material information, and withholding or distorting it falls under unfair commercial practices under § 4 of Act No. 634/1992 Coll. on consumer protection (misleading action § 5, misleading omission § 5a).
From that follows the only sensible solution: the display mode follows the login, not a toggle. A logged-out visitor and a customer with an end-consumer account see prices including VAT. A verified business account sees prices excluding VAT with the tax-inclusive amount next to them.
Rates as of 31 August 2026: standard 21 %, reduced 12 %, books and audiobooks 0 % (Czech VAT Act § 47). Rates did not change in 2026.
Hiding prices from logged-out visitors costs something, and it is fair to say so
Hiding prices behind a login is a legitimate commercial decision. It has a cost, though, that suppliers usually do not name.
What hidden prices close off: structured data with the price, and with it rich results in search; the feed into Google Merchant Center and comparison sites; and the chance of being found on a query that includes a price. The catalogue stays indexable; the selling argument disappears from the results.
What hidden prices give you: a competitor cannot see your dealer terms, and registration becomes a step after which you know who you are talking to.
There is a middle route, and it is usually better than either extreme: a public end price including VAT, dealer prices after login. Search engines have something to index and your commercial terms stay private.
A VAT number is verified against VIES, not against trust
Registering a business account by copying the VAT number from a field into a database is a future accounting problem. The field gets filled in with typos, with spaces, with and without the country prefix, and sometimes it belongs to a company that no longer exists.
Verification against the VIES register happens at registration and again on every subsequent purchase into another member state. The reason is practical: the reverse charge regime in cross-border B2B rests on the buyer holding a valid VAT number for intra-EU trade. The check takes a second and saves corrective tax documents.
The basic rule for the place of supply of services in B2B is the customer's location (Czech VAT Act § 9). Goods within the EU follow different rules and different exceptions, and this is the point where you ask an accountant, not an agency.
A non-VAT-payer becomes an identified person without a single crown of turnover
Something that surprises almost every new wholesaler, and it applies to you as a shop operator too.
A taxable person who is not a VAT payer becomes an identified person the moment they receive a service from a supplier not established in Czechia. No turnover threshold applies; the purchase itself is what counts (Czech VAT Act § 6g to § 6l). The registration application must be filed within 15 days of the day they became one (Czech VAT Act § 97).
In practice this means Google Ads, a platform subscription, an app from a foreign store, hosting or a design tool licence all trigger the obligation. An identified person declares and pays tax on the service received but has no right to deduct it - the tax is paid and does not come back.
That is not a reason to avoid buying anything. It is a reason to know about it in advance, because an unfiled registration accrues interest quietly, for years.
Buying on invoice is credit, not a payment method
The "Pay on invoice" button is the cheapest part of the whole thing. What is expensive is what has to stand behind it:
- A credit limit per customer, reduced by unpaid orders rather than only by overdue invoices.
- Payment terms per customer, not one set for everyone.
- A block when the limit is exceeded or an invoice is overdue, including the decision whether to block the order or merely send it for approval.
- A source of truth about debt. Accounting knows the receivables, the shop does not.
The last point decides the project budget. As long as the shop guards the limit from its own data, it guards it from incomplete numbers: a payment lands in the bank and the shop does not know. A live ERP connection solves that, and it is also where the project price grows. With ABRA Flexi we watch credit limits over the REST API in real time, with Pohoda over XML and mPohoda, with Helios and Money over SOAP or a custom data bridge. More on the CRM and ERP page.
In a company, the person placing the order is often not the one approving it
This gets forgotten because it does not exist in B2C. In a company several people usually share an account and have different rights:
- the buyer who assembles the order;
- the approver who releases it above a certain amount;
- the accountant who needs invoices and history but does not buy;
- a branch or cost centre with its own delivery address and its own budget.
From that come features an ordinary platform does not have: an awaiting approval order status, notifications to the approver, a cart saved as an enquiry, reordering from history, and bulk-adding to the cart from a list of codes. That last one often matters more to wholesale customers than the entire design: they buy from their own list rather than by browsing the catalogue.
Price lists are pulled from the ERP, not maintained by hand
An individual price list exists in the ERP, because that is where the sales rep creates it. It is transferred into the shop, and the direction of that transfer is decided once and firmly: the ERP is the source of truth about price and stock, the shop is the source of truth about the order.
Where that is not decided, you get the most expensive kind of B2B error: two different prices for the same goods in two systems, and an argument about which applied, three months after the fact. The question to ask before any technical one is: what happens when the two sides disagree?
How we build regular synchronisation and what to do when a data source drops out is covered in the article on supplier feeds.
Why a headless B2B portal starts at 250,000 CZK
Our published price is from 250,000 CZK for 10 to 14 weeks, while we build a shop on Shopify or WooCommerce from 50,000 CZK. The difference is fivefold, and design is not what makes it.
At our rate of 1,800 CZK per hour of e-commerce work that is roughly 138 hours against 27. That difference is work in a single place: price. Every layer of the price list means its own logic, its own tests and its own behaviour in the cart, on the invoice, on the credit note and in the feeds. Price is also the one thing in B2B that must never be wrong, because the error is multiplied by order size.
On top of that come the things that hide inside the price and consume time: user roles and rights, approval workflow, credit limits, two-way ERP synchronisation and test scenarios for every combination.
What a project price is made of, item by item, is covered in the article on the price of an e-shop.
When nobody can sell you a B2B portal, because you do not need one
This branch is wide and worth walking through before you start asking for quotes.
If you have one price list for all buyers, up to fifty active customers, you are paid up front or on a proforma invoice, you sell only in Czechia and Slovakia, and orders arrive by e-mail without trouble, then an ordinary shop with a customer group and a percentage discount is enough. Developing custom pricing logic will return you nothing.
That line moves as soon as any of these is true: you have more than one price tier, at least ten customers on individual price lists, you sell on invoice with payment terms, or the price list changes in the ERP more often than quarterly. At that point maintaining it by hand costs more than removing the manual work.
Twelve questions that make quotes comparable
Send them to every supplier at once and lay the answers side by side.
- In what order are price tiers, individual price lists and promotions evaluated?
- Who is the source of truth about price and stock - the ERP or the shop?
- What happens when the ERP and the shop disagree?
- How is the VAT number verified when a business account registers?
- Does a logged-out visitor see prices, and if not, what does that do to the feeds?
- How does the display switch between including and excluding VAT, and based on what?
- Where is the credit limit enforced and where does it get the receivables from?
- Can the system hold an "awaiting approval" order status, and who sets it?
- Can a list of codes be added to the cart in one go?
- How many users can one business account have, and with what rights?
- Who handles the reverse charge for a buyer from the EU?
- What does adding a thirteenth price tier cost a year after launch?
A wholesale shop is not bought on a template, nor even on a platform. It is bought on whether the supplier can describe what happens when two systems disagree on a price.
Send us your price lists, not a brief
The fastest route to a real quote goes through your data. We need a sample price list with its tiers, what system you use for accounting and stock, and how many customers are on individual pricing. That gives a more accurate estimate of scope than a brief of any length.
What we build and on what is on the e-shop development page; integrations with Czech ERPs and in-house systems are described on the CRM and ERP page.
Write to info@lamapixel.com or call +420 775 599 009.