Price lists
How it works
You create price lists, then assign them to customers through customer groups. When customers sign in to your store, they see the prices you've set for them.
Pricing source
Price list
Customer group
Customer
| Type | How it works | Best for |
|---|---|---|
| Automatic | You choose a pricing source, such as your Shopify prices, and apply a percentage decrease or increase, such as 50% off. | A simple B2B pricing structure based on percentage discounts |
| Manual | You upload exact prices for your product SKUs by CSV, or edit them in the Price editor. | Precise pricing, where you need control over every price a customer sees |
| Integration | A backend system such as an ERP, PIM or CRM sends price data to SparkLayer automatically. | Prices that are already managed in another system |
You can combine them: an automatic list at 50% off retail can also hold exact prices for a few products.
Prices are always shown net (excluding tax), and tax is added at checkout. To show prices with tax included, see tax-inclusive price display. If your store's own prices include tax, see If your store's prices include tax before you set up automatic pricing.
Create a price list
Start with an empty price list, then add its prices. Before you start, check that:
- Every product you sell to B2B customers has a unique SKU in your store. Prices are matched to products by SKU.
- Those products are active in your store, not drafts. SparkLayer only imports prices for active products.
- You know the currency of the prices. You need one price list per currency.
Pricing > Price lists
Walk through a working copy of Pricing > Price lists, step by step. Nothing you do here changes your store.
To create a price list:
- Go to Pricing,Price lists (opens in your SparkLayer Dashboard in a new tab) and click Create price list.
- Under Details, enter a Name, such as "Wholesale GBP".
- Check the Handle. It's filled in from the name. You can change it now, but not later.
- Choose a Currency. You can't change it later either.
- Choose how the list gets its prices. Tick Enable automatic pricing for a percentage off your store's prices (see Set up automatic pricing), Enable manual pricing to upload exact prices, or both.
- Click Save in the save bar at the top of the page.
More detail
- Not sure which to choose? Automatic pricing is quickest if your B2B prices are a set percentage off your retail prices. Choose manual if you already have a spreadsheet of trade prices. You can upload exact prices to an automatic list later, so ticking both keeps your options open.
- If you've connected a backend system such as an ERP to SparkLayer, only create price lists by hand if they aren't imported from that system.
The new price list appears on the Price lists screen. Next:
- Add its prices: set up automatic pricing, or upload prices by CSV.
- Assign the price list to a customer group, so customers see it.
Price list settings
The price list form has 3 cards: Details, Automatic pricing and Manual pricing.
Every setting on the form
| Setting | What it does |
|---|---|
| Name | The name shown in SparkLayer, for example "Wholesale pricing". It must be unique. You use it to assign the price list to a customer group. |
| Handle | The list's unique ID, for example wholesale-pricing. It's used in bulk CSV uploads, customer pricing and the API. It can't be changed once the list is created. |
| Currency | The currency of the prices in the list, for example GBP. It can't be changed once the list is created. |
| Enable automatic pricing | Works out prices from a pricing source and your percentage, for example 50% off Shopify prices. |
| Enable manual pricing | Lets you set specific prices for each product by uploading a CSV file. Once a list is created, this card shows "Manual pricing is managed by uploading a CSV file on the price lists page." instead. |
If you're on the Basic plan
Basic includes 3 price lists. If you save a 4th, you'll see Basic includes 3 price lists. Click Try Starter free to start a 14-day Starter trial with unlimited price lists, or click Not now and delete a list you don't use. See Your plan and usage.
Set up automatic pricing
An automatic price list works out its prices from a pricing source and a percentage, so you don't set each price yourself. It's the quickest setup when your B2B prices are a set percentage off retail.
- Create or edit a price list and tick Enable automatic pricing.
- Choose a Pricing source: Shopify Price, or one of your other price lists.
- Leave Apply a percentage variation ticked.
- Choose Decrease or Increase, and enter the percentage. For example, to take 50% off, choose Decrease and enter
50. - Click Save in the save bar.
More detail
- Shopify Price is the Price field on a product in the Shopify admin: the price your regular customers see on your store. When you change a price in Shopify, your automatic price lists update too.
- A decrease can be between 0% and 99%, and an increase between 0% and 500%.
- If the price list is in a different currency from its pricing source, set a currency conversion. If your store's prices include tax, adjust the percentage for tax.
- On other platforms, the pricing source is that platform's product price.
An automatic price list covers every product
An automatic price list always applies its percentage to all your products. You can't limit it to some SKUs, a brand or a collection. To price only some products, use a manual price list: upload a CSV with a sku and a price for just those products, or set them in the Price editor. To add more SKUs later, upload a CSV with only the new ones. If a group has both kinds of list, the order of its lists decides which price wins. For discounts by brand, see Move brand discounts from another wholesale app.
To set an exact price for a few products on an automatic list, upload them by CSV, or use Override for this SKU in the Price editor. The Type column then shows how many, for example Automatic + 12 SKU.
Set a currency conversion
If the price list is in a different currency from its pricing source, you can set a fixed exchange rate. For example, if your pricing source is in USD and the price list is in EUR:
- Tick Currency conversion ("Use a manual exchange rate").
- Enter the rate, for example
1 USD = 1.1 EUR.
If the price list is in the same currency as the pricing source, you can't set a currency conversion.
If your store's prices include tax
SparkLayer treats the prices in a price list as net (excluding tax), and adds tax at checkout. An automatic price list takes its percentage off your store's own prices. So if your store's prices include tax, the result still contains tax, and tax is then added again at checkout. SparkLayer has no button to correct this for you: work out the percentage by hand, and enter that instead.
To find the percentage to enter as a Decrease:
- Take your discount from 100. For 20% off: 100 − 20 = 80.
- Divide that by 1 plus your tax rate. With 20% VAT: 80 ÷ 1.2 = 66.67.
- Take the result from 100: 100 − 66.67 = 33.33. Enter
33.33as the Decrease.
Worked example: 20% off, with 20% VAT
| Price | Amount |
|---|---|
| Your store's price, including 20% VAT | £120.00 |
| Net price (excluding VAT) | £100.00 |
| What you want trade customers to pay: 20% off the net price | £80.00 + VAT |
With a Decrease of 20, the price list price | £96.00 + VAT (20% off £120, treated as net) |
With a Decrease of 33.33, the price list price | £80.00 + VAT |
For trade prices with no discount, only the tax taken out, the decrease is 100 − (100 ÷ 1.2) = 16.67%.
On Shopify, your prices include tax when Include sales tax in product price and shipping rate is turned on at Settings,Taxes and duties (opens in your Shopify admin in a new tab). If it's off, your prices are already net and you can enter the percentage you want as it is. If your Shopify store uses line item tax (specific tax rates per SKU), automatic price lists don't take this into account.
On other platforms, the same applies whenever your platform's product prices include tax.
Add manual prices
A manual price list holds the exact prices you set for each SKU. Choose the tool that fits the job:
| To | Use |
|---|---|
| Add or update prices in bulk | Click Upload next to the price list at Pricing,Price lists (opens in your SparkLayer Dashboard in a new tab). See Upload prices by CSV. |
| Change a few prices | The Price editor. |
| Set price breaks by quantity (for example buy 1 for $10.00, buy 5 for $8.00) | See Quantity pricing. |
You can add exact prices to an automatic price list too. That way you automate most of your pricing and still set specific prices for some products.
Send prices from another system
If your prices are managed in a backend system such as an ERP, it can send them to SparkLayer automatically through the SparkLayer API. This is available on the Pro and Enterprise plans, and is usually set up by your developer or integration partner. Some systems have a ready-made integration that does this for you.
Assign a price list to customers
A price list takes effect once you assign it to a customer group. This is how you decide which customers see which prices when they sign in.
- Go to Customers,Groups (opens in your SparkLayer Dashboard in a new tab) and click the group's name. To set prices for every B2B customer, click Edit on the Base customer group card instead.
- Find Price lists. If it's under Inherited rules, click + Override next to it (on the base group, + Customize) to move it up to Customized rules.
- Choose a price list. To add another, click Add price list.
- Click Save in the save bar.
More detail
- You can also choose a price list when you create a group, in the Create customer group window.
- Reset next to a customized rule hands it back to the base customer group.
- See Customer groups for everything else a group controls.
Which price list wins
A customer group can have several price lists, numbered in the order you add them. When a product is in more than one of them, the first list wins. As the group page puts it: "If a SKU is in more than one list, SparkLayer uses the first list it's in." So the order of the lists is their priority.
For example, if ABC-123 is $10 in price list 1, $8 in price list 2 and $12 in price list 3, customers in the group see $10. A product that's only in list 3 gets its price from list 3.
- Put the most specific list first, such as a key account's prices or a clearance list, and a broad list like "Wholesale 30% off" last. A broad automatic list prices every product, so lists after it only count for products it can't price.
- The order is the one shown in the group's Price lists rule, at Customers,Groups (opens in your SparkLayer Dashboard in a new tab).
- Prices from outside the group come first. A customer's own price lists, set with customer pricing, replace the group's. See What overrides what.
If a customer sees the wrong price, check the price list order on their group first. See A customer gets prices from the wrong price list.
Prices for one customer
Customer groups set the prices for most buyers. When one business or person needs something different, set their prices at a lower level:
| For | Do this |
|---|---|
| One customer | Give them their own price lists, or an extra percentage discount, on their record in your store (on Shopify, in the Shopify admin). See Prices for one customer. |
For the whole job, step by step, follow Give a key account their own prices.
Once your price lists are set up and assigned, you manage them from the Price lists screen.
The Price lists screen
Pricing,Price lists (opens in your SparkLayer Dashboard in a new tab) is where you manage every price list. It lists them in a table, with Bulk upload and Create price list at the top.
| Column | What it shows |
|---|---|
| Name | The price list's name, with its handle underneath (for example "Handle: trade-20"). Click it to edit the list. |
| Currency | The list's currency, such as USD. |
| Type | Manual (n): a manual list with n SKU prices. Automatic + n SKU: an automatic list with n SKUs set by hand. Automatic: an automatic list with no SKUs set by hand. |
Each row has an Upload button, for uploading prices by CSV, and a ⋯ menu.
The ⋯ menu
| Menu item | What it does |
|---|---|
| Upload CSV | Uploads prices to this list. See Upload prices by CSV. |
| Download CSV | Downloads the list's SKU prices as a CSV file. It's unavailable for an automatic list with no SKUs set by hand. |
| Edit | Opens the list's settings. |
| Clear | Removes every SKU price uploaded to the list. See Clear or delete a price list. |
| Delete | Deletes the list. See Clear or delete a price list. |
Tips and shortcuts on the screen
- A tip banner appears at the top of the screen when something needs attention, for example "Trade has no price list, so those buyers see retail prices." or "Trade 20% isn't used by any customer group yet."
- The Common tasks card links to the usual jobs: create a price list, change prices on a list, set the price of one product, choose who sees a price list, and upload prices from a spreadsheet.
Edit a price list
- Go to Pricing,Price lists (opens in your SparkLayer Dashboard in a new tab) and click the list's name (or Edit in its ⋯ menu).
- Change the Name or the automatic pricing. The Handle and Currency are read-only.
- Click Save in the save bar.
The More actions menu at the top of the page has Download CSV, Clear and Delete.
Clear or delete a price list
Clearing empties a list but keeps it; deleting removes it.
| Action | What happens |
|---|---|
| Clear | Removes every SKU price uploaded to the list. On an automatic list, the automatic rule stays. Confirm with Clear prices. |
| Delete | Deletes the list. Customer groups using it go back to your base pricing. This can't be undone. Confirm with Delete price list. |
Both are in the list's ⋯ menu at Pricing,Price lists (opens in your SparkLayer Dashboard in a new tab), and in More actions when you're editing the list.
Tax and discounts
For how tax is calculated on B2B orders, see Tax and shipping.
To add promotions on top of price lists, use Discounts (Growth plan). They apply automatically or with a coupon code, for all customers or specific customer groups. They include an amount off an order, and volume tiers (more off as the quantity goes up).
Show "price on application"
To show "Price on application" instead of a price, so customers contact you for one:
- Leave the product out of the customer's price lists. With no B2B price, it shows Unavailable instead of a price and quantity box, and can't be added to the order. This needs manual price lists, because an automatic list covers every product. To do it for one group whatever its price lists, make the variant un-sellable for that group instead: see Hide variants or make them unavailable.
- Rename "Unavailable". At Storefront,Options,Translation overrides (opens in your SparkLayer Dashboard in a new tab), add overrides for
pdp.messaging.un-sellable(product pages) andproduct-card.messaging.un-sellable(product cards), for examplePrice on application. See Change the "Unavailable" message.
More detail
- The new text shows wherever a product has no price, including products missing from a price list by mistake. Check your other products have prices first: see Why a product shows Unavailable.
- To let customers ask for a price, use the Quoting Engine: your sales agents can add price on application (POA) products to a quote and set the price.
Troubleshooting
Why a product shows Unavailable
B2B customers see Unavailable instead of a price and quantity box when SparkLayer has no price it can use for them.
| Cause | Fix |
|---|---|
| No B2B price for the SKU on the customer's price lists. This is the most common cause. | Add a price for the SKU, by CSV or in the Price editor. If B2B customers shouldn't buy it, hide it from them with the free B2B Catalogs app and the b2c-only tag. |
| The automatic list's pricing source is empty for that variant. For example, the list is based on the compare-at price and the variant has no compare-at price, so there's nothing to take the percentage from. | Fill in the field in your store, then wait a few minutes for it to sync. |
| The SKU in the price list doesn't match the product, because of spaces in the CSV or a SKU that's changed. | See If prices show as Unavailable after an upload. |
| The product isn't in SparkLayer. The Price editor says no product was found. | Publish the product to the SparkLayer Wholesale sales channel, and check it's Active. See Add prices for a product that isn't found. |
The variant has been made un-sellable on purpose, with sell: false in its sparklayer.settings metafield. | Remove the setting if customers should be able to order it. See Hide variants or make them unavailable. |
If prices show as Unavailable after an upload
An upload can look successful and still match nothing. Two things cause this:
- Spaces before or after a SKU.
ABC-123(with a space) doesn't matchABC-123. Clear the price list (⋯ > Clear), trim the spaces from the SKU column, then upload the file again. In Excel or Google Sheets, theTRIMfunction removes them. - SKUs changed in your store after the upload. The price list still holds prices for the old SKUs, so the products with new SKUs have no price. Upload the prices again against the new SKUs. See Upload prices by CSV.
FAQs
Straight away. Price changes in your platform update automatic price lists in SparkLayer instantly.
Yes. Upload a CSV file to the automatic price list with only the SKUs and prices you want to set (see Upload prices by CSV), or use Override for this SKU in the Price editor.
No. The handle and currency can't be changed once a price list has been created. Create a new price list instead.
See Pricing FAQs for common questions about price lists, and the troubleshooting guide for ways to solve common issues.
Next steps
Last updated