WooCommerce Wrong Prices After Import (Fix & Prevent CSV Errors)

You ran a CSV import to update a few products — and now prices across your store look wrong. Some dropped to a fraction of their value, some show as empty, and a handful of sale prices are now higher than the regular price.

Wrong prices after an import are not a rare glitch. They are the predictable result of how WooCommerce’s CSV importer writes data: it overwrites product fields directly, with no preview and almost no validation. A single mis-formatted column can rewrite hundreds of products in seconds.

This guide explains exactly why it happens, how to fix prices that are already wrong, and how to make sure your next bulk update never reaches customers with bad data.

The Problem: Prices Changed and You Didn’t Intend Them To

The symptom is always the same shape: you intended to change one thing — stock levels, a seasonal discount, prices for one category — and the import touched far more than you expected. Because WooCommerce applies the whole CSV in one pass, the damage is already live by the time you notice it.

Typical signs your import caused incorrect price updates:

  • Prices dropped sharply across many products at once (e.g. $129.00 became $1.29)
  • Sale prices replaced regular prices, so everything looks permanently discounted
  • Prices now show as zero or are completely blank on the storefront
  • Some products updated correctly while others were skipped, leaving the catalog inconsistent
  • Variations have different prices than their parent product, or lost their prices entirely
  • Tax now calculates on the wrong base because the entered price was inclusive instead of exclusive
Why this is urgent: every minute a wrong price is live is a minute customers can check out at that price. WooCommerce honors the price shown at the time of purchase, so a $1.29 mistake on a $129 product is a real order you may have to fulfil or cancel.

Why It Happens: How WooCommerce Reads Price Data

WooCommerce stores prices in three fields: _regular_price, _sale_price, and the derived _price that the storefront actually displays. When you import a CSV, the importer maps your columns onto these fields and writes them verbatim. There is no “does this number make sense?” step. If the value parses, it is saved.

Most wrong-price incidents trace back to one of these root causes:

1. Decimal and thousands separators don’t match your store

WooCommerce parses prices using the decimal separator configured in WooCommerce → Settings → General. If your store expects a dot (19.99) but your CSV uses a European comma (19,99), the importer can read it as 1999 or strip everything after the comma. The reverse — a thousands separator like 1,200 — can be read as 1.2 or 1200 depending on locale. This single mismatch is the most common cause of catalog-wide price corruption.

2. Currency symbols or spaces in the price field

A price column should contain a bare number. Values like $19.99, €19.99, or 19.99 USD contain non-numeric characters. Depending on the importer, these get truncated, zeroed, or rejected — and a rejected price can leave the field blank.

3. Sale price logic is invalid

WooCommerce only applies a sale price when it is lower than the regular price. If your CSV sets sale_price equal to or higher than regular_price, WooCommerce silently ignores the sale, or the storefront shows confusing crossed-out pricing. If you import a sale_price but leave regular_price blank, the product can end up with no valid display price at all.

4. Empty cells overwrite real data

This is the quiet killer. Some importers treat a blank cell as “set this field to empty,” not “leave it alone.” If your CSV has a regular_price column but some rows are blank, those products can have their prices wiped. Always check whether your import tool skips empty values or writes them.

5. Spreadsheet software silently changed your data

Opening a CSV in Excel and saving it again can corrupt it before WooCommerce ever sees it. Excel strips leading zeros from SKUs (00123123), converts long numbers to scientific notation (1.23E+12), and reformats decimals to match your operating-system locale. A SKU that no longer matches won’t update the right product — or will create a duplicate.

6. Tax settings change how the number is interpreted

Under WooCommerce → Settings → Tax, the “Prices entered with tax” option decides whether your imported number is treated as tax-inclusive or tax-exclusive. Import a list of ex-tax prices into a store configured for inclusive pricing and every price will be off by your tax rate.

The common thread: WooCommerce trusts your CSV completely. It has no preview, no sanity check on the size of a change, and no record of what the value was before. Whatever the file says, the catalog becomes.

Common Mistakes That Cause Wrong Prices

Almost every wrong-price import comes from a small number of avoidable habits:

  • Editing the CSV in Excel and letting it reformat decimals, SKUs, and numbers
  • Starting from an old export so stale prices overwrite current, correct ones
  • Including a price column you didn’t mean to update, so every mapped row is rewritten
  • Mismatching the decimal separator between the file and the store settings
  • Leaving currency symbols in the price field
  • Mapping the wrong column during import (e.g. mapping cost price into regular_price)
  • Importing parent products without updating variations, so variable products show stale or missing prices
  • Running the full import without testing on staging first

A correct vs. broken price column

The same product, formatted two ways:

Will break
sku,regular_price,sale_price
TSHIRT-01,"$1,299.00",
TSHIRT-02,29,99,
TSHIRT-03,,19.99
Correct
sku,regular_price,sale_price
TSHIRT-01,1299.00,
TSHIRT-02,29.99,
TSHIRT-03,24.99,19.99

Row 1 has a currency symbol and a thousands separator. Row 2 uses a comma decimal. Row 3 sets a sale price with no regular price. All three are valid-looking in a spreadsheet and all three produce wrong prices on import.

Manual Fixes: How to Correct Wrong Prices Now

If prices are already wrong on your live store, here are your options ordered from safest to most technical. Choose based on how many products were affected and what data you still have.

1. Restore a recent backup

