Amazon orders CSV format has changed as of 2.19.26

Just did a data pull from Amazon. CSV output has changed significantly - filename is different, column names are different, no longer sorted by date desc. So when trying to import the new file format, I get message: “The importer does not recognize the uploaded file. Check that you are uploading a supported file type.”

Any plans to update the community CSV importer? I thought about trying to manually modify the new format to match the old format, but not sure what the dependencies are in the CSV import tool - what column names does it expect, how does it create matching offsets, etc.

1 Like

I had the same experience. Amazing what you don’t miss until it’s gone. Please advise any plans to update or perhaps a work around. Thank you.

I dug into this a bit more. These are the changes I identified:

  1. Columns are now sorted alpha ascending. Prior order was not.
  2. 4 column names have changed, Total Owed, Quantity, Payment Instrument Type, Gift Recipient Contact Details
  3. In older format, all values in the CSV file were wrapped in quotes. In the new file, no quotes.

I modified the new file - changing the column order, renaming the 4 changed column names to their original values, and added the wrapping quotes around every value. Still get same error message.

Same problem here. 2.20.26

Can’t upload Amazon transactions anymore. I tried adapting today’s Amazon download to the columns and names that worked in previous downloads by

  1. sorting by transaction date
  2. matching column order
  3. pasting in the transactions

No luck!

Apparently this Amazon import process is no longer supported by the original creator. Anyone with the skills to look at the code and make necessary updates?

I am following this topic, and chiming in to say the Amazon CSV importer is a very helpful tool. I don’t have the skills to work on it.

Ah, this is a bummer!

I have just used Simple CSV Import Workflow (for Unsupported Data Sources) instead for this but it is much more work than previously. But it works so hopefully it helps out some people for now.

How did you go about calculating the offsetting entry per order so that you’re not double counting your amazon spending?

The offset feature confused me a bit so I am not sure if my workflow is typical. But this is what I’m going to do moving forward:

  1. I autocat my Amazon transactions with “Amazon to be imported” so that I’m still getting an idea of my spend even if I have uncategorized items within Amazon.
  2. When I want to do an import, I filter by “To be imported” to see which ones haven’t been imported yet and get the date of the earliest one.
  3. I get my amazon transactions and delete the rows I’ve already imported via the date I got in the last step. Optional, but I also add a column that gets added to the Note column in transactions that says “Imported by SimpleCSV on {insert date here}” in case something goes wrong I can filter for those.
  4. I change all transactions with the “To be imported” category to a different category “Has been imported” and that category is a hidden/ignored category from rollups.

In other words, I’m not offsetting them — I just manually ignore them after importing.

I also use this: https://chromewebstore.google.com/detail/amazon-order-history-repo/mgkilgclilajckgnedgjgnfdokkgnibi?hl=en to get my csv which makes it a bit easier to delete rows since there are just fewer to sift through / delete. But you can use the normal amazon flow too.

1 Like

Thanks for the tips. I spent about 4 hours today getting Simple CSV working - had some weird permissions blockage with Google OAuth. But once I got that sorted worked great. I like your workflow. The only minor issue I could see is that you have no way of checking if your amazon charges from your credit card match the imported transactions. For example, if you were charged twice, or were missing a refund. But I was always off by about 10% on this check anyway - it hardly ever lined up - and was a pain to drill down on - so no big loss there.

So in detail, here’s what I did:

  1. Got the Simple CSV import installed
  2. Created a new sheet called “Amazon”
  3. Imported the new Amazon file called “Order History.csv”, starting at row 2 on the Amazon sheet
  4. Added 5 new columns off to the right, with these array formulas in row 3:
    Account =ARRAYFORMULA(IF(A3:A<>“”, “Chase Amazon Visa”,“”))
    Account # =ARRAYFORMULA(IF(A3:A<>“”, “xxxx8534”,“”))
    Institution =ARRAYFORMULA(IF(A3:A<>“”, “Chase”,“”))
    Date =ARRAYFORMULA(IF(A3:A<>“”, TEXT(DATEVALUE(LEFT(Q3:Q, 10)), “mm/dd/yyyy”), “”))
    Metadata =ARRAYFORMULA(IF(A3:A<>“”, NOW(), “”)) (I found that Transactions tab didn’t like the Amazon date values, so I had to trim them)

Now, my workflow is:

  1. Request a data dump from Amazon
  2. Import the Order History.csv file into a new sheet
  3. sort and filter, and delete everything older than my last import
  4. Copy the remaining contents to the Amazon sheet, pasting at A3
  5. Run the import
  6. Go back to the Amazon sheet, and get a total on all the transactions, enter an offsetting transaction for those I just imported.

Now that it’s set up, doesn’t take much longer to run than the old process. And I only do it about every 2 months.

1 Like

Glad to hear that you’ve been able to get the Simple CSV template to work with Amazon, @daveahlers.

As I mentioned to you in the DM thread, over the past several years, we struggled to maintain the Amazon data mappings because Amazon kept changing the file format and the data quality kept getting worse and worse.

We know that granularly tracking Amazon transactions is valuable to many users. To protect their pricing and sales information, Amazon deliberately limits and makes this data stream challenging for customers. I hope we are able to solve for this in a future product update with a robust and well-integrated solution that is fully supported.

Until then, the AI tools have come so far that vibe coding an effective and highly-customized stopgap may well be within reach for many users and community builders.

Thanks for your patience.

Hi all!

I got Claude Code to fix my downloaded Amazon csv such that it could be imported.

