Fix Amazon error 90009: "The file's header row is missing or invalid"
Exact error message
- The file's header row is missing or invalid.
Amazon reports error 90009 when it can't read the top of your inventory file: the template row (TemplateType=…) or the row of column labels was deleted, a column name was changed, or the file was saved as comma-separated CSV instead of tab-delimited text. Drop the file below to see which one it is.
Wording and rules verified on
Fixed in your browser – your file never leaves your device.
Files over 50 rows: 1 credit each ($0.75–$1 depending on pack), no subscription · See prices
Several files? Select or drop them together to fix them all at once.
Sample files with typical import errors, loaded in your browser. Fixing and downloading them is free.
Why it happens
An Amazon category template (flat file) starts with three rows that Amazon reads before any product: row 1 holds TemplateType=…, the template version and its signature, row 2 the column labels (Seller SKU, Product ID…), and row 3 the attribute names Amazon actually imports (item_sku, external_product_id…). The template itself says: "The top 3 rows are for Amazon use only. Do not modify or delete the top 3 rows."
Error 90009 is fatal: nothing in the file is processed, and the processing report doesn't point to a product, because the problem is the file's header, not a row.
- Rows 1 and 2 were deleted to "clean up" the sheet, or the file was built by another tool that writes only the attribute row.
- A column name in row 3 was renamed, mistyped or changed in case, or the same name appears twice.
- The sheet was saved as CSV (comma-separated). Amazon's inventory files are tab-delimited text (.txt) or the Excel template itself.
- The template is for another category or an old version, so its rows don't match what Seller Central expects.
How to fix it manually
Excel (the Amazon template)
- Check that row 1 starts with TemplateType= and that rows 2 and 3 are there unchanged.
- If they're missing, download a fresh template for the same category in Seller Central and copy rows 1–3 from it above your data. The version and signature in row 1 can't be typed in by hand.
- Compare your row 3 with the fresh template's row 3: every attribute name must match exactly, with no duplicates.
- Upload the template as it is, or save it as "Text (Tab delimited) (*.txt)", not as CSV.
Google Sheets
- Paste rows 1–3 from a fresh template above your data.
- File → Download → Tab-separated values (.tsv), then rename the file to .txt before uploading.
Before and after
feed_product_type item_sku item_name external_product_id external_product_id_type standard_price quantity
kitchen MUG-RED Enamel mug, red 5901234123457 EAN 12.90 40TemplateType=fptcustom Version=2025.0401 TemplateSignature=SE9NRQ==
Product Type Seller SKU Product Name Product ID Product ID Type Standard Price Quantity
feed_product_type item_sku item_name external_product_id external_product_id_type standard_price quantity
kitchen MUG-RED Enamel mug, red 5901234123457 EAN 12.90 40The file starts with the attribute row, so Amazon finds no template row. The fixed file has rows 1 and 2 copied from a fresh template of the same category.
Fix it automatically
- Recognises an Amazon flat file even when the template rows are gone, by finding the attribute row (item_sku, external_product_id…).
- Reports a missing template row, a missing label row, renamed or duplicated column names and comma separators.
- Writes the file back as tab-delimited text, keeping rows 1–3 as Amazon expects them.
- Doesn't invent the version and signature in row 1. If they're missing, it tells you to copy them from a fresh template.
- Also checks product IDs (UPC, EAN, GTIN check digits) and parent/child rows, the usual next errors once the header is fixed.
Checking and the preview are free. Downloads are free up to 50 rows; a larger file costs 1 credit.
Choose a fileThe file is read and repaired inside your browser. Nothing is uploaded: only the row count and the platform are ever sent to us, so supplier prices and customer data stay private.