Skip to content
OpenSmartRoute
Skillv1.0.0

shopify-b2b-wholesale

Build Shopify Plus B2B features with companies, catalogs, and wholesale pricing. Use when setting up wholesale accounts, creating price lists, or configuring B2B checkout with purchase orders. Trigger

by jeremylongshore(0) 0 installs
Free
Sign in to install

Free account. Installing gives you the manifest plus copy-paste snippets.

See reviews

About

Imported from jeremylongshore/tons-of-skills-marketplace (plugins/saas-packs/shopify-pack/skills/shopify-b2b-wholesale/SKILL.md). Install upstream with npx skills add jeremylongshore/tons-of-skills-marketplace --skill shopify-b2b-wholesale. Copyright stays with the author (MIT).

Shopify B2B & Wholesale

Overview

Shopify Plus B2B features let you create separate wholesale experiences with company accounts, custom catalogs, and tiered pricing. This skill covers the full B2B setup: companies, catalogs, price lists, and checkout configuration using the GraphQL Admin API. Requires a Shopify Plus plan.

Prerequisites

  • Shopify Plus plan (B2B features are Plus-only)
  • Access scopes: read_customers, write_customers, read_products, write_products, read_orders
  • B2B enabled in Shopify admin (Settings > B2B)
  • API version 2023-10 or later (B2B mutations stabilized)

Instructions

Step 1: Create a B2B Company

Use companyCreate with CompanyCreateInput — requires company (name, note), companyContact (email, firstName, lastName), and companyLocation (name, billingAddress, shippingAddress):

await client.request(COMPANY_CREATE, {
  variables: {
    input: {
      company: { name: "Acme Wholesale Inc", note: "Tier 1 partner" },
      companyContact: { email: "buyer@acme.com", firstName: "Jane", lastName: "Doe" },
      companyLocation: {
        name: "Headquarters",
        billingAddress: { address1: "123 Commerce St", city: "Austin", provinceCode: "TX", countryCode: "US", zip: "78701" },
        shippingAddress: { address1: "123 Commerce St", city: "Austin", provinceCode: "TX", countryCode: "US", zip: "78701" },
      },
    },
  },
});
// Always check userErrors in response — returns code like COMPANY_NOT_FOUND, INVALID

See references/company-management.md for the full mutation, additional contacts, locations, and roles.

Step 2: Create a Catalog

Catalogs link products to specific companies. Use catalogCreate with a title, status, and context.companyLocationIds:

await client.request(CATALOG_CREATE, {
  variables: {
    input: {
      title: "Wholesale Tier 1",
      status: "ACTIVE",
      context: { companyLocationIds: ["gid://shopify/CompanyLocation/123456"] },
    },
  },
});

Step 3: Set Wholesale Pricing

Create a price list with priceListCreate. Use PERCENTAGE_DECREASE for blanket discounts or priceListFixedPricesAdd for per-variant overrides:

// 30% off all products in this catalog
await client.request(PRICE_LIST_CREATE, {
  variables: {
    input: {
      name: "Wholesale 30% Off",
      currency: "USD",
      parent: { adjustment: { type: "PERCENTAGE_DECREASE", value: 30 } },
      catalogId: "gid://shopify/Catalog/789",
    },
  },
});

For fixed price overrides, volume pricing, and multi-currency, see references/catalog-pricing.md.

Step 4: B2B Checkout Configuration

B2B orders use draftOrderCreate with purchaseOrder number and purchasingEntity linking to the company. Key fields:

await client.request(DRAFT_ORDER_CREATE, {
  variables: {
    input: {
      purchaseOrder: "PO-2026-0042",
      lineItems: [{ variantId: "gid://shopify/ProductVariant/123", quantity: 100 }],
      purchasingEntity: {
        purchasingCompany: {
          companyId: "gid://shopify/Company/456",
          companyContactId: "gid://shopify/CompanyContact/789",
          companyLocationId: "gid://shopify/CompanyLocation/012",
        },
      },
      paymentTerms: { paymentTermsTemplateId: "gid://shopify/PaymentTermsTemplate/1" },
    },
  },
});

Payment terms templates: Due on receipt, Net 15, Net 30, Net 45, Net 60, Net 90. Query available templates with paymentTermsTemplates.

See references/b2b-checkout.md for the full draft order flow, invoice sending, and vaulted payments.

Output

  • B2B company created with contact and billing/shipping addresses
  • Catalog linked to specific company locations
  • Wholesale price list with percentage or fixed pricing
  • Draft orders with purchase order numbers and payment terms

Error Handling

