Documentation
Everything you need to run wholesale on Shopify's native B2B. Can't find it? Contact us — founder replies within 24 hours.
Quick start — first buyer in 5 minutes
- Create a pricing tier. Tiers → Create. Pick a rule:
% off retail,cost plus %, or fixed prices. WholesaleKit provisions it as a native B2B market + catalog + price list — you'll see each step tick as it completes. - Share your application form. Your form lives at
yourstore.com/apps/wholesalekit/apply. Link it from your navigation as "Wholesale", or send it straight to prospects. - Approve your first buyer. Applications → Approve. Pick their tier. WholesaleKit creates the native company with payment terms and tax status, and emails them a login.
- They order at their prices. Buyers log in and see tier pricing everywhere — product pages, cart, checkout — rendered by Shopify itself.
How it works — the native architecture
WholesaleKit doesn't build a parallel wholesale system. It orchestrates Shopify's own B2B primitives:
- A pricing tier = a B2B market (which companies) + a catalog (which products) + a price list (what prices).
- An approved buyer = a native company with a location, contact, payment terms and tax settings.
- Checkout pricing is computed by Shopify from the buyer's catalog — never by our code.
That's why there is zero code in your theme, why prices can't desync, and why everything keeps working if you uninstall.
Pricing tiers
Rules
- % off retail — e.g. 35% off every product's retail price. Applied by Shopify as a relative price list.
- Cost plus % — margin over your cost. Requires per-variant costs; prices are synced explicitly.
- Fixed prices — you set every price, via the UI or CSV import.
Assigning companies
Assign on approval, from the tier page, or in bulk by business type or region. A company location belongs to one tier at a time.
Active slotsplan limit
Shopify allows 3 active B2B catalogs on Basic, Grow and Advanced. Define as many tiers as you want; keep up to 3 active. Activating a 4th prompts you to deactivate one — or upgrade to Plus if your business truly needs more.
Buyer onboarding
The application form captures business name, contact, business type (clinic, gym, salon, boutique, distributor…), region, expected volume, and optionally a resale certificate.
Approving
The confirm screen shows exactly what will be created — company, terms, tax status, tier — before you click. Every step is checkpointed: if anything fails (rate limit, network), click Resume; completed steps are never repeated and duplicates are impossible.
Rejecting
Sends a templated (editable) email. The record stays for your reference and can be re-opened.
CSV price import
Format: sku,price — one per line, header optional.
- Upload on the tier page. Nothing is written yet.
- Review the dry-run diff: adds, changes (with before → after), unchanged, unknown SKUs, and rejected lines (duplicates, invalid prices — we reject rather than guess).
- Confirm to write. Prices sync in chunks with a progress bar; you can pause at any time and resume later — exactly-once, fully audited.
Tax & exemptions
Buyers can request exemption at application and attach a resale certificate. On approval (or later), WholesaleKit sets Shopify's native tax-exempt status on the company location — so checkout charges no tax, natively.
The registry tracks certificates and expiry dates, with reminders at 30 and 7 days before expiry. On expiry we flag — we never silently change someone's tax treatment.
Net terms
Orders placed on payment terms (Net 15/30/60) appear automatically in the control room, bucketed by age: current, due soon, 1–15, 16–30, 31–60, 60+ days overdue.
Reminders
Configure offsets (e.g. 3 days before due, on due, 7 days after). Every email is previewed before sending and logged after.
Auto-charge
Per-company opt-in. On the due date, the vaulted payment method is charged automatically. Failures retry once the next day, then notify you — never more than two attempts.
Quick order
Buyers visit yourstore.com/apps/wholesalekit/quick-order, paste lines like SKU-123, 24 (or upload a CSV), and get a native cart at their tier prices. Unknown SKUs are reported clearly; valid lines carry through.
Sidekick
WholesaleKit answers questions and takes actions through Shopify Sidekick:
- "Any new wholesale applications?"
- "Where are my wholesale buyers from?" — region and business-type breakdown
- "Who owes me money?" — outstanding terms with top accounts
- "Approve the application from Austin Chiro Co" — navigates to a pre-filled confirm; nothing executes silently
- "Build me an outbound brief" — an ICP profile generated from your best buyers
Plan limits (the honest section)
- 3 active B2B catalogs on non-Plus plans → up to 3 active tiers at once. Unlimited draft tiers.
- Partial payments / deposits on B2B orders are Plus-only (Shopify limit).
- Everything else WholesaleKit does works identically on Basic, Grow, Advanced and Plus.
Data & uninstalling
Commerce data (companies, catalogs, prices, terms, orders) lives in Shopify and is yours forever — uninstalling changes nothing about it. WholesaleKit's workflow data (applications, reminder schedules, audit log) is deleted within 30 days of uninstall, per GDPR. Data-request and redaction webhooks are honored automatically. See the privacy policy.
Troubleshooting
An approval shows FAILED
The row shows the cause in plain English. Fix the cause if it's on your side (e.g., a conflicting company name), then click Resume — completed steps are never repeated.
A price looks wrong for a buyer
Check which tier their company is assigned to, then the tier's price list (deep link opens it in your Shopify admin — the same numbers Shopify uses at checkout). If a sync is paused, a banner says so.
A terms order didn't appear
The nightly reconcile catches anything a webhook missed automatically. A manual "Reconcile now" control is rolling out during early access.
Still stuck? Contact us — include your store URL; we answer within 24 hours.