
A reseller logs in and still sees €49. A distributor gets a “WHOLESALE20” code that is on a Facebook group by Tuesday. That is not a group price. Shopify customer group wholesale prices means the buyer is signed in, belongs to one tier, and sees only that number. Everyone else keeps the catalog price.
Shopify tags group people. They do not write a unit price. OO - EU B2B & Wholesale attaches those groups to Custom Pricing, volume breaks, or — on Growth — one bulk form per tier. An earlier article covered B2B pricing for customer groups in overview. This one is the module choice: product-page list versus bulk form, without overwriting retail.
You can stamp `Wholesale_T1` on a customer. `product.price` does not care. Shopify B2B catalogs exist; Catalogs and pricing maps prices to companies and locations, with a cap unless you are on Plus. Plenty of EU shops run mixed D2C + wholesale on ordinary customer accounts. Then the group is a tag, and the money is an app rule.
Skip the rule and you get one of three messes: everybody pays retail, everybody sees wholesale, or a code leaks. None of those is a customer group.
One discount code for “all B2B”. It lives in checkout. Logged-out visitors can apply it. You can disable the code; you cannot unsend the screenshot.
Draft orders typed by staff. Correct amounts, zero self-service, one extra zero on a tired Friday.
A single bulk form set to All customers. Common B2B setup mistakes calls that out: retail sees wholesale. Use tags or logged-in only. Do not use “everyone” on a B2B form.
What is included maps the modules. Turn a module on from its hub before you expect it on the storefront.
Custom Pricing lives under B2B pricing. It can show a B2B amount on the product page through the shared app embed. The listing line is *Custom B2B Pricing: Set tailored prices for your EU B2B customers and groups*. Free: one active Custom Pricing list. Extra lists are stored; only the oldest active list is used on the storefront. Starter drops that cap: unlimited custom pricing, unlimited volume pricing, company blocks for custom + volume, and Login to see prices.
Volume pricing is Starter. Breaks on the product page, separate from bulk forms.
Bulk forms are Growth. How B2B pricing works: the form shows the B2B price; Shopify catalog prices stay put for everyone else. Custom Pricing and Volume remain the product-page modules. A customer sees one form. Other forms do not stack. Inside a form you pick one strategy: per-product prices, one fixed price, or a percentage off the Shopify price (so it follows catalog changes).
Bulk-form checkout uses a draft order. Keep Validate custom prices on the server on so the unit price is recalculated. The app embed must be on. Do not also enable Use draft order logic in Tax Exempt — that VAT path is separate and should not run at the same time.
Live listing: Built for Shopify, 5.0 (34 reviews). Free: 1 custom pricing rule, 1 registration form. Starter $22/month (or $220/year). Growth $37/month (or $370/year). 14-day trial on paid plans. USD. Ignore leftover $8.95 copy elsewhere.
Fasteners shop. D2C stays on the catalog. Three B2B layers, copied from the multiple bulk forms example:
| Group | Tag | Where | Price | | --- | --- | --- | --- | | Small reseller | `Wholesale_T1` | Form A (Growth) or a Custom Pricing list (Starter) | 10% off catalog | | Large reseller | `Wholesale_T2` | Form B | fixed net prices | | Distributor | specific customers | Form C | per-SKU prices |
One form per group. Do not reuse tags. Visibility: Customers with tags; the buyer must be logged in. OR matching inside one form (`B2B` or `Wholesale`) is fine. The same tag on two forms is a conflict. Visibility rules rank specific customers → tags → logged-in → all. First match wins.
Test each group: log in as that customer, confirm form or product price, place an order. Adding a tag in the form’s visibility list does not stamp it on customers. You tag them in Shopify, or after registration approval.
One wholesale deal and they buy from the product page? Starter + Custom Pricing + Login to see prices is enough. Several tiers plus an order sheet per tier: Growth.
Install OO - EU B2B & Wholesale. Turn Custom Pricing on. Finish setup so the embed sits on the live theme.
Name groups. Unique tags. No overlap.
Prove one active list on Free: logged-in reseller sees a different amount. Move to Starter when you need more lists or hide-price-until-login.
Several tiers on a bulk page: Growth, one form per tag, one strategy per form, server-side validation on.
Log in as T1, T2, and a logged-out visitor. Three outcomes, or retail with no B2B number.
New theme: add the embed or block again. App config survives; the storefront hook does not.
Shopify customer group wholesale prices are a tag plus one module — a Custom Pricing list on the product page, or a Growth bulk form per tier. Retail keeps the catalog. Groups do not overlap. You test per login, not with a code you hope nobody forwards.
Put the list in OO - EU B2B & Wholesale. The distributor should see their rate. The guest should not.
Services
Reviews
5/5
Mail: info@onlineorigins.nl
Tel: 073 234 0612
KVK: 89825624
BTW: NL865123639B01
Bruistensingel 500,© 2026 Online Origins