If you have a backup from before the import (UpdraftPlus, your host’s daily snapshot, a staging copy), restoring it reverts all product data including prices. The downside: it also reverts orders, customers, and any other change made since the backup, so it’s only safe right after the import.

2. Re-import a clean CSV

If you still have a correct export from before the bad import, fix the formatting issues and re-import it as the source of truth. This only works if you are certain that earlier file holds the right prices for every affected product.

3. Bulk edit in the Products screen

For a handful of products, go to Products, select the affected items, and use Bulk actions → Edit to set prices. Workable for dozens of products; impractical and error-prone for hundreds.

4. WP-CLI or the REST API

If you logged the previous values, you can script a restore with wp wc product update or a batch PUT to /wp-json/wc/v3/products. Powerful, but most stores never captured the “before” values, which is exactly the problem.

Step-by-step: identify what actually changed

Before fixing anything, find the blast radius:

  1. Go to Products and sort by price, lowest first — zeroed and decimal-corrupted prices float to the top.
  2. Add the Date modified column (or sort by it) to isolate everything the import touched.
  3. Export the affected products to CSV so you have a record of the current (wrong) state.
  4. Cross-reference against your last known-good price list to build a correction file.
  5. Fix prices using one of the methods above, then re-check the storefront and a test checkout.
Editing the database directly? Changing wp_postmeta in phpMyAdmin can work, but WooCommerce caches the displayed _price separately from _regular_price and _sale_price. Update the wrong one and the storefront keeps showing the bad value. Avoid raw SQL unless you understand WooCommerce’s price meta and have a backup.

Recommended Workflow: Bulk Updates That Never Break Prices

Fixing wrong prices is reactive. The real win is a workflow where bad prices can’t reach the live store in the first place. Whether you use the built-in importer or a dedicated tool, follow this sequence:

  1. Start from a fresh export. Always build your update file from a current export, never an old one, so you’re editing today’s real prices.
  2. Edit in a CSV-safe tool. Use Google Sheets with columns formatted as plain text, or a dedicated CSV editor — not Excel’s default mode that mangles numbers and SKUs.
  3. Match your store’s number format. Confirm the decimal separator in your file matches WooCommerce → Settings → General, and strip all currency symbols.
  4. Only include columns you intend to change. If you’re updating stock, don’t ship a price column at all — you can’t corrupt a field you didn’t send.
  5. Compare against current data. Diff the new values against what’s live and look for anything suspicious — prices near zero, drops over 50%, or sale prices above regular.
  6. Test on staging first. Run the import on a staging copy and check the storefront and a test checkout before touching production.
  7. Import in batches. Smaller batches limit the blast radius if something is wrong and make partial failures easy to spot.
  8. Keep the pre-import export. That file is your rollback. Without it, “undo” means manual reconstruction.

The single highest-leverage step is the diff: seeing what will change before it changes turns a catalog-wide accident into a caught typo.

How WooStockSync Prevents Price Errors

WooStockSync adds the safety layer WooCommerce’s importer is missing. Instead of writing your CSV straight to the catalog, it compares every value against current store data and shows you a full preview before anything goes live.

Before you apply an update, WooStockSync flags risky changes such as:

  • Prices set to zero or left empty
  • Extreme drops or increases that suggest a decimal or formatting error
  • Sale prices that are equal to or higher than the regular price
  • Rows whose SKU doesn’t match an existing product (so nothing is silently skipped)
  • Currency symbols and separator mismatches detected during validation

You see the exact before-and-after for every product, approve the changes that look right, and stop the ones that don’t — all before a single price changes on your store.

And if an update was already applied, WooStockSync keeps the original values so you can roll back to the exact prior state in one click — no backup restore, no manual rebuild.

Frequently Asked Questions

Why did my WooCommerce prices change after import?

Because the CSV importer overwrites price fields directly without validation. The most common triggers are a decimal separator that doesn’t match your store settings, currency symbols in the price column, blank cells that wipe existing values, or starting from an outdated export.

Why did my prices drop to a fraction of their value?

This is almost always a decimal-separator mismatch. If your store expects a dot but the CSV used a comma (or vice versa), a value like 1,299.00 gets read as 1.299 or 1299, producing prices that are off by orders of magnitude.

Can I undo a WooCommerce price import?

Yes, if you have the data to revert to. Options include restoring a backup, re-importing a known-good CSV, or using a tool that records the previous values and offers one-click rollback. The native importer keeps no “before” state, so plan your rollback in advance.

Why are my sale prices showing as the regular price?

WooCommerce only applies a sale price when it’s lower than the regular price. If the import set the sale price equal to or above the regular price, or wrote the sale value into the regular_price field, the discount won’t display correctly.

Why are some products correct and others wrong?

Partial failures usually mean SKU mismatches. If Excel stripped leading zeros or converted SKUs to scientific notation, those rows no longer match a product and get skipped or duplicated, while correctly-formatted rows update normally.

How do I prevent wrong prices in future imports?

Build files from a fresh export, edit in a CSV-safe tool, match your store’s decimal format, include only the columns you mean to change, and preview the diff before applying. Testing on staging and keeping the pre-import export as a rollback eliminates almost all risk.

Fix WooCommerce price errors before they affect your revenue

Preview and validate every price update before it goes live — and roll back instantly if something slips through.

Start Free Trial

90-day free trial. No credit card required.