Login in a B2B store is not an ordinary customer account - it is the gate that decides who gets to see your prices at all. In a retail store registration is a convenience; in a wholesale store it is a condition of access: until a trade customer is verified and approved, they see the catalogue without prices, or they do not see it at all. The whole trick is keeping that gate from turning into a bottleneck - a real company with a valid tax ID should get through registration in two minutes, and a retail shopper or a curious competitor should not get through at all.
Below I lay out how to structure trade customer registration, what you can check automatically in public registers, and how to hide wholesale prices properly.
How B2B login differs from an ordinary customer account
A B2B account is a company account, not a person’s. That single difference drags everything else with it: the registration data is a tax ID and a company name instead of a first and last name, the account has a “pending approval” state, and once logged in the user sees different prices than a visitor off the street.
Four things that do not exist in a retail store and are mandatory in B2B:
- An approval stage - registration does not grant access straight away, it submits the trade customer for approval
- A price group - once approved, the account is assigned a discount, a price list or individual prices
- Multiple users in one company - the buyer, the warehouse manager and the owner log in separately but order on the same account and the same terms
- Commercial terms - credit limit, payment terms, permitted delivery methods; these belong to the account, not to a single order
If the store has to serve wholesale and retail at the same time, think it through before you start building - I laid out the options in the piece on a B2B and B2C store in one.
What trade customer registration should look like, step by step
Good B2B registration has one job: collect the minimum data needed to issue an invoice and to decide on approval. Every extra field is a percentage of people who drop out halfway.
- Tax ID as the first field - with a “Fetch company data” button right next to it
- Auto-fill of the company name and address from the register, with the option to correct it by hand
- Contact details for a person - name, work email, phone
- One open field - “what does your company do” or “how did you hear about us”; this is the best filter against random submissions
- Consents and terms - separate checkboxes, not one lumped-together tick
- A confirmation screen with a clear message: “request received, we will get back to you within one business day”
That last point matters more than it looks: a trade customer who lands on a blank page after registering and does not know whether to wait will simply call your competitor. Collect additional data later, at the first order - ideally as custom checkout fields rather than in the registration form.
Tax ID verification - what can be checked automatically
Verifying a tax ID means comparing the number the customer gave you against a public state register. In Poland there are three independent sources and each answers a different question.
| Register | What it confirms | When to use it |
|---|---|---|
| GUS (the REGON database run by Poland’s statistics office) | whether the NIP, the Polish VAT/tax ID, exists, plus the full name, address and trading status | always - to auto-fill the registration form |
| The VAT taxpayer white list (Poland’s official register of active VAT payers) | whether the company is an active VAT payer and which bank accounts it uses | before selling on deferred payment terms |
| VIES | whether a company from another EU country has an active EU VAT number | for cross-border sales at the 0% rate |
All three have public APIs and are free, but they require an access key or staying within request limits - and those limits do get changed, so check the current documentation of the register before you build. In practice I do it like this: the GUS query fires the moment the tax ID is typed in, and the white list check happens at account approval and then periodically, because VAT status can change during a working relationship.
One thing that is easy to forget: the data from registration ends up on the invoice. A typo in the tax ID, which used to cost a phone call and a correction, can now stall the document entirely, because B2B invoices are required to pass through KSeF, Poland’s mandatory e-invoicing system - from February 2026 for the largest companies and from April 2026 for everyone else. How to wire a store into invoicing I described in the piece on WooCommerce integration with ERP and KSeF.
Account approval - manual, automatic or hybrid
Account approval is the moment a submission turns into an active trade customer with access to prices. There are three models and the choice depends on how many submissions you get per week.
| Model | How it works | Who it suits |
|---|---|---|
| Manual | every submission is approved by a human | few submissions, high margins, relationship selling |
| Automatic | valid tax ID in the register plus active VAT status = account live immediately | many submissions, a standard price list, low risk |
| Hybrid | the automation lets them into the lowest price group, a human raises the terms | the most common and safest choice |
I recommend the hybrid almost every time. The trade customer does not wait, because they immediately see base prices and can place an order, while you decide on discounts and credit limits calmly, after checking the company out. On top of that comes a hard rule: a rejection needs its own email too. A customer rejected in silence calls up with a complaint; a customer who gets a polite “we do not sell into this sector” does not call at all.
If the registration form starts collecting bots and junk submissions, that is a separate problem to solve - junk sign-ups need their own defences, from a honeypot field to rate limiting.
How to hide wholesale prices from logged-out visitors
Hiding prices from visitors is a setting that has to work in every place in the store, not just on the product page. This is where I most often see holes - the price disappeared from the listing but leaked into Google’s search results, into the XML feed for a comparison engine, or into the page’s structured data.
The complete list of places to check:
- Category listings and internal search results
- The product page, including variants and variant prices
ProductandOfferstructured data in the page source- Product feeds: XML, CSV, comparison engine integrations
- The cart preview and “recently viewed” thumbnails
- The store API, if it is publicly reachable
- Automated emails containing products
Instead of an empty gap where the price was, show a call to action: “Log in to see the price” plus a link to registration. A catalogue without prices can be a standalone solution in its own right - if you do not need a cart, only a presentation of the offer and quote requests, look at the variant with catalogue mode instead of a store.
What a B2B account should be able to do once logged in
After logging in, a trade customer should see their own terms, not a generic store with a different price on it. The minimum that in my view decides whether they come back:
- An individual price list or a group discount, visible right next to the product
- Quick ordering by pasting a list of SKUs and quantities, without clicking through categories
- Reorder from history with one button
- Invoices and documents downloadable from the account
- Stock levels presented in a way that does not give away your entire logistics - often “in stock / to order” is enough
- Multiple users within one company, with separate permissions for placing and approving orders
I described that whole set in the piece on an order portal for trade customers - because the difference between “login with a discount” and a real B2B portal is exactly these features.
The most common mistakes that break B2B login
A few things repeat in almost every store I get handed to fix:
- The account tied to a person, not a company - the buyer leaves the job and the company loses access to its order history
- No information about the state of the submission - the customer does not know whether they are waiting for approval or have been rejected
- Confirmation emails landing in spam - registration works, but nobody receives their password
- Tax ID verified by format only - a checksum test lets through any correctly constructed but non-existent number
- Zero synchronisation with the warehouse and accounting system - the customer has different terms in the store than in your ERP
The last point is the most expensive in its consequences, because it leads to re-typing orders by hand. It is solved by connecting the store to the trading system, so that the customer’s data and their price list have a single source of truth.
Where to start if you want to build this
I always begin with a free diagnosis: I look at your current store or at the way you take orders from companies today, and I tell you plainly whether extending the existing store is enough or whether you need a separate B2B portal. The diagnosis ends with a list of steps you can carry out without me too.
For anything larger I work on a fixed-bid quote: you get the scope and the amount in writing before the start, with no hour counting. Projects this size usually land in the 5,000-10,000 PLN net range (Polish market rates), and the exact figure depends on the number of integrations and how much pricing logic has to be carried over from the warehouse system. How I build a store for trade customers and what is included, I describe on the service page.
Frequently asked questions
Can a B2B store show prices without login? It can, but then your competitors and your retail customers see them too. A common compromise is showing list prices to everyone and wholesale prices and discounts only after login. This is a commercial policy decision, not a technical one - both versions can be built.
How do I check a trade customer’s tax ID automatically? Through the public API of the REGON database run by GUS, Poland’s statistics office, which returns the name, address and status of a company for a given number. It is complemented by the VAT taxpayer white list (which checks VAT status and bank accounts) and by VIES for customers elsewhere in the European Union. The registers themselves are free and only require an access key and staying within request limits.
How long does it take to build registration with tax ID verification? In an existing WooCommerce store it is usually a matter of days, not weeks: the form, the connection to the register, the account states and the price-hiding mechanics. What takes longer is agreeing the business rules - who approves, what the price groups are, and what happens to a customer who exceeds their limit.
Do I need a separate B2B platform, or is a regular store enough? If you have up to a few hundred trade customers and a simple discount model, an extended store with login and price groups is enough. A separate platform starts to pay off with individual per-customer price lists, credit limits and full synchronisation with a warehouse system. I assess where that line falls during the diagnosis, because moving to a large platform too early can cost more than it brings in.
Running a store where something does not work the way it should? I build and rebuild WooCommerce stores - from a single fix to reworking the whole sales flow. Tell me what you are dealing with and I will send back a scope and a price.