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

  1. 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.
  2. 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.
  3. 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.
  4. They order at their prices. Buyers log in and see tier pricing everywhere — product pages, cart, checkout — rendered by Shopify itself.
💡 Want to see the flow without a real buyer? Use Try it as a buyer on the Home screen — it submits a demo application you can approve and safely delete. (Rolling out during early access.)

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.

  1. Upload on the tier page. Nothing is written yet.
  2. Review the dry-run diff: adds, changes (with before → after), unchanged, unknown SKUs, and rejected lines (duplicates, invalid prices — we reject rather than guess).
  3. Confirm to write. Prices sync in chunks with a progress bar; you can pause at any time and resume later — exactly-once, fully audited.
⚠️ Duplicate SKUs in a file are rejected entirely rather than "last one wins" — silent price corruption is the failure mode we refuse to have.

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.

WholesaleKit manages Shopify's exemption settings and your certificate workflow. It is not a tax engine and doesn't give tax advice — for complex VAT/nexus questions, ask your tax professional.

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.