# Troubleshooting

URL: https://docs.sparklayer.io/help/troubleshooting

Fix common SparkLayer problems by symptom: missing B2B prices, widgets not loading, price list and sync errors, checkout errors, wrong tax and missing orders.

> **Quick summary**
>
> - Start with a diagnostic: pick what's going wrong, answer a few questions and it takes you to the fix, with your answers ready to send us if you're still stuck. Or find your symptom below and work through the checks in order. Most problems come from a missing `b2b` tag, a missing or duplicate SKU, a product left out of the SparkLayer sales channel, or an incomplete customer address.
> - The checks are written for Shopify stores. On other platforms, the screens and some causes differ. See your platform's guide and limitations in [Platforms](https://docs.sparklayer.io/help/platforms.md).
> - To see whether a product has reached SparkLayer, use **Integrations > Product sync** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/integrations/products-sync)), or **SparkLayer Wholesale > Integrations > Product sync** in the Shopify app. Customer sync errors show as a banner on **Customers** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/customers/list)), or **SparkLayer Wholesale > Customers** in the Shopify app. Can't find a screen at all? See [Finding your way in the app](#finding-your-way-in-the-app).
> - Want to change how a widget looks or works? See [What you can and can't change](https://docs.sparklayer.io/help/storefront/what-you-can-change.md). Still stuck? [Contact support](https://docs.sparklayer.io/help/support.md), and see the [Pricing FAQs](https://docs.sparklayer.io/help/pricing/faqs.md) for more on pricing.

## Find the fix

Pick what's going wrong. Each diagnostic asks one question at a time and ends with the fix, and where to make it.

## Check these first

Most problems are fixed by one of these:

- **The customer is a B2B customer.** In Shopify, they have the `b2b` tag, plus the tag of any other [customer group](https://docs.sparklayer.io/help/customers/customer-groups.md) they belong to.
- **The customer's addresses are complete.** Every address in their address book has a country, first line, city and postcode or ZIP code.
- **The product can sync.** It has a unique SKU on every variant, its status is Active, and it's included in the SparkLayer Wholesale sales channel.
- **The customer has prices.** Their customer group has a price list that includes the product.
- **The storefront is set up.** The [frontend interfaces](https://docs.sparklayer.io/help/storefront/interfaces.md) are installed on the theme you're testing.

## Finding your way in the app

**A guide mentions a screen you can't find**

Check [Where things moved](https://docs.sparklayer.io/help/dashboard.md#where-things-moved) for the full list. Some screens were renamed or moved in the new app. For example, **Activity** is now **Orders** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/activity)), or **SparkLayer Wholesale > Orders** in the Shopify app, **Settings > General** is now **Settings > Configurations** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/configuration/settings/general)), or **SparkLayer Wholesale > Settings > Configurations** in the Shopify app, and **Settings > Frontend widgets** is now **Storefront > Widgets** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/configuration/frontend/core)), or **SparkLayer Wholesale > Storefront > Widgets** in the Shopify app.

**You can't see Forms in the Shopify app**

**Shopify only:**

Sign in to the SparkLayer Dashboard at [app.sparklayer.io](https://app.sparklayer.io/) and go to **Forms** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/forms)). Forms and Data tables are only in the Dashboard. Everything else is in both versions. See [Two versions of the same app](https://docs.sparklayer.io/help/dashboard.md#two-versions).

**You can't find Setup or Try it out in the SparkLayer Dashboard**

Open Setup with **Open Setup** on Home. Open Try it out with **Place a test order** on **Orders** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/activity)), or **SparkLayer Wholesale > Orders** in the Shopify app, which shows until your first order. Neither has a sidebar item in the SparkLayer Dashboard. In the Shopify app, both are in the menu.

**A feature shows a plan name and Unlock instead of a switch**

Click **Unlock** to see what the feature does and start a 14-day free trial. Your plan doesn't include it: for example, **Quotes** need Pro (or the Quoting Engine add-on) and **Invoices** need Growth. See [Unlock a feature](https://docs.sparklayer.io/help/dashboard/plan-and-features.md#unlock-a-feature).

**Sales agents opens a window instead of the screen**

Start the free trial it offers. Sales agents start on the Starter plan, so on Basic, **Sales agents** opens a window that shows what they do instead. See [Sales rep setup](https://docs.sparklayer.io/help/sales-reps.md#plans-and-limits).

**There's no switch to connect a partner app in the Shopify app**

**Shopify only:**

Connect the app from **Integrations > Partners** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/configuration/integrations/partners)), or **SparkLayer Wholesale > Integrations > Partners** in the Shopify app in the [SparkLayer Dashboard](https://app.sparklayer.io/). Partner apps, such as Xero or Cin7 Core, can't be switched on inside Shopify. In the Shopify app, each one has a **Setup guide** button instead. See [Managing integrations](https://docs.sparklayer.io/help/integrations/managing-integrations.md#connect-or-disconnect-a-partner-app).

## Storefront

**Diagnose: SparkLayer not showing or looking wrong?** Find out whether it’s the customer, your theme or the launch step.

1. **What’s happening?** Pick the closest match.
   - SparkLayer isn’t showing at all: go to question 2
   - There’s a “preview mode” banner on my store: go to fix A (Finish the last launch step)
   - It looks broken, doubled up or unstyled: go to question 3
   - Prices or buttons are missing on some products: go to fix B (This is usually the product, not your theme)
2. **Is it happening for every B2B customer, or just one?** Sign in as another B2B customer to compare, or use Place a test order, which opens your store as a test B2B customer. Where to look: Orders > Place a test order (SparkLayer).
   - Every B2B customer: go to question 4
   - Just one customer: go to question 5
3. **What looks wrong?** Sign in as a B2B customer and compare with a retail visitor.
   - Two carts or two account icons: go to fix C (Your theme’s own cart is still showing)
   - Colours or styles stopped working after publishing a theme: go to fix D (Check SparkLayer isn’t loaded twice)
   - Retail elements show to B2B customers: go to fix E (Hide the retail element for B2B customers)
   - The cart count in my header is wrong: go to fix F (The SparkLayer cart is separate from your theme’s cart)
   - A button or feature is missing, such as shopping lists: go to fix G (Your theme may have an older version of SparkLayer)
   - It broke after a theme change: go to fix H (Add SparkLayer to your new theme)
   - Something else: go to fix I (We’ll need to look at your theme)
4. **Have you changed, updated or duplicated your live theme recently?** SparkLayer is added to a theme, so a new or updated theme won’t include it until it’s added there too. Where to look: Online Store > Themes (Shopify admin).
   - Yes: go to fix H (Add SparkLayer to your new theme)
   - No: go to question 6
5. **Are you checking while signed in as that customer?** SparkLayer only appears once a B2B customer signs in. Retail and signed-out visitors see your store as normal.
   - Yes: go to question 7
   - No / not sure: go to fix J (Sign in as the customer first)
6. **Does Theme setup show SparkLayer’s required blocks turned on for your live theme?** Theme setup checks the app blocks on your theme and lets you turn on any that are off. Where to look: Home > Setup > Theme setup (SparkLayer).
   - Yes: go to question 8
   - No / not sure: go to fix K (Turn on SparkLayer’s blocks)
7. **Does the customer have the `b2b` tag?** Check the spelling exactly, with no extra spaces or characters. Where to look: Customers > select the customer > Tags (Shopify admin).
   - Yes: go to question 9
   - No: go to fix L (Add the `b2b` tag)
8. **Did it stop suddenly, for everyone, without any change on your side?** For example, B2B customers are signed out straight after signing in, or see a blank page.
   - Yes: go to fix M (This may be on our side)
   - No: go to fix I (We’ll need to look at your theme)
9. **Are they signing in with the same email as that customer record?** Signing in with a different or mistyped email creates a new retail customer without the tag.
   - Yes: go to fix N (Check the customer has synced)
   - No / not sure: go to fix O (Sign in with the email on the customer record)

**Fixes**

- **A. Finish the last launch step** The banner means SparkLayer is still in preview. In your Shopify admin, open SparkLayer Wholesale under Sales channels and click Start taking B2B orders. If the button isn’t there, a setup step such as adding SparkLayer to your theme isn’t complete yet. Finish it, or ask us to check: we may ask for collaborator access with the Apps and channels permission. Where: Sales channels > SparkLayer Wholesale (Shopify admin). See [Launch checklist](https://docs.sparklayer.io/help/get-started/launching.md).
- **B. This is usually the product, not your theme** When SparkLayer shows but some products have no price or buttons, the cause is usually the product’s SKU, sales channel or price list. Next: Product missing, no B2B price or “Unavailable”?
- **C. Your theme’s own cart is still showing** SparkLayer replaces the cart and account links for signed-in B2B customers. If both show, your theme’s header hasn’t been set up for SparkLayer, which is common after a theme update. Send us the theme name and we’ll fix it.
- **D. Check SparkLayer isn’t loaded twice** If SparkLayer is added by the app embed and also by a copy of its script in the theme code, the second copy can override your styles. Keep the app embed and remove the hard-coded script. CSS variables start with two hyphens, for example `--spark-button-color`. Where: Online Store > Themes (Shopify admin). See [Customise the design](https://docs.sparklayer.io/help/storefront/customising-design.md).
- **E. Hide the retail element for B2B customers** Theme or app elements meant for retail shoppers need hiding when a B2B customer signs in, usually after adding a new app or section. Send us a screenshot and the page link and we’ll hide it, or hide it yourself with B2B-only content. See [B2B-only content](https://docs.sparklayer.io/help/platforms/shopify/customisations/b2b-only-content.md).
- **F. The SparkLayer cart is separate from your theme’s cart** Your header’s cart count reads Shopify’s cart, so for B2B customers it shows 0 or items added before they signed in. Hide the count for B2B customers, or have a developer keep it in step with SparkLayer’s cart using the JavaScript SDK. We can hide it for you. See [JavaScript SDK: cart](https://docs.sparklayer.io/developers/javascript-sdk/cart.md).
- **G. Your theme may have an older version of SparkLayer** Newer features need a recent version of SparkLayer’s storefront code on your theme. Tell us which feature is missing and the theme name, and we’ll update it.
- **H. Add SparkLayer to your new theme** Your new or updated theme doesn’t include SparkLayer yet. Turn on its blocks in Theme setup, or ask us to install it for you, free. Ideally do this before you publish the theme, so B2B customers aren’t affected. Where: Home > Setup > Theme setup (SparkLayer). See [Theme setup](https://docs.sparklayer.io/help/platforms/shopify/theme-setup.md).
- **I. We’ll need to look at your theme** Your setup looks right, so we'll take it from here. Send us your answers with a link to your store and the theme name.
- **J. Sign in as the customer first** SparkLayer only appears for signed-in B2B customers. Sign in as them, or use Place a test order to open your store as a test B2B customer, and check again. Where: Orders > Place a test order (SparkLayer).
- **K. Turn on SparkLayer’s blocks** Without them SparkLayer can’t load for anyone. Turn on any required block that’s off. If one won’t turn on, ask us to install SparkLayer on your theme, free. Where: Home > Setup > Theme setup (SparkLayer). See [Ask our team to install it](https://docs.sparklayer.io/help/platforms/shopify/theme-setup.md#get-our-team-to-install-it).
- **L. Add the `b2b` tag** Without it the customer shops as retail and sees none of SparkLayer. Add the tag, save, then ask them to sign out and back in. Where: Customers > select the customer > Tags (Shopify admin).
- **M. This may be on our side** If nothing changed on your store, ask your customers to sign out and back in (clearing cookies helps), then tell us straight away. A sync error on one customer never signs out everyone.
- **N. Check the customer has synced** Their tag is right, so check SparkLayer has their record. Click Show errors on the sync banner. A missing or incomplete address stops a customer syncing: every address in their Shopify address book needs a country, city, address line 1 and postcode. An “Invalid customer group” error means a tag doesn’t match any customer group. Where: Customers (SparkLayer). See [Fix customers that won’t sync](https://docs.sparklayer.io/help/guides/fix-sync-problems.md).
- **O. Sign in with the email on the customer record** A different or mistyped email creates a separate retail customer with no tags. Sign in with the exact email that has the `b2b` tag. You can delete the extra customer in Shopify. Where: Customers > select the customer > Tags (Shopify admin).

**Diagnose: Product missing, no B2B price or “Unavailable”?** Find out whether it’s the product, the price list or your theme.

1. **What’s happening?** Sign in as a B2B customer, then pick the closest match.
   - The product says “Unavailable”, or shows the retail price: go to question 2
   - The product is missing completely: go to question 3
   - The product shows, but SparkLayer’s buttons or price are missing: go to question 4
2. **Search for the SKU in the Price editor. Does it find the product?** “No product was found for SKU” means SparkLayer doesn’t have it. Where to look: Pricing > Price editor (SparkLayer).
   - Yes: go to question 5
   - No product was found: go to question 3
3. **Does every variant of the product have a SKU?** Check each variant, not just the product. A barcode doesn’t count as a SKU. Where to look: Products > select the product (Shopify admin).
   - Yes: go to question 6
   - No: go to fix A (Add a SKU to every variant)
4. **Are SparkLayer’s buttons missing on every product, or just some?** Check a few products while signed in as a B2B customer.
   - Every product: go to fix B (This looks like a tags or theme issue)
   - Just some: go to question 7
5. **Does the product have a price in a price list on the customer’s group?** Without a B2B price, a product shows as Unavailable, or at your store’s own price. Where to look: Pricing > Price editor (SparkLayer).
   - Yes: go to question 8
   - No: go to question 9
6. **Is each SKU unique across your store?** If two variants share a SKU, SparkLayer can’t tell them apart. Where to look: Products (Shopify admin).
   - Yes: go to question 10
   - No / not sure: go to fix C (Make each SKU unique)
7. **Where are they missing?** Product pages and collection pages use different parts of your theme.
   - On the product page: go to question 11
   - On collection or search results pages: go to question 12
   - In a wishlist, quick view or other app: go to fix D (Other apps show your retail price)
8. **Is the customer trying to add fewer than the lowest tier in a tiered price list?** With tiered pricing, the lowest tier also sets the smallest quantity a customer can buy.
   - Yes: go to fix E (Add a tier for smaller quantities)
   - No: go to question 13
9. **Which type of price list should give it a price?** Manual lists are uploaded by CSV or set in the Price editor. Automatic lists work prices out from a pricing source, such as your Shopify prices. Where to look: Pricing > Price lists (SparkLayer).
   - Automatic: go to question 14
   - Manual (CSV): go to question 15
10. **Is the product’s status Active?** SparkLayer only imports active products, not Draft ones. Where to look: Products > select the product (Shopify admin).
   - Yes: go to question 16
   - No: go to fix F (Set the product to Active)
11. **Does this product use a different product template from the ones that work?** Check the Theme template setting on the product. Each template needs SparkLayer’s product widget. Where to look: Products > select the product (Shopify admin).
   - Yes: go to fix G (Add SparkLayer to this product template)
   - No / not sure: go to question 2
12. **Are you using a filter or search app on that page?** Filter and search apps often use their own product card, which needs SparkLayer added separately.
   - Yes: go to fix H (Add SparkLayer to the app’s product card)
   - No / not sure: go to fix I (Add SparkLayer to your product card)
13. **Does the variant’s `sparklayer.settings` metafield set `"sell": false` for this group?** That makes a variant visible but un-sellable on purpose. Where to look: Products > select a variant > Metafields (Shopify admin).
   - Yes: go to fix J (The variant is set not to be sold)
   - No / no metafield: go to fix K (Everything checks out)
14. **Does this variant have a value in the list’s pricing source?** For example, a list based on compare-at price needs a compare-at price on every variant. An empty field means there’s no B2B price. Where to look: Products > select the product (Shopify admin).
   - Yes: go to fix K (Everything checks out)
   - No: go to fix L (Fill in the pricing source)
15. **Did the SKUs change in Shopify after you uploaded the list?** Prices are matched by SKU, so a renamed SKU no longer matches its old row.
   - Yes: go to fix M (Update the price list with the new SKUs)
   - No / not sure: go to question 17
16. **Is the product published to the SparkLayer Wholesale sales channel?** Open the product and check its sales channels. Products from Shopify’s own Bundles app can’t be added to it. Where to look: Products > select the product (Shopify admin).
   - Yes: go to question 18
   - No: go to fix N (Add the product to the SparkLayer Wholesale sales channel)
   - I can’t select it (a bundle): go to fix O (Shopify’s own Bundles app isn’t supported)
17. **Do the SKUs in your CSV match Shopify exactly, with no spaces before or after?** Spreadsheet exports often add spaces. The upload succeeds, but nothing matches.
   - Yes: go to fix P (Add a price for this product)
   - No / not sure: go to fix Q (Trim the SKUs and upload again)
18. **Could the product be hidden on purpose, by B2B Catalogs or a visibility setting?** For example a `b2c-only` tag, or `"display": false` for the customer’s group.
   - Yes / not sure: go to fix R (Check what’s hiding it)
   - No: go to fix K (Everything checks out)

**Fixes**

- **A. Add a SKU to every variant** SparkLayer matches B2B prices to SKUs, so variants without one won’t show. Add a SKU and the product will appear after it syncs. Where: Products > select the product (Shopify admin).
- **B. This looks like a tags or theme issue** When SparkLayer’s buttons are missing on every product, the cause is usually the customer’s tags or your theme. Next: SparkLayer not showing or looking wrong?
- **C. Make each SKU unique** Rename duplicate SKUs so every variant has its own. Then update any price lists that use the old SKUs. Where: Products (Shopify admin).
- **D. Other apps show your retail price** Wishlist, quick view and search apps show Shopify’s own price and don’t know about B2B prices. A SparkLayer widget can be added to the app’s template instead. Ask us, or see the guide. See [Prices in other apps](https://docs.sparklayer.io/help/pricing/pricing-display.md).
- **E. Add a tier for smaller quantities** If the first tier starts at, say, 50, customers can’t buy fewer than 50. Add a price for a quantity of 1 if smaller orders should be allowed. Where: Pricing > Price editor (SparkLayer). See [Quantity pricing](https://docs.sparklayer.io/help/pricing/quantity-pricing.md).
- **F. Set the product to Active** Draft products don’t sync to SparkLayer. Set it to Active and allow a few minutes for it to sync. Where: Products > select the product (Shopify admin).
- **G. Add SparkLayer to this product template** Each product template needs SparkLayer’s product widget. Switch the product to your main template, or send us the template name and we’ll add it. Where: Products > select the product (Shopify admin).
- **H. Add SparkLayer to the app’s product card** Tell us which filter or search app you use and we’ll add SparkLayer’s product card widget to it.
- **I. Add SparkLayer to your product card** Your theme’s product card is missing SparkLayer’s widget, which often happens after a theme update. Send us a link to the page and we’ll add it.
- **J. The variant is set not to be sold** Remove `"sell": false` for this group, or change it to true, if customers in it should be able to buy it. Where: Products > select a variant > Metafields (Shopify admin). See [Product settings](https://docs.sparklayer.io/help/storefront/product-settings.md).
- **K. Everything checks out** Your setup looks right, so we'll take it from here. Send us your answers with the product link and the customer’s email.
- **L. Fill in the pricing source** The automatic list has nothing to calculate from, so the variant has no B2B price. Add the value, for example a compare-at price, and allow a few minutes for it to sync. Where: Products > select the product (Shopify admin). See [Automatic price lists](https://docs.sparklayer.io/help/pricing/managing-pricing.md).
- **M. Update the price list with the new SKUs** Rows for the old SKUs don’t match anything now. Upload the prices again with the new SKUs, or set them in the Price editor. Where: Pricing > Price lists (SparkLayer).
- **N. Add the product to the SparkLayer Wholesale sales channel** SparkLayer only imports products published to its sales channel. Where: Products > select the product (Shopify admin).
- **O. Shopify’s own Bundles app isn’t supported** Its bundle products can’t be published to the SparkLayer sales channel, so they get no B2B price or buttons. Use a bundle app that creates a regular product with its own SKU. See [Bundles and SparkLayer](https://docs.sparklayer.io/help/platforms/shopify/faqs.md#do-bundles-from-other-apps-get-b2b-prices).
- **P. Add a price for this product** Add the SKU to a price list on the customer’s group, or set it in the Price editor. If you don’t want B2B customers to buy it, hide it from them instead. Where: Pricing > Price editor (SparkLayer).
- **Q. Trim the SKUs and upload again** Clear the price list, remove spaces from the SKU column, save the CSV and upload it again. SKUs must match Shopify exactly. Where: Pricing > Price lists (SparkLayer). See [Upload prices by CSV](https://docs.sparklayer.io/help/pricing/csv-upload.md).
- **R. Check what’s hiding it** B2B Catalogs tags and the visibility metafield can hide products on purpose. Next: Product showing to the wrong customers?

**Diagnose: Product showing to the wrong customers?** Check which tool should hide it.

1. **What’s happening?** Pick the closest match.
   - A product shows to customers who shouldn’t see it: go to question 2
   - A product is hidden from customers who should see it: go to fix A (Check the product itself)
2. **Where do they see it?** SparkLayer’s own views and your theme’s pages are hidden by different tools.
   - In SparkLayer’s quick order, search or cart: go to question 3
   - On collection, product or search pages: go to question 4
   - In a section such as a featured collection: go to question 5
3. **Does the variant’s `sparklayer.settings` metafield set `"display": false` for the customer’s group?** Use the group’s handle, for example `base`. Entries for a group override the `base` entry. Where to look: Products > select a variant > Metafields (Shopify admin).
   - Yes: go to question 6
   - No: go to fix B (Add a rule for that group)
4. **Is the free B2B Catalogs app installed and enabled on your live theme?** The visibility metafield only hides products inside SparkLayer. Hiding them from your theme’s pages needs B2B Catalogs. Where to look: Online Store > Themes (Shopify admin).
   - Yes: go to question 7
   - No / not sure: go to fix C (Install B2B Catalogs and enable it on your live theme)
5. **Is the free B2B Catalogs app installed and enabled on your live theme?** Sections such as featured collections are your theme’s, so only B2B Catalogs can hide products in them. Where to look: Online Store > Themes (Shopify admin).
   - Yes: go to fix D (Turn B2B Catalogs off and on again on your live theme)
   - No / not sure: go to fix C (Install B2B Catalogs and enable it on your live theme)
6. **Is the JSON written with straight quotes and valid formatting?** Curly quotes from a word processor, or a missing comma or bracket, break every rule in the value. Paste it into a JSON checker if unsure.
   - Yes: go to fix E (Everything checks out)
   - No / not sure: go to fix F (Fix the JSON)
7. **Is the product tagged, for example `b2b-only`, or in a catalog for the right groups?** `b2b-only` hides a product from retail shoppers. `b2c-only` hides it from B2B customers. Where to look: Products > select the product (Shopify admin).
   - Yes: go to fix D (Turn B2B Catalogs off and on again on your live theme)
   - No: go to fix G (Tag the product)

**Fixes**

- **A. Check the product itself** A product that should show but doesn’t usually has a SKU, status, sales channel or price list issue. Next: Product missing, no B2B price or “Unavailable”?
- **B. Add a rule for that group** Add an entry for the customer’s group with `"display": false` to the variant’s `sparklayer.settings` metafield. To hide it from every B2B customer, use the `base` group. Where: Products > select a variant > Metafields (Shopify admin). See [Product settings](https://docs.sparklayer.io/help/storefront/product-settings.md).
- **C. Install B2B Catalogs and enable it on your live theme** Without it, tags such as `b2b-only` and the visibility metafield can’t hide products on your theme’s pages. Install the free app, then enable it on your live (published) theme. See [B2B Catalogs](https://docs.sparklayer.io/help/storefront/b2b-catalogs.md).
- **D. Turn B2B Catalogs off and on again on your live theme** After app updates or theme changes, the live theme may not have the latest B2B Catalogs code. Turn it off and on again on the live theme. If the product still shows in a section, send us the page link. See [B2B Catalogs](https://docs.sparklayer.io/help/storefront/b2b-catalogs.md).
- **E. Everything checks out** Your setup looks right, so we'll take it from here. Send us your answers with the product link and the customer’s email.
- **F. Fix the JSON** Retype the quotes as straight quotes, correct the formatting and save. Copy an example from Product settings as a starting point. See [Product settings examples](https://docs.sparklayer.io/help/storefront/product-settings.md).
- **G. Tag the product** Add `b2b-only` to keep it from retail shoppers, or set up a catalog for the groups that should see it. Where: Products > select the product (Shopify admin). See [Catalogs per customer group](https://docs.sparklayer.io/help/storefront/b2b-catalogs/configuring-advanced-catalogs.md).

**Diagnose: Stock labels or numbers looking wrong?** Find which setting controls what B2B customers see.

1. **What’s happening?** Sign in as a B2B customer, then pick the closest match.
   - A stock label still shows after I turned stock display off: go to question 2
   - The stock number differs from Shopify: go to question 3
   - It says pre-order or back-order, but there’s stock: go to fix A (Units committed to orders aren’t available)
   - No stock messages show at all: go to question 4
2. **Which label is still showing?** Each label is controlled separately.
   - Pre-order: go to fix B (Tick “Hide pre-order” on the group)
   - In stock, low stock or out of stock: go to question 5
   - Unavailable: go to fix C (“Unavailable” usually means no B2B price)
3. **Does the product show the same number in Product data lookup?** Product data lookup shows the stock SparkLayer has for the product. Where to look: Integrations > Product sync (SparkLayer).
   - Yes, it matches the storefront: go to fix A (Units committed to orders aren’t available)
   - No, it’s different: go to fix D (Sync the product)
4. **Is “Show stock availability to customers” ticked on the customer’s group?** It’s in the group’s stock display settings. Where to look: Customers > Groups (SparkLayer).
   - Yes: go to fix E (Your theme needs the stock display setting)
   - No: go to fix F (Turn on stock display for the group)
5. **Is the label in SparkLayer’s product area, or somewhere else on the page?** Your theme can show its own stock label, which SparkLayer’s settings don’t control.
   - In SparkLayer’s area: go to fix G (Check the customer’s group)
   - Somewhere else: go to fix H (That label is your theme’s)

**Fixes**

- **A. Units committed to orders aren’t available** SparkLayer shows Shopify’s Available quantity: on hand minus units committed to open orders. With 1 on hand committed to an order, 0 is available, so if the variant can be sold when out of stock it shows as pre-order. See [How the stock status is chosen](https://docs.sparklayer.io/help/storefront/stock-display.md).
- **B. Tick “Hide pre-order” on the group** Unticking “Show stock availability to customers” hides the in stock, low stock and out of stock labels only. The pre-order label has its own setting. Changes to a group apply straight away. Where: Customers > Groups (SparkLayer). See [Stock display](https://docs.sparklayer.io/help/storefront/stock-display.md).
- **C. “Unavailable” usually means no B2B price** It’s usually a price list issue, not a stock one. Next: Product missing, no B2B price or “Unavailable”?
- **D. Sync the product** SparkLayer’s stock is out of date for this product. Run a product sync and check again after a few minutes. If it stays wrong, check stock locations on the customer’s group and any reserved stock, then contact us. Where: Integrations > Product sync (SparkLayer).
- **E. Your theme needs the stock display setting** Stock messages also need SparkLayer’s theme configuration to include stock display. Tell us the theme name and we’ll add it.
- **F. Turn on stock display for the group** Tick “Show stock availability to customers” on the customer’s group and save. It applies straight away. Where: Customers > Groups (SparkLayer).
- **G. Check the customer’s group** Stock display is set per customer group, and changes apply straight away. Check you changed the group this customer is in, and that they’re signed in. Where: Customers > Groups (SparkLayer). Next: Wrong prices, payment methods or shipping for a customer?
- **H. That label is your theme’s** SparkLayer’s settings don’t control labels your theme adds. Hide it for B2B customers in your theme, or send us the page link and we’ll help.

**Diagnose: Pack sizes or quantity limits not applying?** Check the metafields behind your product rules.

1. **Are SparkLayer’s metafields turned on in SparkLayer?** SparkLayer doesn’t read metafields until they’re configured in the Metafields card. Where to look: Integrations > Platform (SparkLayer).
   - Yes: go to question 2
   - No / not sure: go to fix A (Turn on SparkLayer’s metafields)
2. **How is the rule set up on the product?** Single metafields, such as `sparklayer.pack_size`, set one rule for everyone. The `sparklayer.settings` metafield sets rules per customer group. Where to look: Products > select a variant > Metafields (Shopify admin).
   - Single metafields: go to question 3
   - The sparklayer.settings metafield: go to question 4
   - Not sure: go to question 3
3. **Does the variant also have a `sparklayer.settings` metafield with a value?** When it does, it takes priority over the single metafields. Where to look: Products > select a variant > Metafields (Shopify admin).
   - Yes: go to fix B (Put the rule inside the settings metafield)
   - No: go to question 5
4. **Does the JSON have an entry for this customer’s group, or a `base` entry?** `base` is the default for every group. An entry for a group overrides it. Use the group’s handle, for example `vip`. Where to look: Customers > Groups (SparkLayer).
   - Yes: go to question 6
   - No: go to fix C (Add an entry for the group)
5. **Is the metafield set on the variant, not the product?** Rules are read per variant, even when a product has only one variant. Where to look: Settings > Custom data > Variants (Shopify admin).
   - Yes, on the variant: go to question 7
   - No, on the product: go to fix D (Move the metafield to the variant)
6. **Is the JSON correctly formatted, with straight quotes?** A missing quote, comma or bracket breaks every rule in the value. Paste it into a JSON checker if unsure.
   - Yes: go to question 8
   - No / not sure: go to fix E (Fix the JSON)
7. **Does the definition’s namespace and key read exactly as documented, such as `sparklayer.pack_size`?** In Shopify the namespace and key are one field. Any other spelling is ignored. Where to look: Settings > Custom data > Variants (Shopify admin).
   - Yes: go to question 9
   - No / not sure: go to fix F (Correct the metafield definition)
8. **Does the rule work on other products, just not this one?** Products on a different theme template may not have SparkLayer’s product widget.
   - Yes: go to fix G (Add SparkLayer to this product’s template)
   - No, it doesn’t work anywhere: go to question 10
9. **Does this variant have a whole number entered?** An empty value means no rule. Where to look: Products > select a variant > Metafields (Shopify admin).
   - Yes: go to question 8
   - No: go to fix H (Add a value to the variant)
10. **Are you testing as a signed-in customer in the group you expect?** Rules follow the customer’s group.
   - Yes: go to fix I (Everything checks out)
   - No / not sure: go to fix J (Check the customer’s group)

**Fixes**

- **A. Turn on SparkLayer’s metafields** In the Metafields card, click Configure and enable the metafields you use. SparkLayer adds their definitions to Shopify for you. Where: Integrations > Platform (SparkLayer). See [Shopify metafields](https://docs.sparklayer.io/help/platforms/shopify/metafields.md).
- **B. Put the rule inside the settings metafield** When a variant has `sparklayer.settings`, its JSON takes priority and the single metafields are ignored. Add the rule, such as `pack_size`, to each group’s entry in the JSON. Where: Products > select a variant > Metafields (Shopify admin). See [Which rule wins](https://docs.sparklayer.io/help/storefront/quantity-rules.md).
- **C. Add an entry for the group** Add an entry with the group’s handle and its rule, or a `base` entry to set a default for everyone. Where: Products > select a variant > Metafields (Shopify admin). See [Product settings](https://docs.sparklayer.io/help/storefront/product-settings.md).
- **D. Move the metafield to the variant** Create the definition under Variants, then add the value to each variant. Where: Settings > Custom data > Variants (Shopify admin).
- **E. Fix the JSON** Correct the formatting and save. Copy an example from Quantity rules as a starting point. See [Quantity rules](https://docs.sparklayer.io/help/storefront/quantity-rules.md).
- **F. Correct the metafield definition** Use the exact namespace and key from Quantity rules, such as `sparklayer.pack_size` with the Integer type. A definition under another namespace is ignored. Where: Settings > Custom data > Variants (Shopify admin). See [Quantity rules](https://docs.sparklayer.io/help/storefront/quantity-rules.md).
- **G. Add SparkLayer to this product’s template** The product uses a template without SparkLayer’s product widget, so its rules can’t show. Switch it to your main template, or send us the template name and we’ll add the widget. Where: Products > select the product (Shopify admin).
- **H. Add a value to the variant** Enter a whole number, for example 6, and save. Each variant needs its own value. Where: Products > select a variant > Metafields (Shopify admin).
- **I. Everything checks out** Your setup looks right, so we'll take it from here. Send us your answers with the product link and the customer’s email.
- **J. Check the customer’s group** Rules depend on the customer’s group, so a missing or wrong group tag stops them applying. Next: Wrong prices, payment methods or shipping for a customer?

**Widgets don't appear when a B2B customer signs in**

1. Check the customer has the right tags in Shopify: `b2b` by default, plus the tags for any other customer group rules.
2. Check the customer has a complete address. **Show errors** on the sync banner in **Customers** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/customers/list)), or **SparkLayer Wholesale > Customers** in the Shopify app lists any customers without one.
3. Check the customer has no sync errors: in **Customers** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/customers/list)), or **SparkLayer Wholesale > Customers** in the Shopify app, click **Show errors** on the sync banner. An error such as `"code":"resource-id-not-found","message":"Invalid customer group"` means the customer has a tag that doesn't match any of your [customer groups](https://docs.sparklayer.io/help/customers/customer-groups.md) at **Customers > Groups** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/customers/groups)), or **SparkLayer Wholesale > Customers > Customer groups** in the Shopify app.
4. Check you've installed the [frontend interfaces](https://docs.sparklayer.io/help/storefront/interfaces.md).
5. Check you're testing on the right Shopify theme. For example, you may have installed SparkLayer on a backup theme.

**Customers can't see B2B prices, or products say "Unavailable"**

These checks are for when the SparkLayer My Account area shows, but product pages have no B2B prices. If nothing from SparkLayer shows, see [Widgets don't appear](#widgets-dont-appear-when-a-b2b-customer-signs-in).

1. Check you've installed the [frontend interfaces](https://docs.sparklayer.io/help/storefront/interfaces.md).
2. Check the customer has the right tags in Shopify: `b2b` by default, plus the tags for any other [customer group](https://docs.sparklayer.io/help/customers/customer-groups.md) rules.
3. Check the customer has no sync errors: in **Customers** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/customers/list)), or **SparkLayer Wholesale > Customers** in the Shopify app, click **Show errors** on the sync banner.
4. Check the product has a SKU. To add SKUs in Shopify, edit products one by one, or in bulk with Shopify's **Import** or **Edit products** feature. A bundle from another app needs its own unique SKU too: see [Do bundles from other apps get B2B prices?](https://docs.sparklayer.io/help/platforms/shopify/faqs.md#do-bundles-from-other-apps-get-b2b-prices)
5. Check the product's status is **Active** in your Shopify admin, not **Draft** or **Pending**. SparkLayer only imports active products.
6. Check the product is included in the **SparkLayer Wholesale** sales channel. SparkLayer only imports pricing for SKUs in that channel.
7. Check you've imported a [price list](https://docs.sparklayer.io/help/pricing.md) that includes the product, and the customer's group uses it. For example, if you have a price list called "Base", check a customer group is assigned that price list. To check a product's prices, search for its SKU in **Pricing > Price editor** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/pricing/editor)), or **SparkLayer Wholesale > Pricing > Price editor** in the Shopify app.
8. If you use tiered pricing, check your CSV has a price for a single unit of every product.
9. If the price list is automatic, check the variant has a value in the list's pricing source. An empty field means no B2B price.
10. If you uploaded a CSV, check the SKUs match Shopify exactly, with no spaces before or after, and that no SKUs have changed in Shopify since. See [Why a product shows Unavailable](https://docs.sparklayer.io/help/pricing/managing-pricing.md#unavailable).
11. If only some products are affected, check they use a product template with SparkLayer's product widget.

**Your store shows a "preview mode" banner**

SparkLayer is still in preview until you finish the last launch step. In your Shopify admin, open **SparkLayer Wholesale** under **Sales channels** and click **Start taking B2B orders**. If the button isn't there, a setup step, such as adding SparkLayer to your theme, isn't complete yet. See the [Launch checklist](https://docs.sparklayer.io/help/get-started/launching.md).

**Styles stop working after you publish a theme**

Check SparkLayer isn't loaded twice: once by the app embed and again by a copy of its script in your theme code. The second copy can override your styles. Keep the app embed and remove the hard-coded script. CSS variables start with two hyphens, for example `--spark-button-color`. See [Customise the design](https://docs.sparklayer.io/help/storefront/customising-design.md).

**The cart count in your header is wrong for B2B customers**

SparkLayer's cart is separate from your theme's Shopify cart, so your header's count shows 0, or items added before the customer signed in. Hide the count for B2B customers, or have a developer keep it in step with SparkLayer's cart using the [JavaScript SDK](https://docs.sparklayer.io/developers/javascript-sdk/cart.md). Our team can hide it for you.

**You can't change part of a widget, such as its layout or a button**

Check [What you can and can't change](https://docs.sparklayer.io/help/storefront/what-you-can-change.md). Text, features and colours are settings or CSS, but some parts are fixed: for example, the layout and button order of the product page widget can only be changed with a custom script, and there's no CSS variable for button width.

**A button or feature is missing, such as shopping lists**

Newer features need a recent version of SparkLayer's storefront code on your theme. [Contact us](https://docs.sparklayer.io/help/support.md) with the feature that's missing and the theme name, and we'll update it.

**Prices are different from what you expect**

**On product pages**

1. In **Settings > Taxes and duties** ([open in the Shopify admin](https://admin.shopify.com/settings/taxes)), check whether **Include sales tax in product price and shipping rate** (under **Global settings**) is turned on. SparkLayer always shows prices net (excluding tax).
2. If it's on and you use an [automatic price list](https://docs.sparklayer.io/help/pricing/managing-pricing.md), work out a percentage that takes the tax out too. See [Tax-inclusive prices](https://docs.sparklayer.io/help/pricing/managing-pricing.md#tax-inclusive-prices). For example, if you want a customer to pay 100 GBP in total, they see 83.33 GBP, and 16.67 GBP tax is added at checkout.
3. If the automatic price list uses a different currency from your store's, set a [currency conversion](https://docs.sparklayer.io/help/pricing/managing-pricing.md#set-a-currency-conversion) on the list so SparkLayer converts your Shopify prices at your exchange rate. To set exact prices in another currency, use a manual price list instead.

**In the cart**

1. If **Include sales tax in product price and shipping rate** is on in Shopify, check your automatic price lists allow for tax (as above).
2. If you use a [manual price list](https://docs.sparklayer.io/help/pricing/managing-pricing.md), check you haven't uploaded gross prices (including tax). Upload all prices net (excluding tax), so tax is added correctly in the cart.
3. To tax individual line items instead of the cart's subtotal (the default), [contact our support team](https://docs.sparklayer.io/help/support.md) to turn on line-item tax.

**Tiered pricing doesn't show**

1. Check the `qty` column is filled in correctly in your price list CSV.
2. Check your CSV has a price for a single unit of every product.
3. Check the product is included in the **SparkLayer Wholesale** sales channel in Shopify. SparkLayer only imports pricing for SKUs in that channel.

## Price lists

**The price list import shows errors**

1. Check every product in Shopify has a **unique SKU**.
2. If a product has variants (for example small, medium and large), check none of its SKUs are duplicates.
3. Check the SKU exists in your Shopify catalogue.
4. Check the CSV follows the format in [Pricing](https://docs.sparklayer.io/help/pricing.md), for example with no currency symbols in the **price** column.
5. Check the product is included in the **SparkLayer Wholesale** sales channel in Shopify.
6. Check the product's status is **Active** in Shopify. SparkLayer only imports prices for active products, not drafts.

**A customer gets prices from the wrong price list**

Put the price list you want them to use first on their customer group at **Customers > Groups** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/customers/groups)), or **SparkLayer Wholesale > Customers > Customer groups** in the Shopify app: when a product is in more than one of the group's price lists, the first list wins. See [Price list order](https://docs.sparklayer.io/help/pricing/managing-pricing.md#price-list-order).

If the order is right, check the customer is in the group you expect, and has no price lists of their own in [Prices for one customer](https://docs.sparklayer.io/help/pricing/customer-pricing.md).

**You can't choose a source for an automatic price list**

Check the products you want B2B customers to buy have SKUs, and that they're included in the **SparkLayer Wholesale** sales channel in Shopify.

An empty **Pricing Source** list usually means SparkLayer can't find SKUs on your store. It needs them to sync product and pricing data.

## Customers, sales agents and applications

**Diagnose: Wrong prices, payment methods or shipping for a customer?** Check the customer’s tags and customer group.

1. **What is the customer seeing?** Pick the closest match.
   - Wrong prices: go to question 2
   - Wrong payment methods: go to question 2
   - Wrong shipping options: go to question 2
2. **Are you checking while signed in as the customer?** B2B prices, payment methods and shipping only apply once a B2B customer signs in.
   - Yes: go to question 3
   - No / not sure: go to fix A (Sign in as the customer first)
3. **Does the customer have the `b2b` tag?** Check the spelling exactly, with no extra spaces or characters. Where to look: Customers > select the customer > Tags (Shopify admin).
   - Yes: go to question 4
   - No: go to fix B (Add the `b2b` tag)
4. **Should they be in a customer group other than Base?** Customers with only the `b2b` tag are in the Base customer group.
   - Yes: go to question 5
   - No, Base is right: go to question 6
5. **Does the customer have that group’s tag, spelt exactly as it is on the group?** Each group shows its Shopify tag. It’s usually `b2b-` followed by the group’s handle, for example `b2b-vip`. Where to look: Customers > Groups (SparkLayer).
   - Yes: go to question 7
   - No: go to fix C (Fix the group tag)
6. **Are the price lists / payment methods / shipping set up on that customer group?** Open the group and check its settings. Where to look: Customers > Groups (SparkLayer).
   - Yes: go to question 8 for prices; fix D (Tags look right: check plan and terms) for payments; fix E (Tags look right: check your shipping setup) for shipping
   - No: go to fix F (Set them up on the group)
7. **Does the customer have only `b2b` and that one group tag?** Look for older group tags left over from a previous setup. A customer can only be in one group. Where to look: Customers > select the customer > Tags (Shopify admin).
   - Yes: go to question 6
   - No, there are others: go to fix G (Remove the extra tags)
8. **Is the product in more than one of the group’s price lists?** SparkLayer uses the first price list on the group that contains the SKU. An automatic list covers every product, so if it’s first it always wins. Where to look: Customers > Groups (SparkLayer).
   - Yes: go to fix H (Put the most specific price list first)
   - No / not sure: go to fix I (Tags look right: check the price itself)

**Fixes**

- **A. Sign in as the customer first** Signed-out visitors see retail prices and checkout. Sign in as the customer, or use Place a test order, and check again. Where: Orders > Place a test order (SparkLayer).
- **B. Add the `b2b` tag** Without it the customer shops as retail, with retail prices and checkout. Add the tag and save. Where: Customers > select the customer > Tags (Shopify admin).
- **C. Fix the group tag** A tag that doesn’t match a group is ignored, and the customer gets Base settings. Copy the tag from the group and add it to the customer. If the group doesn’t exist yet, create it. Where: Customers > Groups (SparkLayer).
- **D. Tags look right: check plan and terms** Some payment methods depend on your plan, and Pay on Account needs the customer’s credit limit and terms set. See [Payment methods](https://docs.sparklayer.io/help/ordering/payment-methods.md).
- **E. Tags look right: check your shipping setup** The customer is in the right group, so the cause is in your shipping settings. Next: Shipping not working as expected?
- **F. Set them up on the group** Add the missing price lists / payment methods / shipping to the customer’s group, save, then sign in as the customer to check. Where: Customers > Groups (SparkLayer). See [Customer groups](https://docs.sparklayer.io/help/customers/customer-groups.md).
- **G. Remove the extra tags** SparkLayer only uses `b2b` and one customer group tag. Extra B2B or group tags can put the customer in the wrong group. Remove the ones you don’t need, save, and ask them to sign out and back in. Where: Customers > select the customer > Tags (Shopify admin).
- **H. Put the most specific price list first** The first list on the group that contains the SKU sets its price. Move your specific lists above any automatic list, and save. Where: Customers > Groups (SparkLayer). See [Price list order](https://docs.sparklayer.io/help/pricing/managing-pricing.md#price-list-order).
- **I. Tags look right: check the price itself** The customer is in the right group, so the difference is coming from the price list or your tax settings. Next: Prices or tax looking wrong?

**Diagnose: Sales agent having problems?** Check their account, role and the customers they can see.

1. **What’s happening?** Pick the closest match.
   - The agent doesn’t see sales agent mode: go to question 2
   - A customer is missing from the agent’s search: go to question 3
   - The agent sees customers they shouldn’t: go to question 4
   - “The cart is being processed by a sales agent”: go to fix A (Another agent has that customer open)
   - The agent can’t edit prices, add customers or override rules: go to question 5
2. **Does the agent’s own customer record have the `b2b` tag?** A sales agent is a B2B customer account with a sales agent role. Where to look: Customers > select the customer > Tags (Shopify admin).
   - Yes: go to question 6
   - No: go to fix B (Add the `b2b` tag to the agent’s account)
3. **Does the missing customer have the `b2b` tag?** Only B2B customers appear in an agent’s search. Where to look: Customers > select the customer > Tags (Shopify admin).
   - Yes: go to question 7
   - No: go to fix C (Add the `b2b` tag to the customer)
4. **Is the agent limited to some customer groups?** By default an agent sees every B2B customer. Where to look: Customers > Agents (SparkLayer).
   - Yes: go to question 8
   - No, all customers: go to fix D (Limit the agent to their customer groups)
5. **Does the agent’s role include permission for this?** Roles decide what an agent can do beyond placing orders, such as editing prices or adding customers. Where to look: Customers > Roles (SparkLayer).
   - Yes: go to question 9
   - No / not sure: go to fix E (Give the role that permission)
6. **Is the person listed as a sales agent in SparkLayer?** Their role decides what they can do. Where to look: Customers > Agents (SparkLayer).
   - Yes: go to question 10
   - No / not sure: go to fix F (Make them a sales agent)
7. **Is the agent limited to some customer groups?** The Sales agents screen shows the groups each agent can see, or All customers. Where to look: Customers > Agents (SparkLayer).
   - Yes: go to question 11
   - No, all customers: go to fix G (Check the customer has synced)
8. **Does your store still use the older sales agent groups metafield (`sparklayer.sales_agent_groups`)?** Older setups gave customers sales agent group values in a metafield. Customer tags never work for this. Where to look: Customers > select the customer > Metafields (Shopify admin).
   - Yes: go to fix H (Check the customers’ sales agent group values)
   - No: go to fix I (Check the customers’ groups)
9. **Is the agent trying to raise a price?** Agents can edit unit prices on an order, but only downwards.
   - Yes: go to fix J (Prices can only be lowered)
   - No: go to fix K (Everything checks out)
10. **Are they signed in on your store with exactly that email?** A different or mistyped email creates a new retail customer with no sales agent role.
   - Yes: go to fix L (Check your plan includes sales agents)
   - No / not sure: go to fix M (Sign in with the sales agent’s email)
11. **Is the customer in one of those groups?** Check the customer’s group tag against the agent’s groups. Where to look: Customers > select the customer > Tags (Shopify admin).
   - Yes: go to fix G (Check the customer has synced)
   - No: go to fix N (Let the agent see that group)

**Fixes**

- **A. Another agent has that customer open** A customer’s cart is locked to the sales agent acting for them. Another agent, or the same login on another device, sees this message until the first agent stops acting for the customer. Give each person their own sales agent login, as shared logins make this much more likely. See [Ordering for a customer](https://docs.sparklayer.io/help/sales-ordering/order-for-a-customer.md).
- **B. Add the `b2b` tag to the agent’s account** Sales agents must be B2B customers in your store before they can be given a sales agent role. Add the tag, then make them a sales agent. Where: Customers > select the customer > Tags (Shopify admin).
- **C. Add the `b2b` tag to the customer** Untagged customers never appear in an agent’s search. Add the tag and save. Where: Customers > select the customer > Tags (Shopify admin).
- **D. Limit the agent to their customer groups** On the agent’s page, tick the customer groups they look after. They then only see customers in those groups. Where: Customers > Agents (SparkLayer). See [Restrict which customers an agent sees](https://docs.sparklayer.io/help/sales-reps.md#restrict-which-customers-a-sales-agent-can-see).
- **E. Give the role that permission** Edit the role, tick the permission and save. It applies straight away to every agent with that role. Where: Customers > Roles (SparkLayer). See [Roles and permissions](https://docs.sparklayer.io/help/sales-reps/roles.md).
- **F. Make them a sales agent** Click Add sales agent, choose the person and give them a role. Where: Customers > Agents (SparkLayer). See [Add a sales agent](https://docs.sparklayer.io/help/sales-reps.md).
- **G. Check the customer has synced** If a tagged customer is in the right group but still missing, they may not have synced. Click Show errors on the sync banner. Where: Customers (SparkLayer).
- **H. Check the customers’ sales agent group values** An agent sees any customer that shares one of their group values. Remove values a customer shouldn’t have. Values can only use letters, numbers and dashes, such as `south-east`, and tags don’t count. Where: Customers > select the customer > Metafields (Shopify admin).
- **I. Check the customers’ groups** The agent sees every customer in the groups ticked for them. Untick groups they shouldn’t see, or move those customers to another group. Where: Customers > Agents (SparkLayer).
- **J. Prices can only be lowered** Agents can lower unit prices on an order, not raise them. To charge more, change the customer’s price list.
- **K. Everything checks out** Your setup looks right, so we'll take it from here. Send us your answers with the agent’s and customer’s email addresses.
- **L. Check your plan includes sales agents** Sales agent ordering is on the Starter plan and above, and extra agents are an add-on. If your plan includes them, send us the agent’s email and we’ll take a look. See [Plans and features](https://docs.sparklayer.io/help/plans-and-features.md).
- **M. Sign in with the sales agent’s email** Ask them to sign out and back in using the exact email that has the sales agent role.
- **N. Let the agent see that group** Tick the customer’s group under the customers this agent can see, or move the customer to one of the agent’s groups. Where: Customers > Agents (SparkLayer).

**Diagnose: Trade applications not working?** Check your form, approvals and customer sign-in.

1. **What’s going wrong?** Pick the closest match.
   - Customers can’t find the application form: go to question 2
   - I’m not told about new applications: go to question 2
   - Approve or Reject on an entry does nothing: go to fix A (Approve and Reject run on workflows)
   - Approved customers can’t see B2B pricing: go to question 2
   - Approved customers didn’t get an email: go to question 2
   - People sign in without applying: go to fix B (Shopify lets anyone create an account)
   - Customers can’t sign in: go to question 3
2. **Which form do you use for applications?** SparkLayer Forms is built into the SparkLayer Dashboard. Customer Fields is a separate Shopify app.
   - SparkLayer Forms: go to question 4 for missing; question 5 for arriving; question 6 for access; question 7 for email
   - Customer Fields: go to question 8 for missing; question 9 for arriving; question 10 for access; question 11 for email
   - Another app: go to fix C (Check your form app’s settings)
3. **Which customer accounts does your Shopify store use?** Shopify has customer accounts (sign in with an emailed code) and legacy accounts (sign in with a password). Where to look: Settings > Customer accounts (Shopify admin).
   - Customer accounts (a code): go to fix D (Sign in with the code, using the right email)
   - Legacy accounts (a password): go to fix E (The customer needs to activate their account)
   - Not sure: go to fix F (Check your customer accounts setting)
4. **Is the form added to a page on your live theme?** Forms are built in SparkLayer, then added to a page on your store. Where to look: Forms (SparkLayer).
   - Yes: go to question 12
   - No / not sure: go to fix G (Add the form to a page)
5. **Do new submissions show on the form’s Entries tab?** Applications appear there as soon as they’re submitted. Where to look: Forms (SparkLayer).
   - Yes: go to fix H (Applications are arriving: add a notification)
   - No: go to question 4
6. **Does approving an application give the customer the `b2b` tag and their group’s tag?** The Wholesale Registration Form template creates the customer with their customer group’s tag when you approve them. Where to look: Forms (SparkLayer).
   - Yes: go to fix I (Approval looks right: check the customer)
   - No / not sure: go to fix J (Check what approval does)
7. **Does the form’s approval workflow send the customer an email?** Emails to customers are sent by a workflow step. Where to look: Forms (SparkLayer).
   - Yes: go to fix K (Check the email arrived)
   - No / not sure: go to fix L (Add an email step to the approval workflow)
8. **Is Customer Fields turned on in your theme, with the form on a page?** The app must be enabled in the theme editor and its form added to a page. Where to look: Online Store > Themes (Shopify admin).
   - Yes: go to question 12
   - No / not sure: go to fix M (Turn on Customer Fields and place the form)
9. **Is “Require account approval” turned on for the form?** With approval on, applications wait in Customer Fields until you approve them.
   - Yes: go to fix N (Check pending customers in Customer Fields)
   - No: go to fix O (Applications go straight to Shopify)
10. **Does the form’s auto-tag rule add `b2b` to approved customers?** Check the rule on the form’s Rules tab.
   - Yes: go to fix I (Approval looks right: check the customer)
   - No / not sure: go to fix P (Add `b2b` in the auto-tag rule)
11. **Is the approval email set up in Customer Fields?** Approval emails for Customer Fields forms are sent by Customer Fields, not SparkLayer.
   - Yes: go to fix K (Check the email arrived)
   - No / not sure: go to fix Q (Set up the approval email in Customer Fields)
12. **Is there a link to the form page in your menu or footer?** Customers need a way to reach the page.
   - Yes: go to fix R (Everything checks out)
   - No: go to fix S (Link to the form from your store)

**Fixes**

- **A. Approve and Reject run on workflows** The buttons, the application status and new-entry emails are run by the form’s workflows, which are on the Growth plan and above. On lower plans the buttons show but do nothing. To approve by hand, create the customer in Shopify with the `b2b` tag and their group’s tag. See [Plans and features](https://docs.sparklayer.io/help/plans-and-features.md).
- **B. Shopify lets anyone create an account** With Shopify’s customer accounts, anyone can sign in with an emailed code. SparkLayer only appears for customers tagged `b2b`, so they see your store as retail. You can redirect them, show a banner pointing to your application form, or sign them out with a message. See [Wholesale-only stores](https://docs.sparklayer.io/help/platforms/shopify/customisations/registration-and-login.md).
- **C. Check your form app’s settings** Make sure approved customers get the `b2b` tag and their group tag. That’s what gives them access to SparkLayer. Next: Wrong prices, payment methods or shipping for a customer?
- **D. Sign in with the code, using the right email** Customers sign in with a code sent to their email, with no password. If they use a different email from their customer record, Shopify creates a new retail customer without their tags. Where: Customers > select the customer > Tags (Shopify admin).
- **E. The customer needs to activate their account** With legacy accounts, a new customer must activate their account from the invite email before they can sign in. Open the customer, click More actions, then Send account invite. Where: Customers > select the customer > Tags (Shopify admin).
- **F. Check your customer accounts setting** Open Settings, then Customer accounts, to see which your store uses. Then start this check again. Where: Settings > Customer accounts (Shopify admin).
- **G. Add the form to a page** Add the form to a page on your live theme, such as a trade account page. Where: Forms (SparkLayer). See [Embed a form](https://docs.sparklayer.io/help/forms/embedding-and-styling.md).
- **H. Applications are arriving: add a notification** To be emailed about new applications, use a workflow with the Form submitted trigger and a Send email step. Workflows are on the Growth plan and above. On lower plans, check the Entries tab. Where: Forms (SparkLayer). See [Workflows](https://docs.sparklayer.io/help/forms/workflows.md).
- **I. Approval looks right: check the customer** If an approved customer still can’t see B2B pricing, check their tags and how they’re signing in. Next: SparkLayer not showing or looking wrong?
- **J. Check what approval does** Set the form’s approval to create the customer with the right customer group. Customers approved before the change need tagging by hand. Where: Forms (SparkLayer). See [Approve trade applications](https://docs.sparklayer.io/help/guides/approve-trade-applications.md).
- **K. Check the email arrived** Ask the customer to check their spam or junk folder, and check the email address on their application.
- **L. Add an email step to the approval workflow** Add a Send email step to the workflow that runs when you approve an application, so customers know they can sign in. Where: Forms (SparkLayer). See [Workflows](https://docs.sparklayer.io/help/forms/workflows.md).
- **M. Turn on Customer Fields and place the form** Enable Customer Fields in your theme editor, then add the form to your registration or wholesale page. Where: Online Store > Themes (Shopify admin).
- **N. Check pending customers in Customer Fields** With approval on, customers are only created in Shopify once you approve them. Review pending applications in the Customer Fields app.
- **O. Applications go straight to Shopify** With approval off, customers are created immediately. Check your Shopify customers list for new accounts. Where: Customers (Shopify admin).
- **P. Add `b2b` in the auto-tag rule** On the form’s Rules tab, make the auto-tag rule add `b2b`, and the group tag if you use one. Customers approved before the change need tagging by hand.
- **Q. Set up the approval email in Customer Fields** Turn on and edit the approved-customer email in the Customer Fields app.
- **R. Everything checks out** Your setup looks right, so we'll take it from here. Send us your answers with a link to the form page.
- **S. Link to the form from your store** Add a link to the form page in your header or footer menu so trade customers can find it.

**A B2B customer can't sign in or sees retail prices**

Work through these in order:

1. **Check their tags in Shopify.** The `b2b` tag must stay on the customer. Any other group tag needs the `b2b-` prefix, such as `b2b-trade`, and must match a customer group at **Customers > Groups** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/customers/groups)), or **SparkLayer Wholesale > Customers > Customer groups** in the Shopify app. A tag that matches no group shows as an **Invalid customer group** sync error. See [Add customers to a group](https://docs.sparklayer.io/help/customers/add-customers-to-a-group.md).
2. **Check every saved address is complete.** Each address in their address book, not only the default, needs a country, first line, city and postcode or ZIP code.
3. **Check the email they sign in with.** With Shopify's new customer accounts, anyone can sign in with an emailed code. A different or mistyped email address creates a separate retail account, without the `b2b` tag.
4. **Try a private (incognito) browser window**, to rule out an old session.
5. **Check SparkLayer is on your published theme**, not only on a backup or unpublished copy. See [Theme setup](https://docs.sparklayer.io/help/platforms/shopify/theme-setup.md).
6. **If you're testing, use a real Shopify customer** with the `b2b` tag and a complete address, not your staff account.
7. **Still stuck?** [Contact support](https://docs.sparklayer.io/help/support.md) with the customer's email address and the time they tried.

For sync errors, see [Fix customers or products that won't sync](https://docs.sparklayer.io/help/guides/fix-sync-problems.md).

## Product and customer sync

**Product sync shows errors**

Fix the data in Shopify, usually a missing SKU, then click **Sync products now** at **Integrations > Product sync** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/integrations/products-sync)), or **SparkLayer Wholesale > Integrations > Product sync** in the Shopify app. Each error message and its fix is in [Fix products](https://docs.sparklayer.io/help/guides/fix-sync-problems.md#fix-products).

**Product data lookup says "No products found"**

**Product data lookup** is in **Integrations > Product sync** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/integrations/products-sync)), or **SparkLayer Wholesale > Integrations > Product sync** in the Shopify app. If it can't find a product by its SKU:

1. Check the product has a valid SKU. To add SKUs in Shopify, edit products one by one, or in bulk with Shopify's **Import** or **Edit products** feature.
2. Check the product's status is **Active** in your Shopify admin, not **Draft** or **Pending**. SparkLayer only imports active products.
3. Check the product is included in the **SparkLayer Wholesale** sales channel. Do this for every product you want B2B customers to see.

If you still can't find it, [contact our support team](https://docs.sparklayer.io/help/support.md).

**Customer sync shows errors**

Fix the listed customer records in Shopify. The rest of your customers have synced. On **Customers** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/customers/list)), or **SparkLayer Wholesale > Customers** in the Shopify app, the banner reads something like **Customers sync completed with 3 errors**.

1. Click **Show errors** on the banner. **Customer sync errors** lists each customer's name, email and problem.
2. Click **Open customers in Shopify** and fix each customer record. They sync on the next partial sync.

Each error message and its fix is in [Fix customers](https://docs.sparklayer.io/help/guides/fix-sync-problems.md#fix-customers). The most common causes are an incomplete second address and a tag that matches no customer group.

**Customers with a sales agent group won't sync**

**Shopify only:**

Set the sales agent groups metafield to **Limit to preset choices**, with each of your sales agent groups as a choice. If the metafield accepts free text instead, customers who have a value in it can show sync errors.

1. In your Shopify admin, go to **Settings > Custom data** ([open in the Shopify admin](https://admin.shopify.com/settings/custom_data)) and click **Customers**.
2. Open the sales agent groups definition (`sparklayer.sales_agent_groups`).
3. Turn on **Limit to preset choices** and add each sales agent group as a choice.
4. Click **Save**. The customers sync on the next partial sync.

See [Set up the sales agent groups metafield](https://docs.sparklayer.io/help/platforms/shopify/metafields.md#set-up-the-sales-agent-groups-metafield).

**A customer isn't in the Customers list**

If you can't find a customer in **Customers** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/customers/list)), or **SparkLayer Wholesale > Customers** in the Shopify app:

1. Check the customer has the `b2b` tag in Shopify. Only customers tagged `b2b` sync to SparkLayer.
2. Click **Show errors** on the sync banner, if there is one, and check whether the customer is listed with a problem.
3. Check you searched by their name, email or company.

If you still can't find them, [contact our support team](https://docs.sparklayer.io/help/support.md).

## Checkout and orders

**Diagnose: Shipping not working as expected?** Check which shipping your B2B customers use.

1. **Is “Use SparkLayer shipping rates” ticked?** For B2B customers it’s either your Shopify shipping or SparkLayer’s shipping rules, never both. Where to look: Settings > Shipping (SparkLayer).
   - Yes, SparkLayer shipping: go to question 2
   - No, Shopify shipping: go to question 3
2. **What’s wrong?** Pick the closest match.
   - I want live carrier rates: go to fix A (Live rates come from Shopify shipping)
   - Rates should depend on the products: go to fix B (Product-based rates need a shipping app)
   - Free shipping isn’t applied: go to question 4
   - “No shipping methods available” at checkout: go to fix C (Cover the customer’s country and group)
   - I can’t edit my rates after a trial: go to fix D (Ask us to switch them off)
3. **What’s wrong?** Pick the closest match.
   - B2B customers see the same rates as retail: go to fix E (Use a shipping app that sets rates by customer tag)
   - I want to hide free shipping from B2B: go to fix E (Use a shipping app that sets rates by customer tag)
   - B2B customers see wrong or missing rates: go to fix F (Check the customer’s setup)
4. **Is the free shipping a SparkLayer discount?** Free shipping can come from a shipping band or from a discount. Where to look: Pricing > Discounts (SparkLayer).
   - Yes, a discount: go to fix G (Select every shipping method the customer can see)
   - No, a shipping band: go to fix H (Check the band order)

**Fixes**

- **A. Live rates come from Shopify shipping** SparkLayer’s rules charge per band, chosen by order value or weight. For live or calculated carrier rates, untick “Use SparkLayer shipping rates” so B2B customers get your Shopify rates, including shipping apps. Where: Settings > Shipping (SparkLayer). See [Shipping rules](https://docs.sparklayer.io/help/ordering/shipping-rules.md).
- **B. Product-based rates need a shipping app** SparkLayer’s rules work on order value or weight only, not on products or tags. Use Shopify shipping with an app that sets rates by product or customer tag, such as Intuitive Shipping. See [Intuitive Shipping](https://docs.sparklayer.io/help/integrations/customer-experience/intuitive-shipping.md).
- **C. Cover the customer’s country and group** No band matches this customer. Check your shipping rules cover their country, their customer group and the order’s value or weight. Where: Settings > Shipping (SparkLayer).
- **D. Ask us to switch them off** Shipping rules set up during a trial can stay live after a downgrade while the settings are locked. Tell us and we’ll switch SparkLayer shipping off, so your Shopify rates apply.
- **E. Use a shipping app that sets rates by customer tag** Shopify can’t show different rates to different customers on its own. A shipping app that uses customer tags, such as Intuitive Shipping, can. Some apps, including Intuitive Shipping, also need a SparkLayer setting: follow the app’s guide, or tell us which app you use. See [Intuitive Shipping](https://docs.sparklayer.io/help/integrations/customer-experience/intuitive-shipping.md).
- **F. Check the customer’s setup** If one customer sees the wrong rates, check their tags and group. Next: Wrong prices, payment methods or shipping for a customer?
- **G. Select every shipping method the customer can see** A free shipping discount only applies to the shipping methods it names. If you have methods per region, select each one, or make a discount per region. Also check the customer’s group is eligible and the threshold is in their price list’s currency. Where: Pricing > Discounts (SparkLayer). See [Discounts](https://docs.sparklayer.io/help/pricing/discounts.md).
- **H. Check the band order** The first band an order matches sets its cost, so a free band only applies if no band above it also matches. Put the free band first, or make the bands cover separate ranges. Where: Settings > Shipping (SparkLayer). See [Free shipping isn’t applied](https://docs.sparklayer.io/help/ordering/shipping-rules.md#free-shipping-isnt-applied).

**Diagnose: Credit limit or Pay on Account not working?** Check the customer’s credit metafield and group settings.

1. **What’s happening?** Pick the closest match.
   - “Your cart exceeds your available credit limit”: go to question 2
   - Pay on Account doesn’t show at checkout: go to question 3
   - They want to pay part by credit and part by card: go to fix A (One payment method per order)
   - Gift cards don’t work: go to fix B (Gift cards only work at Shopify’s card checkout)
2. **In the customer’s credit metafield, is `balance` what they already owe you?** `balance` is the amount owed, not the credit they have left. Available credit is `credit_limit` minus `balance`. Where to look: Customers > select the customer > Metafields (Shopify admin).
   - Yes: go to question 4
   - No, it’s what they can spend: go to fix C (Set `balance` to what they owe)
3. **Is Pay on Account turned on for the customer’s group?** Payment methods are chosen per customer group. Where to look: Customers > Groups (SparkLayer).
   - Yes: go to fix D (Check the customer’s group)
   - No: go to fix E (Turn on Pay on Account for the group)
4. **Would this order take them over their limit?** For example, with a limit of 250 and a balance of 200, only 50 is available.
   - Yes: go to fix F (The group blocks orders over the limit)
   - No: go to fix G (Everything checks out)

**Fixes**

- **A. One payment method per order** An order can’t be split between Pay on Account and card. The customer can pay the whole order one way.
- **B. Gift cards only work at Shopify’s card checkout** The gift card field is Shopify’s, so it only appears when paying by card. It doesn’t work with Pay on Account, and SparkLayer isn’t a store-credit system.
- **C. Set `balance` to what they owe** To give a customer 250 to spend, use `{"credit_limit":250,"balance":0}`. After a 77.80 order their balance is 77.80, leaving 172.20 available. A balance of 250 means they’ve used it all. Where: Customers > select the customer > Metafields (Shopify admin). See [Credit and net terms](https://docs.sparklayer.io/help/ordering/credit-net-terms-and-invoicing.md).
- **D. Check the customer’s group** If the group has Pay on Account but this customer doesn’t see it, check they’re in that group. Next: Wrong prices, payment methods or shipping for a customer?
- **E. Turn on Pay on Account for the group** Add Pay on Account to the group’s payment methods and save. Then set the customer’s credit limit and terms. Where: Customers > Groups (SparkLayer). See [Payment methods](https://docs.sparklayer.io/help/ordering/payment-methods.md).
- **F. The group blocks orders over the limit** The customer group is set to block checkout when an order would exceed the limit. Raise the customer’s `credit_limit`, record a payment by lowering their `balance`, or change the group’s credit setting to allow it. Where: Customers > Groups (SparkLayer). See [Block orders over the credit limit](https://docs.sparklayer.io/help/customers/customer-groups.md#block-orders-over-the-credit-limit).
- **G. Everything checks out** Your setup looks right, so we'll take it from here. Send us your answers with the customer’s email and their credit metafield value.

**Diagnose: Quote buttons greyed out?** Check who acts next and what each status allows.

1. **Who can’t act on the quote?** Buyers and merchants see different buttons at each stage.
   - The customer: go to question 2
   - Me or a sales agent: go to question 3
2. **Is the quote’s status “Quote requested”?** That’s the status right after a customer asks for a quote.
   - Yes: go to fix A (You review the quote first)
   - No: go to question 4
3. **Does the person’s role allow them to work on quotes?** Sales agents can only do what their role allows. Where to look: Customers > Roles (SparkLayer).
   - Yes: go to question 5
   - No / not sure: go to fix B (Give the role quote permissions)
4. **Is the customer trying to edit the quote?** Whether a customer can edit a quote is set for each status.
   - Yes: go to fix C (Allow editing for that status)
   - No: go to fix D (Everything checks out)
5. **Are your quote statuses turned on?** Quote statuses and what each allows are set in your configuration. Where to look: Settings > Configurations > Quote statuses (SparkLayer).
   - Yes: go to fix D (Everything checks out)
   - No / not sure: go to fix E (Turn on your quote statuses)

**Fixes**

- **A. You review the quote first** When a customer requests a quote, you or a sales agent review it and adjust prices. Confirm & complete stays greyed out for the customer until you move it on. That’s by design. See [Quoting](https://docs.sparklayer.io/help/ordering/quoting.md).
- **B. Give the role quote permissions** Edit the person’s role, tick the quote permissions and save. Where: Customers > Roles (SparkLayer).
- **C. Allow editing for that status** Open Quote statuses, edit the status the quote is in, and allow the customer to edit it. Where: Settings > Configurations > Quote statuses (SparkLayer).
- **D. Everything checks out** Your setup looks right, so we'll take it from here. Send us your answers with the quote number and who’s trying to act on it.
- **E. Turn on your quote statuses** Enable the quote statuses you use, then reload the quote. Where: Settings > Configurations > Quote statuses (SparkLayer).

**Customers see "An unknown error occurred" at checkout**

The message appears at the top right of the browser. On recent versions of SparkLayer's [Core Script](https://docs.sparklayer.io/help/glossary.md#core-script), it ends with a code, such as **SHOPIFY:002**.

**If there's a code**, find it in the table below.

**If there's no code**, the table can't tell you the cause. Try these first:

1. Refresh the page and try again.
2. Empty the cart, add the products again and check out.
3. In your Shopify admin, look in **Orders > Drafts** ([open in the Shopify admin](https://admin.shopify.com/draft_orders)) for an open draft order for that customer. Delete it, then try again.
4. If several customers see the error at the same time, it may be a wider problem: [contact support](https://docs.sparklayer.io/help/support.md) and we'll check.
5. Check your Core Script version at **Storefront > Widgets > Core script version** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/configuration/frontend/core)), or **SparkLayer Wholesale > Storefront > Widgets > Core script version** in the Shopify app. Codes only show on recent versions, so updating it means the next error shows one.

Then check these common causes, with or without a code:

1. Check none of the products in the order have a price of 0.00 in Shopify. SparkLayer relies on the Shopify price being higher than the B2B price to calculate orders correctly. A price of 0.00 causes an error and stops checkout.
2. If you sell in several currencies, check you've set up Shopify Markets, with currencies and shipping methods for each market. See [Shopify Markets and currencies](https://docs.sparklayer.io/help/platforms/shopify/markets-and-currencies.md).
3. If a [sales agent](https://docs.sparklayer.io/help/sales-ordering.md) is placing the order, check the customer's email address is valid. Shopify may reject an invalid email, such as one with a mistyped domain.
4. Ask your developer (or [our support team](https://docs.sparklayer.io/help/support.md)) to check the `siteId` in your [core script](https://docs.sparklayer.io/developers/frontend.md) matches your **Site ID** in [your account](https://docs.sparklayer.io/help/dashboard/account.md#edit-your-account-details). The core script is the code that loads SparkLayer on your store.

If it still happens, [contact support](https://docs.sparklayer.io/help/support.md) with the customer's email address, the time it happened, what was in the cart and a screenshot of the error.

| Error code | What it means |
| --- | --- |
| **SHOPIFY:001** | The customer has a price list in a currency (for example AUD) that isn't enabled in your [Shopify Markets](https://docs.sparklayer.io/help/platforms/shopify/markets-and-currencies.md). In a market with several countries or regions, SparkLayer doesn't support **Show prices to customers in their local currency**: turn it off so B2B customers in that market can place orders. |
| **SHOPIFY:002** | The customer has a price list in a currency (for example AUD), but the shipping country isn't set up in your [Shopify Markets](https://docs.sparklayer.io/help/platforms/shopify/markets-and-currencies.md). |
| **SHOPIFY:003** | There's a problem with product data, such as a variant with no SKU. Try removing the affected product from the order. |
| **SHOPIFY:005** | Shopify's DNS checks are rejecting the order's email address, so it can't check out. Check the email address is valid. |
| **SHOPIFY:006** | The shipping address is in a country that isn't in any of your Shopify Markets. Check every country you ship to belongs to a market. |
| **SHOPIFY:007** | The customer record is missing an email address, shipping phone number or shipping address. All 3 are required for stores using Managed Markets. |
| **PRICING:001** | The customer's group has 2 price lists in different currencies (for example GBP and USD). Change the customer group so it only uses one currency. |

**Customers only see card payment (no Pay by invoice)**

Add **Pay by invoice** (or **Payment on account**) to the customer's group. Customers only see the payment methods their customer group allows, so a group set to **Card at checkout** alone shows card payment (upfront payment) and nothing else.

1. Go to **Customers > Groups** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/customers/groups)), or **SparkLayer Wholesale > Customers > Customer groups** in the Shopify app and click the customer's group.
2. Override **Payment methods** if it's under **Inherited rules**, then tick **Pay by invoice** or **Payment on account**. To stop card payment for the group, untick **Card at checkout**.
3. Click **Save**.

See [Choose which payment methods a customer group can use](https://docs.sparklayer.io/help/ordering/payment-methods.md#choose-which-payment-methods-a-customer-group-can-use).

**Customers can't place orders because their addresses are incomplete**

1. Check every address field is filled in on the customer's record in Shopify.
2. Check the customer has no incomplete addresses saved to their account.

**No shipping methods show at checkout**

1. If you use SparkLayer's built-in shipping, check your shipping methods in **Settings > Shipping** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/configuration/shipping)), or **SparkLayer Wholesale > Settings > Shipping** in the Shopify app: their **Available countries** and **Customer groups**, and their bands. If the customer doesn't match any method, or the order doesn't meet any of a method's bands, no shipping method shows. Look out for bands based on weight. See [Shipping rules](https://docs.sparklayer.io/help/ordering/shipping-rules.md).
2. If you use Shopify's shipping methods, check they include the customer's country. For example, for a customer in the United Kingdom, a shipping method must cover the United Kingdom.
3. If you use Shopify Markets, check you've set up [shipping profiles](https://help.shopify.com/en/manual/shipping/setting-up-and-managing-your-shipping/shipping-profiles) for your destination countries.

Customers see this as "Sorry, no shipping methods are available for your selected address" at the **Shipping Method** step.

**Shipping costs don't match your shipping rules**

[Contact our support team](https://docs.sparklayer.io/help/support.md). With SparkLayer [shipping](https://docs.sparklayer.io/help/ordering/shipping-rules.md), the prices in the Dashboard should always match the prices customers see at checkout.

**Orders don't show in your Shopify orders**

**Shopify only:**

1. Look in your Shopify draft orders, in **Orders > Drafts** ([open in the Shopify admin](https://admin.shopify.com/draft_orders)). Unless the customer paid with Upfront Payment (by card), the order arrives as a draft order by default. To create completed orders instead, turn on **Auto-complete draft orders** in **Integrations > Platform > Shopify order actions** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/configuration/integrations/platform)), or **SparkLayer Wholesale > Integrations > Platform > Shopify order actions** in the Shopify app.
2. Check the order was placed as a B2B customer. You can see this in the order's **Notes** in Shopify.

**Orders show as "Awaiting merchant"**

This is expected: the order is waiting for you. **Awaiting merchant** means the customer has placed the order in SparkLayer, but it isn't a completed order in your store yet. Usually it's a Pay on Account or Pay by Invoice order that's still a draft order. Complete the draft in your store (on Shopify, at **Orders > Drafts** ([open in the Shopify admin](https://admin.shopify.com/draft_orders))), or turn on **Auto-complete draft orders** at **Integrations > Platform > Shopify order actions** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/configuration/integrations/platform)), or **SparkLayer Wholesale > Integrations > Platform > Shopify order actions** in the Shopify app. The customer sees **Awaiting merchant** in [My Account](https://docs.sparklayer.io/help/storefront/interfaces/my-account.md#order-statuses) until then. See [Awaiting merchant](https://docs.sparklayer.io/help/glossary.md#awaiting-merchant) and [Process orders in Shopify](https://docs.sparklayer.io/help/guides/process-orders-in-shopify.md).

## Tax

**Diagnose: Prices or tax looking wrong?** Check your Shopify tax settings against your price lists.

1. **What looks wrong?** Pick the closest match.
   - B2B prices are too high, or tax is charged twice: go to question 2
   - Tax is added to shipping in the B2B checkout: go to fix A (Shopify taxes shipping in some regions)
   - I want B2B prices shown including tax: go to fix B (Tax-inclusive display has three parts)
   - VAT or tax is missing at checkout: go to question 3
2. **Is “Include sales tax in product price and shipping rate” turned on?** It’s under Global settings. It decides whether Shopify treats your prices as including tax, which is common for UK, EU and Australian stores. Where to look: Settings > Taxes and duties (Shopify admin).
   - On: go to question 4
   - Off: go to question 5
3. **Is the customer marked as tax exempt in Shopify?** Reverse charge for VAT-registered EU customers uses Shopify’s customer tax exemption. Where to look: Customers > select the customer > Tax settings (Shopify admin).
   - Yes: go to fix C (That’s why tax isn’t added)
   - No: go to fix D (Check the customer’s address and test their checkout)
4. **Which type of price list does the customer use?** Manual lists are uploaded by CSV or set in the Price editor. Automatic lists apply a percentage to your Shopify prices. Where to look: Pricing > Price lists (SparkLayer).
   - Manual (CSV or Price editor): go to question 5
   - Automatic (a percentage): go to question 6
5. **Are the prices in the price list excluding tax (net)?** All SparkLayer prices are net. Tax is added at checkout. Where to look: Pricing > Price editor (SparkLayer).
   - Yes, net: go to fix E (Your tax setup looks right)
   - No, they include tax: go to fix F (Upload your prices excluding tax)
   - Not sure: go to fix G (Compare one product in the Price editor)
6. **Has the list’s percentage been raised to take the tax out too?** An automatic list based on tax-inclusive Shopify prices needs its percentage adjusted for tax. For example, with 20% VAT and a 10% trade discount, use 25% off. Where to look: Pricing > Price lists (SparkLayer).
   - Yes: go to fix E (Your tax setup looks right)
   - No: go to fix H (Adjust the percentage for tax)

**Fixes**

- **A. Shopify taxes shipping in some regions** SparkLayer uses Shopify’s tax calculation. In Canada, the EU, the UK and the US, Shopify charges tax on shipping whatever its “Charge tax on shipping rates” setting says, so the B2B checkout can show tax on shipping. If that’s a problem, use SparkLayer shipping with your rates entered without tax. See [Tax and shipping](https://docs.sparklayer.io/help/ordering/tax-and-shipping.md).
- **B. Tax-inclusive display has three parts** Buyers see gross prices once three things are in place: Tax-inclusive prices turned on for your store (if you don’t see the setting, ask us), the price lists chosen, and a `display_tax_rate` column in the price CSV, for example 10 for Australian GST. It works on manual price lists only, not automatic ones, so use a manual list for those customers. See [Show tax-inclusive prices](https://docs.sparklayer.io/help/pricing/pricing-display.md#show-tax-inclusive-prices).
- **C. That’s why tax isn’t added** Tax-exempt customers check out without tax. Remove the exemption if they should pay it. Where: Customers > select the customer > Tax settings (Shopify admin).
- **D. Check the customer’s address and test their checkout** Tax follows the customer’s default address and your Shopify tax regions. Check their default address, that you collect tax in that country, and that the products are set to charge tax. Then place a test order as the customer. Where: Settings > Taxes and duties (Shopify admin).
- **E. Your tax setup looks right** The SparkLayer checkout shows net prices with tax on its own line. If “Include sales tax” is on, the Shopify order shows tax-inclusive prices instead. The totals are the same: it’s just shown differently.
- **F. Upload your prices excluding tax** Prices that already include tax get tax added again at checkout, so customers pay it twice. Convert them to net prices and upload the list again. Where: Pricing > Price lists (SparkLayer).
- **G. Compare one product in the Price editor** Pick a product, work out its price without tax, and check it matches the Price editor. If it doesn’t, your list includes tax and needs uploading again as net prices. Where: Pricing > Price editor (SparkLayer).
- **H. Adjust the percentage for tax** Without it, the percentage comes off your tax-inclusive Shopify prices, so B2B prices come out too high and tax is added again at checkout. Where: Pricing > Price lists (SparkLayer). See [Adjust automatic price lists for tax](https://docs.sparklayer.io/help/pricing/managing-pricing.md#tax-inclusive-prices).

Each symptom below has its quick check. The full set-up, with net prices, exemptions and tax apps, is in [Get B2B tax and VAT right](https://docs.sparklayer.io/help/guides/tax-and-vat.md).

**Tax shows as zero**

**Shopify only:**

In Shopify, check the customer isn't tax-exempt (**Manage tax exemptions** on the customer), the product has **Charge tax on this product** ticked, and you collect tax in the customer's country (**Regional settings** in **Settings > Taxes and duties** ([open in the Shopify admin](https://admin.shopify.com/settings/taxes))). See [Get B2B tax and VAT right](https://docs.sparklayer.io/help/guides/tax-and-vat.md#make-tax-exempt-customers-exempt).

**Tax is charged when it shouldn't be**

**Shopify only:**

Make the customer tax-exempt: in Shopify, open them, click **Manage tax exemptions** and untick **Collect tax**. If you use a tax app, exempt them there too: see [Tax is charged although you use a tax app](#tax-is-charged-although-you-use-a-tax-app) and [Make tax-exempt customers exempt](https://docs.sparklayer.io/help/guides/tax-and-vat.md#make-tax-exempt-customers-exempt).

**Tax isn't charged when it should be**

**Shopify only:**

The customer is probably tax-exempt: in Shopify, open them, click **Manage tax exemptions** and tick **Collect tax**. If that's not it, check you collect tax in the country of their shipping address. See [Get B2B tax and VAT right](https://docs.sparklayer.io/help/guides/tax-and-vat.md#if-somethings-not-right).

**Order prices are different from the checkout**

**Shopify only:**

Checkout uses the lower of the SparkLayer price and the Shopify price, including tax. Check that automatic price lists based on tax-inclusive Shopify prices allow for tax, and that the SparkLayer price (in **Pricing > Price editor** in the SparkLayer Dashboard ([open](https://app.sparklayer.io/pricing/editor)), or **SparkLayer Wholesale > Pricing > Price editor** in the Shopify app) is below the Shopify price. See [Make your price lists net](https://docs.sparklayer.io/help/guides/tax-and-vat.md#make-your-price-lists-net) and [Tax-inclusive prices](https://docs.sparklayer.io/help/pricing/managing-pricing.md#tax-inclusive-prices).

**Tax is wrong when shipping to another country**

**Shopify only:**

Check you collect tax in the delivery country: in **Settings > Taxes and duties** ([open in the Shopify admin](https://admin.shopify.com/settings/taxes)), find it under **Regional settings** and check the **Collecting tax** column. See [Get B2B tax and VAT right](https://docs.sparklayer.io/help/guides/tax-and-vat.md).

**Tax or VAT is charged twice**

Your B2B prices include tax, and SparkLayer adds it again at checkout. Upload manual price lists net (excluding tax), and make automatic price lists based on tax-inclusive Shopify prices take the tax out. See [Make your price lists net](https://docs.sparklayer.io/help/guides/tax-and-vat.md#make-your-price-lists-net).

**You need to charge tax on some products but not others**

**Shopify only:**

[Contact our support team](https://docs.sparklayer.io/help/support.md) to turn on line-item tax, then untick **Charge tax on this product** on the products that shouldn't be taxed. See [Handle products with different tax rates](https://docs.sparklayer.io/help/guides/tax-and-vat.md#handle-products-with-different-tax-rates).

**Tax is charged although you use a tax app**

**Shopify only:**

Exempt the customer in your tax app, such as Avalara or TaxJar, as well as in Shopify: tax apps override Shopify's settings, and the two exemptions work independently. See [Make tax-exempt customers exempt](https://docs.sparklayer.io/help/guides/tax-and-vat.md#make-tax-exempt-customers-exempt), and the [Avalara steps](https://docs.sparklayer.io/help/ordering/tax-and-shipping.md#tax-is-charged-but-i-use-a-third-party-tax-app-eg-avalara-taxjar).
