Price list check
Check price lists for missing SKU columns, invalid numeric prices, duplicate SKUs, and row count issues.
Your file is read in your browser. It is never uploaded.
Every default rule on this page
These run as soon as you drop a file in. Nothing is uploaded - the whole check happens in this browser tab. Edit or remove any of them in the rule editor above before you run it.
| Column | What it checks | What fails | Reported as |
|---|---|---|---|
| SKU | must have a value in every row | the cell is empty, or the column is missing entirely | Error |
| SKU | every value appears once, ignoring capitalisation | the same value appears in two or more rows | Error |
| Price | a number between 0.01 and 1000000 | the cell is text, blank, or a number outside that range | Error |
| Currency | one of USD, EUR or GBP, ignoring capitalisation | any other value, including a blank cell | Warning |
| Effective Date | a date between 2000-01-01 and 2099-12-31 | the cell is not a date, or falls outside that window | Error |
| the whole sheet | at least 1 data row | the sheet has fewer than that | Warning |
An error is a row you almost certainly need to fix before sending the file on. A warning is a row worth looking at, most often a value that is legitimate in your process but unusual in this one - change the rule to match how your team works rather than editing the data to satisfy it.
Product code column not named SKU
The price list has a product code column but it may be called 'ItemNumber', 'Product Code', or 'PartNumber'. Without a stable SKU column, pricing rows cannot be matched to products. The header must be renamed to 'SKU' before checking.
Price column stored as text
Prices like '99.99' may be stored as text because of currency symbols, commas, or trailing spaces. Numeric range rules need clean numbers to validate minimum and maximum prices. Remove any non-numeric characters from the Price column before upload.
Duplicate SKU rows
The same SKU appears more than once, often when a list includes historical prices or combined regions. Duplicate SKUs make current pricing ambiguous and can cause incorrect totals. Keep only one active price row per SKU.
Currency values differ within one sheet
One row uses USD, another EUR, and a third has a blank currency cell. Allowed value checks catch labels outside the expected set, which keeps pricing comparisons consistent. Map all currency codes to a single allowed list.
How to fix
- Rename product code header variations to exactly 'SKU' before upload.
- Remove currency symbols, commas, and spaces from the Price column and confirm each value is numeric.
- Remove duplicate SKU rows or keep only the current active price row for each SKU.
- Map all currency values to the same set of allowed labels such as USD, EUR, and GBP.
- Delete summary rows, blank rows, and notes rows from the data area so only detail rows remain.
FAQ
What price list columns are checked by default?
The default rules check SKU, Price, Currency and Effective Date. The rules match on exact header text, so check that those headers exist and use consistent names. Product Name is not checked by default - a missing name is usually something to review rather than a reason to reject the file.
Why is a price stored as text flagged?
Text values cannot be compared by numeric range rules. Remove currency symbols, commas, and spaces so only numeric price values remain. This allows the checker to confirm that every price falls within the expected range.
Can I use different currencies in the same price list?
The default allowed values include a small set of currency codes such as USD, EUR, and GBP. If your list uses other codes, update the allowed values before running the check. Mixing currencies can make comparisons misleading.
What does a duplicate SKU mean?
A duplicate SKU means the same product appears more than once. Duplicate rows make it unclear which price is current and should be removed or consolidated. Keeping one active row per SKU avoids pricing errors.
Should header notes or summary rows be included?
No. Notes, summary rows, and blank rows are treated as data rows by row-level checks. They create false failures and make row counts misleading. Keep only product detail rows in the sheet before checking.