---
title: "Price list CSV import problems"
description: "Fixes for Process Wholesale price list problems: CSV files rejected, rows unmatched, imports that will not start or seem stuck, prices 1,000 times too small, wrong checkout prices, and products missing from a list."
type: troubleshooting
plans: [Professional]
keywords:
  [
    price list import failed,
    CSV import not working,
    unmatched rows,
    price list not applying,
    wrong wholesale price,
    price list products missing,
    Couldn't detect the required columns,
    export incomplete,
  ]
questions:
  - "Why is my price list CSV rejected?"
  - "Why are rows in my price list CSV unmatched?"
  - "Why will my price list import not start?"
  - "Why were my prices imported 1,000 times too small?"
  - "Why is a customer not getting the price list price at checkout?"
  - "Why did products disappear from my price list after saving?"
  - "Why is my price list export shorter than expected?"
last_verified: 2026-11-11
order: 7
---

# Price list CSV import problems

Most Process Wholesale price list import problems come from the file: a price column with an unrecognized header (such as `Variant Price` from a Shopify product export), SKUs that do not match the store, or thousands separators in prices. Problems with the list itself usually come from a customer missing the `B2B` tag or the list's tag, or from saving a list of more than 200 products in the editor. Price lists need the Professional plan. Find your symptom below.

**Quick checks**

1. The store is on the Professional plan.
2. The file has a header row with a price column (`Price` or `Fixed Price`) and a `SKU` or `Handle` column.
3. Prices have no thousands separators: `1299`, not `1,299`.
4. The customer is logged in and has both the `B2B` tag and the price list's tag.
5. The list has 200 products or fewer if you save it from the editor.
6. No other import is running.

## CSV file rejected as soon as it is added

The import window shows **Couldn't detect the required columns. The file needs a price column (e.g. “Fixed Price” or “Price”) and at least one of “SKU” or “Handle”.**

**Confirm it.** Open the file and look at the first row. Process Wholesale accepts these headers, ignoring capitals: `sku`, `skus`, `variant sku` for SKU; `handle`, `url handle`, `product handle`, `slug`, `url handle slug` for Handle; `fixed price`, `price`, `wholesale price`, `wholesale`, `amount` for price.

**Fix it.**

- A Shopify product export has its price in `Variant Price`, which is not accepted. Rename that header to `Price`.
- Make sure the header is in the first row, with no title rows above it.
- If the window shows **Failed to parse the CSV file.**, save the file again as CSV (comma separated) from your spreadsheet program.

The full list is in the [Price list CSV format reference](../reference/price-list-csv-format.md).

## Some price list rows are skipped or unmatched

The preview shows **{count} skipped (missing key or invalid price)**, or the result shows **{count} unmatched**.

**Confirm it.** After the import, select **Download unmatched rows**. The file `unmatched-<name>.csv` lists each row with its line number and reason, for up to 2,000 rows.

**Fix it by reason.**

| Reason                                       | Fix                                                                                         |
| -------------------------------------------- | ------------------------------------------------------------------------------------------- |
| Invalid price                                | Enter a number in the price cell, such as `12.50`.                                          |
| Negative price                               | Enter 0 or a positive price.                                                                |
| SKU matches multiple variants in store       | Give each variant a unique SKU in Shopify admin.                                            |
| Handle has multiple variants — provide a SKU | Add the variant's SKU. A handle alone matches only products with one variant.               |
| No matching SKU or handle in store           | Check the SKU and handle against Shopify admin for typos, renamed SKUs or deleted products. |
| Row is missing both SKU and handle           | Add a SKU or handle, or delete the row.                                                     |

Then upload the complete, corrected file with **Update from CSV**. Upload all rows, not only the fixed ones, because an update replaces the whole list.

If no row matched at all, the import fails with **No rows matched a product by SKU or Handle**. Check that the SKU or Handle column holds your store's values and not, for example, a supplier's item numbers.

## The price list import will not start

The import window shows an error after you select **Import prices** or **Update prices**.

| Message                                                                                          | Cause                                                          | Fix                                                                                                                  |
| ------------------------------------------------------------------------------------------------ | -------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| Couldn't start the import. A store export may already be running — please try again in a minute. | Another import is running in your store                        | Wait a minute and try again. Run one import at a time.                                                               |
| A price list with the tag name "<name>" already exists. Please use a different tag name.         | **Import from CSV** was used with the name of an existing list | Enter a new name, or open the existing list and use **Update from CSV**.                                             |
| Enter a valid price list name (letters and numbers only, no "B2B") before importing.             | The **Name** field is empty or invalid                         | Enter a name with lowercase letters and numbers only.                                                                |
| Imports are limited to 50000 rows.                                                               | The file has more than 50,000 rows                             | Remove rows you do not need. Do not split one list across several files: each **Update from CSV** replaces the list. |
| The CSV has no rows to import.                                                                   | The file has only a header                                     | Add data rows.                                                                                                       |
| Couldn't start the import. Please try again.                                                     | The connection was interrupted                                 | Try again.                                                                                                           |

