Home

Awesome

GoodBudget to YNAB Importer


Please note: This project is not actively maintained, it may no longer work and may depend on out of date dependencies.


What is this?

YNAB (You Need a Budget) and GoodBudget are personal finance apps.

I've used GoodBudget for a few years but wanted to give YNAB a try. In order to give it a good go I wanted to import my data over from GoodBudget.

GoodBudget allows users to export transactions from an account to a CSV file. This has the columns:

YNAB has a CSV upload feature but this is designed to get transactions from an export from your bank account but it doesn't know how to link up the GoodBudget Envelope to the YNAB category. No one wants to re-categorise 1000+ transactions!

Fortunately, YNAB has an API which lets users upload transactions. This project takes your GoodBudget CSV files, reformats them a bit, then pushes them up to your YNAB account!

What does it do?

What can't it do?

How do I use it?

Setting up on your computer

  1. Install Node on your computer
  2. Clone this repo.
  3. Run npm install to install dependencies.
  4. Follow the below instructions to run the importer.

Getting data from GoodBudget

The importer has been designed to import one account at a time. Lets download a CSV for one of your accounts.

  1. Login to GoodBudget.
  2. Click the "Accounts" tab.
  3. Select one of your accounts.
  4. Click the "Export CSV" button.

Preparing YNAB

Getting your token

  1. Go to the "Developer Settings" page under your YNAB "My Account" page.
  2. Click "New Token", confirm your password and click "Generate".
  3. Take a note of the token that shows at the top of the page - this is the only time you will get this so you don't want to lose it!

Get your account an budget IDs

On the sidebar, click on the account you want to import. Now lets grab the budget and account ID from the URL. This has the format: https://app.youneedabudget.com/[budget ID]/accounts/[account ID]

Setting up categories

Head back into your budget and setup your YNAB categories with the same name as your GoodBudget envelopes. We need to do this before running an import because the importer needs to provide the category_id to the YNAB API, so must request a list of your categories in order to match your transactions. Don't worry about the category group as these are ignored.

Finding missing categories:

It's frustrating to run an import to find that you missed out on a category, especially if you have a lot of deleted categories (but don't worry if you do forget one, the importer will just not set the category and include the original envelope name in the memo!).

Theres a seperate tool you can run to check if you've got all the missing categories.

Run this with: node bin/find_missing_categories.js [GoodBudget input file] [YNAB Access Token] [YNAB budget ID]

Running the importer

Run the importer with the following command:

node bin/import.js [GoodBudget input file] [YNAB Access Token] [YNAB budget ID] [YNAB account ID] [optional - date format] [optional - rerun index]

GoodBudget lets you set your preferred date format in the settings. This defaults to the US format of MM/DD/YYYY but if you're like me and use DD/MM/YYYY in GoodBudget then you'll need to provide this as an argument.

This is a bit of a weird option that you probably don't need to use. This relates to the import_id we provide to YNAB. While experimenting with the importer I wanted to delete my transactions but even after deleting the transactions YNAB still recognised the transactions as being duplicates. If you ever do want to re-import transactions on purpose then just set this to a different value to any previous exports and the import_ids will all change!