How we built four auto-assigned pricing tiers using Customer Groups, Price Lists, and the REST API v3, and what changed in our wholesale operation as a result.
Before we set this up, our wholesale process was emails and manual order entry. A buyer would email asking for pricing on a SKU. We would build a custom quote in a spreadsheet, send it back, the buyer would email an order, and we would manually enter it into BigCommerce with the discounted price overridden line by line. Each order took 30 to 45 minutes of operations time. We could only handle so many wholesale accounts at once before the process broke.
Today we run four auto-assigned pricing tiers that update based on YTD purchase volume. Buyers log in, see their tier-specific prices, place orders themselves. Our operations team has gotten that 30 to 45 minutes per order back. This is the writeup of how the configuration works.
BigCommerce's tiered pricing infrastructure has three primary objects.
Customer Groups are buckets you assign customers to. Think of them as labels: Retail, Wholesale Standard, Wholesale Volume, Wholesale Enterprise. A customer record belongs to exactly one group at a time.
Price Lists are catalogs of variant-level pricing. Each price list contains a set of variant SKUs and the price for each. You can have one price list with hundreds of SKUs, or multiple price lists each scoped to a product category.
Price List Assignments connect the two. An assignment links a specific Price List to a specific Customer Group, optionally scoped to a specific sales channel. When a customer in that group browses the storefront, they see that price list's prices instead of the default catalog prices.
The reason this three-object structure exists (instead of just attaching prices directly to customer groups) is flexibility. A wholesale store with multiple sales channels can have different price lists per channel for the same customer group. A retail store can have promotional price lists that apply to specific segments without rewriting the customer group structure.
The four tiers we run, with their auto-assignment rules:
| Tier | YTD threshold | Discount off retail | Customer Group name |
|---|---|---|---|
| Retail | n/a (default) | 0% | Default |
| Wholesale Standard | $0 to $9,999 | 30% | Wholesale-Standard |
| Wholesale Volume | $10,000 to $49,999 | 40% | Wholesale-Volume |
| Wholesale Enterprise | $50,000+ | 50% | Wholesale-Enterprise |
YTD thresholds are recalculated nightly via a cron job that hits the Orders API, sums per-customer revenue for the calendar year, and re-assigns customer groups when a threshold is crossed. The customer's tier change takes effect the next time they log in.
Done in the BigCommerce control panel under Customers, then Customer Groups. Create one group per tier. The Default group already exists for retail customers. We add three more: Wholesale-Standard, Wholesale-Volume, Wholesale-Enterprise.
Done in the control panel under Pricing, then Price Lists. We create one price list per wholesale tier. The price list contains a row for each variant SKU we sell wholesale, with the discounted price filled in.
For 800-plus SKUs, building this in the UI takes too long. We exported the variant catalog to CSV, calculated the tier prices in a spreadsheet (retail price × 0.70 for Standard, × 0.60 for Volume, × 0.50 for Enterprise), and imported the resulting CSV into each price list using the BigCommerce Price List API.
This is the connection step. Each price list gets assigned to its corresponding customer group. The Price List Assignment API call looks like this:
POST /v3/pricelists/assignments
{
"price_list_id": 12,
"customer_group_id": 3,
"channel_id": 1
}
The channel_id is optional. Omitting it makes the assignment apply to all sales channels. We scope to channel 1 (our main storefront) because we sell on a separate Amazon channel where pricing is already discounted to spec.
This is the only piece that requires custom code. The job runs nightly at 2 AM CST. It does roughly this:
We run this on a small Heroku worker. Total runtime: about 4 minutes for our 1,200 customer base. The script lives in our internal tooling repo and uses the standard X-Auth-Token authentication.
The four-tier setup above runs entirely on standard BigCommerce features. We added B2B Edition about six months later when the wholesale segment grew enough to justify the additional capabilities.
B2B Edition adds Company accounts (multiple buyers under one wholesale account, with role-based permissions), sales quotes (formal quote management), invoice payments (the buyer can pay invoices through the dealer portal), and a dedicated B2B portal UI. Pricing-wise, B2B Edition uses the same Customer Groups and Price Lists infrastructure underneath, so the four-tier configuration carried forward without changes.
One thing worth knowing if you are building a server-to-server integration with B2B Edition: as of September 30, 2025, the B2B Edition authToken was deprecated. Server-to-server requests now use the standard BigCommerce X-Auth-Token together with a new X-Store-Hash header. If you have an older integration, audit it before the deprecation breaks anything.
Operations time per wholesale order: from 30 to 45 minutes down to under 5 minutes (mostly a sanity check before the order ships). Wholesale reorder rate: from 31% to 47% within four months of launch. New wholesale customer onboarding time: from a 2-week back-and-forth to a same-day approval workflow. The conversion impact of the auto-tier system on the broader store is covered in our customization roundup with all the conversion data, and the checkout flow that goes alongside this pricing setup is in our Checkout SDK writeup.
The pricing API reference is at the official BigCommerce Price Lists documentation. It covers the full Price List API, the Price List Assignment API, the bulk import endpoints we use, and the variant-level pricing model. The B2B Edition API documentation is separate and lives under a different section of the developer center if you go that route later.
Customer Groups are buckets you assign customers to (Standard, Volume, Enterprise, etc). Price Lists are catalogs of variant-level prices. Price List Assignments connect the two: you assign a price list to a customer group, optionally limited to a specific sales channel. A customer in the assigned group sees that price list's prices when they shop on that channel.
No. Price Lists are available on all BigCommerce plans, not just B2B Edition. B2B Edition adds extra capabilities (Company accounts, sales quotes, invoice payments, dedicated B2B portal) but the core pricing-tier mechanics work without it. We started without B2B Edition and added it later when our wholesale segment grew.
No. A BigCommerce customer record belongs to exactly one Customer Group at a time. To handle complex segmentation, design your group structure as the primary axis and use other mechanisms (sales channels, custom customer fields) for secondary segmentation. Auto-assignment rules can move a customer between groups based on YTD purchase volume or other criteria.