## The price list import seems stuck

The progress bar stays on **Starting…**, **Reading your product catalog…** or **Publishing prices to checkout…**.

**Confirm it.** The import runs in the background, and the window says it "may take a minute for large catalogs". Stores with many products take longer.

**Fix it.**

- Wait at least 20 minutes. An import that was held up continues on its own within about 20 minutes of its last progress. Reading a very large catalog takes longer.
- You cannot close the import window while it runs, but you can leave the page. The import keeps running. Open the list later from the **Price Lists** tab to check its products.
- If progress has not moved after 20 minutes, reload the app and open the **Price Lists** tab. If a new list with your name appears with no products, open it and use **Update from CSV** with the same file. Otherwise, start the import again.

## Prices imported 1,000 times too small

A product meant to cost 1,299 shows a list price of 1.299 or similar.

**Cause.** Process Wholesale treats a comma on its own as a decimal separator, so `1,299` is read as 1.299. A value with both a comma and a dot is read correctly: `1,299.99` and `1.299,99` are both 1299.99.

> **Important:** A list price of 1.299 instead of 1,299 makes that product almost free for customers on the list. Fix the file and update the list right away.

**Fix it.** Remove thousands separators from the price column (format the column as a plain number with no separators), then upload the complete file with **Update from CSV**. Check a few prices in the editor or in an export afterward.

## The wrong price at checkout

**A customer pays the retail price.**

- The customer is not logged in, or is missing the `B2B` tag or the price list's tag. Open the customer in Shopify admin and check both tags. The list tag must be spelled exactly like the price list name. Pending customers tagged `B2B_Registeration` (spelled this way) pay retail until you approve them.
- The variant is not on the list. Open the list and check that the product and every variant has a price.
- The store is not on the Professional plan.

**A customer pays a different list price than expected.**

- The customer has more than one price-list tag. The **Priority** order on the **Price Lists** tab does not decide which list checkout uses, and Quick Buy can show a different list price than checkout charges. Remove all but one price-list tag from the customer.
- The list was updated from a file with a wrong price. Export the list and check the `Price` column.
- A deleted price list had the same name. When a list is deleted, its prices stay on the products, and a new list with the same name brings them back for products the new list does not price. Give new lists a new name, or add those products to the new list with the right price.

**The customer pays in another currency.** Checkout converts the list price at Shopify's exchange rate for that checkout. The Product Wholesale block and Quick Buy show the list amount without converting it, so the storefront and checkout amounts differ for these customers.

For discounts in general, see [Wholesale discount not applying at checkout](discount-not-applying.md).

## The price list does not apply to a customer

**Confirm it.** In Shopify admin, open the customer and check the tags. Both `B2B` and the list's name, for example `wholesale`, must be there.

**Fix it.** Add the list's tag with **Manage discount tags** on the Process Wholesale **Customers** page, with **Bulk assign discount**, or by hand in Shopify admin. See [How to assign discounts to wholesale customers](../discounts/assign-discounts-to-customers.md). If the customer is still pending, approve them first. Make sure the customer logs in before checking out.

## Products missing from a price list after saving in the editor

The **Products** count dropped after you edited a list and selected **Save**, or after an update.

**Cause.** The editor loads at most 200 products, and at most 200 variants of each product. Saving from the editor removes the products and variants it did not load. **Update from CSV** also removes every product that is not matched in the file.

**Fix it.**

1. Rebuild the full list in a CSV file, from your own records or an earlier export.
2. Open the list and select **Update from CSV**, then upload the complete file.
3. From then on, change lists with more than 200 products only with **Export to CSV** and **Update from CSV**, never with **Save** in the editor.

## Price list export file shorter than expected

**Causes.**

- Variants that were deleted from your store are left out of the export.
- An export that is interrupted can download as a shorter file without an error message.

**Confirm it.** Open the file and check that the number of rows matches the number of variants you expect on the list. An interrupted export can end on a complete row, so count the rows rather than looking at the last one.

**Fix it.** Select **Export to CSV** again. If the file is still short and no products were deleted, try again later.

> **Important:** Do not upload a partial export with **Update from CSV**. Every product missing from the file is removed from the list.

## Related articles

- [How to import, update and export a price list with CSV](../discounts/price-list-csv-import.md)
- [Price list CSV format reference](../reference/price-list-csv-format.md)
- [How to create a wholesale price list with fixed prices](../discounts/price-lists.md)
- [Wholesale discount not applying at checkout](discount-not-applying.md)
