Zero or negative CSV price and stock: find and fix
Some rows in a product CSV have a price of 0 or below, or a stock quantity of 0 or below. A zero price can mean a free product or a missing value. A negative price is almost never intended. A negative stock number can mean an oversold item, a bad export, or a typo. If these rows are uploaded unchecked, a product may appear free, show a nonsense price, or show wrong availability.
Why it happens. A price was blank in the source system, and the export filled it with 0. A minus sign was typed by mistake, or a discount was entered as a negative price instead of in a separate column. Stock was exported after returns or adjustments and went below zero. A formula returned 0 or a negative result after a column was moved or deleted. Numbers were pasted as text, so they look right but do not sort or filter as numbers.
Find them by hand in a spreadsheet. 1. Save a copy of the file first. Work only on the copy. 2. Turn on filters for the header row. 3. Open the filter on the price column and choose a number filter: "less than or equal to" 0. Note how many rows remain and copy their row numbers or SKUs into a separate sheet. 4. Clear that filter and repeat on the stock column. Treat "less than 0" as suspect. Treat "equal to 0" as a question to check, because out of stock may be correct. 5. To mark rows without filtering, add a helper column with a formula such as =IF(AND(ISNUMBER(C2),C2>0),"ok","check") for price. Use the same idea for stock. Fill it down the whole column. 6. To find text-formatted numbers, add another helper column with =ISNUMBER(C2). Any FALSE means the cell is text and can hide from the filters above. 7. Sort by the helper column so all "check" rows sit together, then review them one by one.
Adjust the column letter and the stock rule to match your file. The formulas are examples; adapt them to your spreadsheet program. Do these steps yourself and read the results with your own eyes.
Fix them. Missing price: look up the real price in your source record and enter it. Do not guess or copy a neighbouring row. Negative price from a typo: remove the minus sign only after confirming the intended value. Discount stored as negative: move it to the column your template uses for sale prices, and put the normal price back. Genuinely free item: keep 0 only if you truly intend it, and note that in your worksheet. Negative stock: replace it with the real counted quantity, or with 0 if the item is sold out and your store does not allow backorders. Zero stock: leave it if the item is really out of stock. Text numbers: convert them to real numbers, then rerun the filters.
Write every change (row, old value, new value, reason) in a correction log so you can undo or explain it later.
Recheck. 1. Rerun the price filter (≤ 0) and the stock filter (< 0). The result should be empty, or contain only rows you deliberately kept and logged. 2. Rerun the ISNUMBER helper column. No FALSE values should remain. 3. Compare the row count with your original copy. It should match unless you removed rows on purpose. 4. Delete the helper columns, save as CSV, close the file, and reopen it to confirm the values are unchanged. 5. Spot-check five or ten rows against your source record.
A free CSV check is also available on this site. In the first 20 data rows it flags prices of zero or below (a negative price is reported as not a plain number). It does not check stock. Check stock and the remaining rows yourself with the steps above. It does not replace the manual checks, so keep your correction log and recheck the file before you upload.
Check your CSV on heloft.com (abre em uma nova aba)
De onde vêm os números
- HQ CEO chain draft, 26 September 2026 (cycle 2af7ba22), accepted by a separate quality agent; the helper formulas were not run in a spreadsheet
- Free CSV check behaviour (heloft.com/m01): a price of zero or below is flagged in the first 20 data rows; stock is not checked