Store operations
Price lists

Price List API

Price lists allow you to populate different versions of catalog pricing and assign them to different Customer Groups. The prices are specified exclusively at the variant level. If an active price list doesn't contain prices for a variant, then the catalog pricing will be used.

You can assign a price list to a specific sales channel, customer group, or customer group on a specific sales channel, using price list assignments in the Price List Assignment API. You can also associate a price list to a customer group in the Control Panel or the Customer Groups API. Price list assignments combined with a customer group assignment allows you to better target the signed-in customers shopping on that channel.

Price lists will provide overridden price values to the Stencil storefront. You can further customize the final price displayed within the Stencil template. For more information, see Theme Objects.

OAuth scopes

The following OAuth Scopes are required:

Price list definitions

  • A price list is a collection of price records. Price records make up a price list.
  • A price record is a price override for a particular variant. At a minimum, it contains a variant ID, a price, and a currency.
Price Record
  "variant_id": 3121,
  "price": 10.0,
  "sale_price": 8.0,
  "retail_price": 12.0,
  "map_price": 6.0,
  "currency": "EUR"
  • PriceRecordBatch: a way to update several price records in a price list at once. Using this bulk upsert endpoint, you can upsert up to 1000 price records in a single API call.

  • Currency: a price list can contain records for multiple currencies. If you use a transactional currency, the customer group or channel will use price records in that currency. If a multi-currency price list is unavailable, BigCommerce auto converts the catalog price. The customer group or channel uses price records in the default currency and performs a currency conversion for display-only currencies.

Example request: Get all price lists
X-Auth-Token: {{ACCESS_TOKEN}}
Accept: application/json
Content-Type: application/json

Price list assignments

The price list assignment assigns a price list to a specific sales channel. This association lets you define custom pricing for shoppers on storefront channels, but doesn't affect pricing in different omnichannel environments, such as Facebook, Amazon, Instagram, etc.

See Channels, Sites, and Routes for further documentation.

Example request: Create a price list assignment
X-Auth-Token: {{ACCESS_TOKEN}}
Accept: application/json
Content-Type: application/json
    "customer_group_id": 3,
    "price_list_id": 2,
    "channel_id": 1

Price lists assigned to customer groups

Example request: Assign a price list to a customer group
X-Auth-Token: {{ACCESS_TOKEN}}
Accept: application/json
Content-Type: application/json
    "id": 1,
    "name": "VIP Price List",
    "is_default": false,
    "category_access": {
      "type": "all"
    "discount_rules": [
        "type": "price_list",
        "price_list_id": 2

Under discount_rules the type is set to price_list. The price_list_id is 1, which is the id of the price list assigned to the group.

Price list notes

  • Bulk pricing tiers may additionally be associated with a Price Record to indicate different pricing as the quantity in cart increases.

  • If a variant has a Price Record, any existing product-level bulk pricing will not apply in the cart. For variants without Price Records, any existing product bulk pricing will apply.

  • Price Lists Records accepts bulk upsert. You can only do one Bulk upsert at a time. Running more than one in parallel on the same store will cause a 429 error, and the request will fail.

Related resources



There are webhooks available for Price Lists assignments. The price list assignment webhook fires when a price list assignment is assigned, reassigned, or unassigned. Note that since Price Lists directly relate to products, neither product nor SKU webhooks will fire for corresponding changes, such as pricing.

Did you find what you were looking for?