Sign up for early access for MySQL for Developers, a video course I'm working on.

Importing Transactions Into Mint

April 11, 2013

It's true, I love Mint.

Update: Not anymore, I don't. I love YNAB.

There was a time, though, where I dropped out, not really wanting to check my accounts because I was in college and had no money. Now that I'm an adult (and have no money), I regularly check up on my accounts and monitor my transactions.

Like an adult!

I obsessively tag, categorize, and budget. I go into Mint every day or two to clean up the auto-categorizing and add some tags. The biggest pain I've run into is that you can't import transactions. Which is a HUGE pain. You can't get historical data beyond what Mint can already fetch. I'm not the only one with the problem.

How To Import a CSV Into Mint

It must be said up front: this is a total hack. Not in an illegal "hacking" way, more like in a coat-hanger-holding-up-your-bumper kind of way.

Step 1: Get Your CSV

A lot of banks and credit card providers only have historical data in PDF. If you have hundreds of transactions, you're straight outta luck already. Or so it seems. (Skip this step if you already have your data in CSV format.)

You need to convert that data to CSV format. There may be converters out there, but the only way you are really going to get good data is by having a human do it. I wasn't about to type in 250 transactions by hand, but I needed a human to do it. Enter: oDesk.

oDesk is a marketplace where you can find freelance workers to complete tasks for you. It's micro-outsourcing. And it's amazing for administrivia like this. Below is my post on oDesk.

Look carefully. "Applicants: 156." 156 people applied for my job! I set the price at $25.00 and ended up paying $13.33. What I received back was an excel file that matched my PDF.

Note: Obviously remove all personal identification from your PDFs. Be smart.

Step 2: Format Your Data

To get into Mint the right way, you need at least 3 pieces of information.

  1. Date
  2. Title
  3. Amount

Make sure your date is formatted in Excel as MM/DD/YY, because that's how Mint likes it. You can optionally add categories in your CSV, but I would suggest you just do that once all the transactions are imported. Now you're all set up, let's get to importing.

Step 3: Keyboard and Mouse Recorder

Here's where we start to get hacky. You're going to need to download Keyboard and Mouse Recorder 5.3. (Windows users, JitBit's Macro Recorder looks pretty good, but I haven't used it.) Since Mint doesn't allow use to import, we are going to have to use the web UI to do it.

Step 4: Record

What we're doing is automating the keyboard and mouse to import the transactions for you. Check out the video, this is what we're aiming for:

Pure, automated goodness. As you can see, the keyboard recording goes in a loop and steps through all my transactions. You can just sit back and watch it work, or leave it alone for an hour or so. You have to be careful that you record your actions in a loopable manner. Here are the steps I took.

  1. Load Mint, log in, go to transactions.
  2. Load the CSV in Excel.
  3. Select the cell that has the first date in it.

The Recording

  1. Press ctrl+c to copy the date.
  2. Click on the icon in the dock for your browser to switch to the Mint website.
  3. Click "add transaction"
  4. Select the date and press ctrl+v to paste your date in.
  5. Click on the icon for excel in the dock, switches back to excel.
  6. Use the keyboard to move the cursor to the next column (the description) and press ctrl+c.
  7. Click on your browser icon
  8. Click in the description box
  9. Ctrl+v to paste in your description.
  10. Click on the excel icon.
  11. Arrow over to the next cell (the price)
  12. Click on the browser icon
  13. Select the amount
  14. Ctrl+v to paste it in.
  15. (Optional) Type "UNCATEGORIZED" into the category box.
  16. Press "I'm done"
  17. Switch back to excel.
  18. Important: Use the keyboard to go down one row, and over 2 columns. You should see the cursor on the date of the second transaction.

Now, if you read through the steps and jump from step 18 to 1, you'll notice that it loops perfectly. The important thing is that you end the recording exactly where you started, except on the next transaction.

It's likely that you'll need some practice before you get it right, but once you do, it's a godsend. It will loop through hundreds of transactions while you sit back and sip your tea. It's not a perfect solution, but it's the best we can do with what Mint has given us, unfortunately.

I'm happy to answer any questions you may have, I'll do my best to help.

Join my newsletter

I'll send you emails. Not too many. Anytime I post a new article, or make a new video, or do something else I think you might like. No spam, obviously.

Thanks for reading! My name is Aaron and I'm a Developer Educator at PlanetScale — a serverless MySQL database company.

My main project focus is Hammerstone, where we build components for your Laravel and Rails applications. My business partner and I do a podcast where we talk about building a software company.

I do another podcast about web frameworks called Framework Friends.

If you ever have any questions or want to chat, I'm always on Twitter
Copyright 2013 - 2023, Aaron Francis.