Error Cause Solution
COMPANY_NOT_FOUND Invalid company GID Verify the company ID exists via companyQuery
CATALOG_LIMIT_EXCEEDED Max catalogs per context reached Remove unused catalogs or upgrade plan
PRICE_LIST_NOT_FOUND Price list not linked to catalog Ensure catalogId is set on price list
B2B_NOT_ENABLED B2B feature not activated Enable B2B in Shopify admin Settings > B2B (requires Plus)
COMPANY_CONTACT_NOT_FOUND Contact not associated with company Create contact via companyContactCreate first
INVALID_PURCHASING_ENTITY Missing company/contact/location in draft order All three IDs required in purchasingCompany

Examples

Onboarding a New Wholesale Partner

Create a B2B company with multiple contacts, locations, and roles for a new wholesale account joining your program.

See Company Management for the full mutation and multi-contact setup.

Setting Up Tiered Wholesale Pricing

Configure percentage-based discounts for standard wholesalers and fixed per-variant overrides for VIP partners using price lists.

See Catalog Pricing for percentage, fixed price, and volume pricing strategies.

Processing a B2B Purchase Order

Create a draft order with a PO number, Net 30 payment terms, and company association for a wholesale buyer.

See B2B Checkout for the full draft order flow, invoice sending, and vaulted payments.

Resources

Use it

Copy one of these into your project. Installing also returns the manifest and these snippets.

yaml
targets:
  - https://api.opensmartroute.ai/api/v1/registry/jeremylongshore-tons-of-skills-marketplace-shopify-b2b-w-ea43c5/manifest   # or paste the manifest below

Manifest

An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.

jeremylongshore-tons-of-skills-marketplace-shopify-b2b-w-ea43c5.ocm.jsonjson
{
  "ocm": "1",
  "id": "jeremylongshore-tons-of-skills-marketplace-shopify-b2b-w-ea43c5",
  "kind": "skill",
  "name": "shopify-b2b-wholesale",
  "description": "Build Shopify Plus B2B features with companies, catalogs, and wholesale pricing. Use when setting up wholesale accounts, creating price lists, or configuring B2B checkout with purchase orders. Trigger with phrases like \"shopify b2b\", \"shopify wholesale\", \"shopify company api\", \"shopify price lists\", \"shopify catalog api\".",
  "publisher": "jeremylongshore",
  "version": "1.0.0",
  "capabilities": {
    "domains": [
      "coding"
    ],
    "tags": [
      "skill-md",
      "saas",
      "ecommerce",
      "shopify",
      "skills-sh"
    ],
    "languages": [
      "en"
    ]
  },
  "quality_prior": 0.6,
  "examples": [
    "Build Shopify Plus B2B features with companies, catalogs, and wholesale pricing. Use when setting up wholesale accounts, creating price lists, or configuring B2B checkout with purchase orders. Trigger with phrases like \"shopify b2b\", \"shopify wholesale\", \"shopify company api\", \"shopify price lists\", \"shopify catalog api\"."
  ],
  "primary": false,
  "metadata": {
    "source": {
      "provider": "skills.sh",
      "repository": "https://github.com/jeremylongshore/tons-of-skills-marketplace",
      "path": "plugins/saas-packs/shopify-pack/skills/shopify-b2b-wholesale/SKILL.md",
      "ref": "HEAD",
      "url": "https://github.com/jeremylongshore/tons-of-skills-marketplace/blob/HEAD/plugins/saas-packs/shopify-pack/skills/shopify-b2b-wholesale/SKILL.md",
      "key": "jeremylongshore/tons-of-skills-marketplace/plugins/saas-packs/shopify-pack/skills/shopify-b2b-wholesale/SKILL.md"
    },
    "compatibility": "Designed for Claude Code",
    "allowed_tools": [
      "Read,",
      "Write,",
      "Edit,",
      "Bash(npm:*),",
      "Grep"
    ],
    "license": "MIT"
  },
  "instructions": "# Shopify B2B & Wholesale\n\n## Overview\n\nShopify Plus B2B features let you create separate wholesale experiences with company accounts, custom catalogs, and tiered pricing. This skill covers the full B2B setup: companies, catalogs, price lists, and checkout configuration using the GraphQL Admin API. Requires a Shopify Plus plan.\n\n## Prerequisites\n\n- Shopify Plus plan (B2B features are Plus-only)\n- Access scopes: `read_customers`, `write_customers`, `read_products`, `write_products`, `read_orders`\n- B2B enabled in Shopify admin (Settings > B2B)\n- API version 2023-10 or later (B2B mutations stabi",
  "cost": {
    "context_tokens": 1474
  }
}

Fetch it by URL: GET /api/v1/registry/jeremylongshore-tons-of-skills-marketplace-shopify-b2b-w-ea43c5/manifest?version=1.0.0

Reviews

Star ratings from people who tried it. One review per account; edit yours any time.

No reviews yet. Install it, try it, and be the first to rate it.