Shopify wholesale portal · Updated 2026
A Shopify wholesale portal on its own subdomain —
no app store, no theme edits.
Hasil Pricing adds a gated B2B wholesale portal to any paid Shopify store at {your-store}.hasilportal.com — separate from your retail storefront, with per-customer price lists, quantity breaks, and draft-order checkout. Admin API token only. No Shopify App Store. No theme edits. No Shopify Plus required.
No credit card · No App Store install · No theme edits
The problem
Why most Shopify wholesale setups go wrong
Shopify merchants who want to sell B2B at negotiated prices usually end up with one of two bad options:
- Overlay wholesale apps that edit your Shopify theme and bolt B2B logic onto your retail storefront. The same template now has to serve retail browsers and logged-in wholesale buyers, your conversion rate becomes everyone's problem, and every theme update is a re-test.
- Shopify Plus at roughly $2,300/month — a full enterprise plan upgrade for what is, for most stores, a single need: a gated portal with per-customer pricing.
What most operators actually want is a clean wholesale portal on its own URL, completely separate from the retail storefront, with per-customer price lists and a checkout that lands as a Shopify draft order so they can invoice and fulfil from Shopify like normal. That's what Hasil Pricing is.
Architecture
Two separate front doors. One Shopify backend.
Retail browsers hit your Shopify storefront on your normal domain. B2B buyers hit the wholesale portal on its own subdomain. Both end up as orders inside the same Shopify Admin — wholesale ones arrive as draft orders.
┌───────────────────────┐ ┌───────────────────────────┐
│ Retail storefront │ │ Wholesale portal (gated) │
│ your-store.com │ │ {store}.hasilportal.com │
│ (Shopify theme, │ │ (login required, │
│ public, untouched) │ │ per-customer pricing) │
└──────────┬────────────┘ └─────────────┬─────────────┘
│ │
│ checkout │ checkout
▼ ▼
┌──────────────────────┐ ┌──────────────────────────────┐
│ Shopify checkout │ │ Shopify draft order │
│ (retail orders) │ │ (you invoice + ship from │
│ │ │ Shopify; Hasil never │
│ │ │ touches funds) │
└──────────┬───────────┘ └──────────────┬───────────────┘
│ │
└──────────────┬─────────────────────┘
▼
┌─────────────────────┐
│ Shopify Admin │
│ (one backend, │
│ one inventory, │
│ one fulfilment) │
└──────────▲──────────┘
│ Admin API token (read-only mostly)
┌──────────┴──────────┐
│ Hasil Pricing │
│ catalogue + price │
│ lists + customers │
│ · No theme edits │
│ · No funds touched │
│ · 30-day payload │
│ auto-purge │
└─────────────────────┘The retail theme and the wholesale portal are different URLs with different audiences. Hasil reads the catalogue and customers from Shopify over the Admin API token and writes wholesale orders back as draft orders. Funds never flow through Hasil.
How it works
5 steps to a live Shopify wholesale portal.
- 1
Connect Shopify with an Admin API token
In Shopify Admin → Settings → Apps and sales channels → Develop apps, create a custom app and copy the Admin API access token. Paste it into Hasil. No Shopify App Store install, no Shopify Partner account, no theme edits to your retail storefront.
- 2
Your portal goes live at {store}.hasilportal.com
Hasil automatically provisions a gated wholesale subdomain — {your-store}.hasilportal.com — that is completely separate from your retail storefront. Different URL, different audience, different login. Your retail theme and conversion rate stay untouched.
- 3
Invite B2B customers and build per-customer price lists
Create custom price lists per customer or customer group: fixed wholesale prices, quantity breaks, volume discounts, MOQs. Assign price lists to customers individually or by group. Import existing wholesale buyers from a CSV or from Shopify customer tags.
- 4
Customers log in, see only their negotiated prices, and order
Each B2B customer signs into the portal and sees the catalogue with their negotiated prices applied — retail prices are never shown. They place an order through the portal, and that order is created in Shopify as a draft order automatically, tied to their customer record.
- 5
You invoice and ship from Shopify as usual — Hasil never touches funds
Open the draft order in Shopify Admin, send the invoice from Shopify, collect payment through Shopify (or whatever terms you've agreed), and fulfil from Shopify. Hasil moves the order, never the money.
What it isn't
Three things this is NOT.
Most failure modes of Shopify wholesale come from one of these three patterns. Hasil Pricing was built to avoid all three.
Not an overlay app
Hasil Pricing doesn't edit your Shopify theme or bolt B2B logic onto your retail storefront. Your retail conversion rate is not the price of running wholesale. The portal lives on its own subdomain.
Not on the Shopify App Store
Connection is an Admin API token you create in Shopify Admin. No App Store install, no Shopify Partner approval, no review queue. You're connected the same afternoon you decide to try it.
Doesn't touch your funds
Wholesale orders are written back to Shopify as draft orders. You invoice from Shopify, collect through Shopify, fulfil through Shopify. Hasil is never in the money path.
Pricing. Hasil Pricing is $29/month (Starter), $69/month (Growth), or $129/month (Plus), with a 14-day free trial and no credit card. Annual billing is two months off. Pair with Hasil Sync (Odoo ↔ Shopify) and the second product is 20% off.
Three design rules
Every plan, no exceptions.
Admin API token only
No Shopify App Store, no Partner account, no theme edits. You paste a token, we read the catalogue and customers we need.
We never touch funds
Wholesale orders land as Shopify draft orders. You invoice and collect through Shopify. Hasil moves data, never money.
Minimal data, 30-day purge
Raw webhook and order payloads auto-delete after 30 days. We keep only the durable mappings the portal needs.
Free playbook
Not ready to launch wholesale today? Take the playbook.
Free Shopify B2B Pricing Playbook — pricing models, gated-portal patterns, and the exact draft-order flow Hasil uses. 18 pages, no fluff.
FAQ
Shopify wholesale portal — common questions
How do I add a wholesale portal to Shopify without the App Store?+
Hasil Pricing connects to Shopify with an Admin API token you generate yourself in Shopify Admin → Settings → Apps and sales channels → Develop apps. There is no App Store install, no Shopify Partner account, and no theme edits. Once the token is pasted into Hasil, your wholesale portal is provisioned at {your-store}.hasilportal.com and you can start inviting B2B customers and building price lists.
Does a Shopify wholesale portal require Shopify Plus?+
No. Shopify Plus includes B2B features but costs roughly $2,300/month and is overkill for most merchants whose primary need is a gated wholesale portal with per-customer pricing. Hasil Pricing works on any paid Shopify plan starting at $29/month — a purpose-built wholesale layer instead of a full enterprise plan upgrade.
Will my wholesale customers see retail prices?+
No. The portal is gated — customers must log in to see anything — and each customer sees only the price list assigned to them. Retail prices, public collections, and your retail storefront are not exposed inside the portal. Your retail storefront and the wholesale portal are different URLs with different audiences.
What happens to wholesale orders?+
When a B2B customer checks out in the portal, Hasil creates the order in Shopify as a draft order, attached to that customer's record, with the negotiated prices and quantities. You then invoice and collect payment through Shopify (or on whatever terms you've agreed with the buyer) and fulfil from Shopify as usual. Hasil never holds or processes payment — funds never flow through Hasil.
Does this edit my Shopify theme?+
No. The wholesale portal runs on a separate subdomain ({your-store}.hasilportal.com), not on top of your retail storefront. Your Shopify theme files are not modified, no Liquid snippets are injected, and your retail conversion rate is unaffected by anything happening in wholesale.
Can I run wholesale and Odoo sync together?+
Yes. Hasil Pricing (the wholesale portal) and Hasil Sync (Odoo ↔ Shopify sync) are designed to run alongside each other — wholesale orders land in Shopify as draft orders and then sync into Odoo through Hasil Sync like any other Shopify order. Adding the second product comes with a 20% bundle discount on the second product.
How much does a Shopify wholesale portal cost with Hasil?+
Hasil Pricing is $29/month (Starter), $69/month (Growth), or $129/month (Plus). All plans include a 14-day free trial with no credit card required. Annual billing gives two months free, and adding Hasil Sync alongside drops the second product by 20%.
How long does setup take?+
Around 3 minutes to create the Shopify Admin API token and paste it into Hasil. From there, the portal is live at {your-store}.hasilportal.com and the remaining setup is building your price lists and inviting customers — which depends on how many price lists and buyers you have, not on Hasil.
Free playbook · 1 email/month
Not ready for a trial? Take the playbook instead.
A wholesale portal on its own subdomain — by this afternoon.
14-day free trial. No credit card. No Shopify App Store, no theme edits, no Shopify Plus required. Admin API token in, {your-store}.hasilportal.com out.
Start 14-day free trial