What Amazon changed

  1. 4 column names renamed:
    • Quantity → Original Quantity
    • Total Owed → Total Amount
    • Payment Instrument Type → Payment Method Type
    • Gift Recipient Contact Details → Gift Recipient Contact
  2. Columns reordered from a specific order to alphabetical
  3. CSV quoting removed — values used to all be wrapped in quotes, now they’re not
  4. No longer sorted by date descending
  5. New column added — Item Serial Number (didn’t exist before)

Save this as fix_amazon_csv.py in the same folder as your Amazon data export, then run python3 fix_amazon_csv.py. It writes a new file and leaves the original
untouched.

You can try this out and hopefully it works for y’all (at your own risk):

#!/usr/bin/env python3
"""Fix Amazon Order History CSV to match the old format expected by Tiller."""

import csv
import sys
from pathlib import Path

INPUT = Path("Your Amazon Orders/Order History.csv")
OUTPUT = Path("Your Amazon Orders/Order History (fixed).csv")

# Column renames: new name -> old name
RENAMES = {
    "Total Amount": "Total Owed",
    "Original Quantity": "Quantity",
    "Payment Method Type": "Payment Instrument Type",
    "Gift Recipient Contact": "Gift Recipient Contact Details",
}

# Old column order (what Tiller expects)
OLD_ORDER = [
    "Website",
    "Order ID",
    "Order Date",
    "Purchase Order Number",
    "Currency",
    "Unit Price",
    "Unit Price Tax",
    "Shipping Charge",
    "Total Discounts",
    "Total Owed",
    "Shipment Item Subtotal",
    "Shipment Item Subtotal Tax",
    "ASIN",
    "Product Condition",
    "Quantity",
    "Payment Instrument Type",
    "Order Status",
    "Shipment Status",
    "Ship Date",
    "Shipping Option",
    "Shipping Address",
    "Billing Address",
    "Carrier Name & Tracking Number",
    "Product Name",
    "Gift Message",
    "Gift Sender Name",
    "Gift Recipient Contact Details",
]

with open(INPUT, newline="", encoding="utf-8") as f:
    reader = csv.DictReader(f)
    rows = list(reader)

# Apply renames
for row in rows:
    for new_name, old_name in RENAMES.items():
        if new_name in row:
            row[old_name] = row.pop(new_name)

# Sort by Order Date descending
rows.sort(key=lambda r: r.get("Order Date", ""), reverse=True)

# Write with old column order, all values quoted
with open(OUTPUT, "w", newline="", encoding="utf-8") as f:
    writer = csv.DictWriter(
        f,
        fieldnames=OLD_ORDER,
        quoting=csv.QUOTE_ALL,
        extrasaction="ignore",
    )
    writer.writeheader()
    writer.writerows(rows)

print(f"Wrote {len(rows)} rows to {OUTPUT}")

The fixed file will be at Your Amazon Orders/Order History (fixed).csv — import that instead of the original.

3 Likes

This worked great. Thanks @organized_money!

1 Like

Randy (one of the original amazon csv developers), suggested I code my own solution to allow me to keep up with Amazon file changes, so I did. Rather than running a separate python script, I just wrote a new importer that allows you to directly grab the Amazon Order History CSV, has a simple way to update expected column headers when Amazon changes their format again, and allows you to specify values for the Account, Account ID, and Account # fields. It also won’t import transactions prior to a certain number of months specified by you (which I needed since my transactions go back to 1999). It takes about 20 seconds to run for me, with 5,200 Amazon items, and 13,000 tiller transactions. I run this about once per month, so I expect to be maintaining it for the foreseeable future. Let me know of any issues or bugs. Oh, and run it on a COPY of your tiller sheet first, just to make sure it’s what you want.

More details here: Amazon Orders CSV Import Read Me - Google Docs

I started to work with Returns as well, but stopped, because:

  1. The returns CSV file does not have the product name in it - so no way to know what item was returned
  2. My credit card has already inserted a credit in Tiller, so the only real value to processing Amazon returns is to know what was returned - which is not available! Grrrr.

1 Like

Hi Dave - Thanks for your efforts to create a solution for this issue. When I open the Apps Script from the Extensions tab, I don’t see a “code.gs” on the left side. Do I create one named “code.gs”? Any assistance would be appreciated. Thanks - David

Hi David - I don’t know that much about the AppScript coding environment myself. although I used to be a software engineer many years ago, this is all new to me. I will say that I think the file name is important. So do create a new code.gs. But you will find AI to probably be a better guide than I as far as question and answers on general appscript stuff. Happy to answer questions on the solution I created.

You rock, @daveahlers!

I’m working on an classification engine to beef up what you’ve done: take my previous entries and use those to guide the classification of the new stuff. If it works I’ll share.

1 Like

Dave, I am happy to report that I was able to download my Amazon transactions using your Tiller Tool script.

Thank you so much!!!

1 Like

Hi David - I looked into this. You can create a new empty file and paste the contents of code.gs in. I also improved the documentation a bit and moved the project to github for better transparency and version control. GitHub - daveinlosbarriles/TillerAmazonOrdersCSVImport · GitHub .

Glad to hear it! I did make a few minor changes today:

  1. Moved all the code and documentation to here: GitHub - daveinlosbarriles/TillerAmazonOrdersCSVImport · GitHub
  2. At the end of the import, I now filter to just show the new blank category transactions.
  3. Updated the help link in the popup to point to the new location