Collects your bank transaction details and exports the data to a CSV file
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Bank Me

Collects your bank transaction details and exports the data to a CSV file or Google sheet along with the transaction category (Food, Entertainment, e.t.c).

Why Bank Me?

  1. Good for budgeting by using past spending patterns to budget for the future
  2. Up to 24 months of data in the same spreadsheet for easy access
  3. Look at categories you spend a lot and work on cutting or spending more
  4. It's DATA!!!


  1. Plaid
  2. Google Cloud Project for service account
  3. Google Sheet
  4. Firebase
  5. Service host like Heroku


For this project to work in its entirety, you need a plaid account which is free and a service account from Google Cloud to create a headless user that can access your Google Sheet.

  1. Create a .env file from the .env-sample file (or add the env to Config Var sections of host services)
  2. Add the plaid keys to the .env file
  3. You can choose to use an online datastore, I used Firebase in this project for data persistence or save data locally (see StorageService under services).
  4. Create a google cloud project (It's free), enable the Drive API from API & Services.
  5. Create a JSON service account credential at least editor access, save it to config/service_account.json in the project directory for dev or on host for production

Get it up and running

  1. Run npm install in both server and root directories
  2. To run the project, a simple npm run run will run the server and "frontend".
  3. The first time you link a bank account, the access key will be stored locally (see BankingService).

Export Transactions - How it works

A new sheet is created for each month, if the sheet for the month already exists, the transactions are just appended on the newest row. You can run the export transactions multiple times and it would not override existing tx on the sheet (good for if you add custom stuff).

There's a general sheet that has all the months dumped in it, in the future there'll probable be options to export to different file types like CSV.

Development server

Run ng serve for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.


Run ng build to build the project. The build artifacts will be stored in the dist/ directory. Use the --prod flag for a production build.


  • Export bank statement to CSV
  • View account balance from UI
  • View and Filter transactions by date range
  • Filter transactions by type


  • Add visual representation of tx
  • Beautify the Google sheet (maybe, I mean who cares?!)
  • Actual business name for tx names (crap's ugly)


  • Bitcoin - 16xLHT2K3aQgxBFEAFXyb9ji5HsoZG76d7
  • Ether - 0x75ac2D75F68C90Ca5667d73ed214925a68fE3f53
  • Litecoin - LXAKso9VAmfB8jvZb5d3k86vY6hHFFV1Qe

Further help

To get more help on the Angular CLI use ng help or go check out the Angular CLI README.