Code Monkey home page Code Monkey logo

ynabgoingdutch's Introduction

YNAB Going Dutch

A CSV bank statement converter, created for Dutch banks. Completely written in javascript. Select csv files using the Browse button and it will download the converted file, super quick and easy! (Firefox will give you a prompt first. Chrome will ask you for permission if multiple files are downloaded)

The system will split unique account numbers in different output files.

Everything is done locally. Your information never leaves your own computer.

Automated synchronisation

YNABGoingDutch supports automated synchronisation with your YNAB account. Note that this functionality is still under construction!

To use this feature you need to do the following:

  • Create a Personal Access Token (PAT). Click here to get instructions on obtaining PATs. Make sure you also store your PAT on your device or in the cloud.
  • Open the side panel of YNABGoingDutch by clicking on the cog in the upper right corner.
  • Paste the PAT in the text field in the settings panel.
  • Click on "Test connection".

You should now see "Success!" in the side panel. This means that you have successfully connected YNABGoingDutch with your YNAB account! Your PAT will be stored in your local browser, and it will be reloaded the next time you visit the website.

To stop automated synchronization, please uncheck the "Sync with YNAB" box in the settings panel. You can also clear your PAT, which will remove it completely from the browser. You will need to enter your PAT again the next time you want to use this feature.

We do not store any information on servers! The PAT is stored locally in your browser. We only send your transaction data to YNAB when you have turned on auto sync.

Supported Banks

YNAB Going Dutch will automatically recognize your bank, and convert it correctly!

Currently the banks that are supported are:

  • Rabobank
  • ING bank
  • ASN bank
  • SNS bank
  • KNAB
  • bunq (both English and Dutch localization)
  • Triodos Bank

For ABN AMRO support, please visit YNABGoingDutch ABN AMRO edition.

If you want support for your bank, please create a github issue, or contact me some other way. You are also welcome to fork the repo and add support yourself! Please create a pull request if you want your code to be added.

Bugs and Problems

If you have any problems or issues while using YNABGoingDutch, please create an issue on this repository.

Just let me use it!

The latest version of the master branch can be used on GitHub Pages.

Docker

A Dockerfile and docker-compose.yml is added, which can be used to run the project locally and set the PAT as environment variable. Copy .env-example to .env and add your PAT and run:

docker compose up --build

Now the application will be available in your browser on http://localhost:8080

ynabgoingdutch's People

Contributors

danielhaitink avatar dennisbeverloo avatar jaspervp avatar lwestenberg avatar magiclegend avatar marcel-dmedia avatar pehrgit avatar thinkpadnl avatar timonv avatar tinedel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

ynabgoingdutch's Issues

CSV Structure for SNS Bank

CSV from SNS Bank does not have headers. The format is like this:

02-03-2019,NL01SNSB0123456789,,,,,,EUR,123.45,EUR,-1.23,02-03-2019,02-03-2019,1234,BEA,12345678,'1abcde/123456','Description',4
02-03-2019,NL01SNSB0123456789,,,,,,EUR,123.45,EUR,1.23,02-03-2019,02-03-2019,1234,BEA,12345678,'1abcde/123456','Description',4

Missing Headers:
alt text

ING Savings - "Bank could not be recognized"

Downloaded CSV file from ING savings account.
After dropping file
Schermafbeelding 2022-05-08 170946

CSV file itself:
Schermafbeelding 2022-05-08 171151
When opened in Excel no problem. All data is there.

CSV file for regular ING account worked just fine.

Add support for ING Bank

Example CSV export from ING:

"Datum","Naam / Omschrijving","Rekening","Tegenrekening","Code","Af Bij","Bedrag (EUR)","MutatieSoort","Mededelingen"
"20180503","Hr A.B. de Vries","NL01INGB0123456789","NL01RABO0123456789","GT","Bij","15,00","Online bankieren","Naam: Hr A.B. de Vries Omschrijving: Bier IBAN: NL01RABO0123456789"
"20180502","MHM HOTELS","NL01INGB0123456789","NL13ANBA0123456789","OV","Bij","15,00","Overschrijving","Naam: MHM HOTELS Omschrijving: Ontbijt IBAN: NL13ANBA0123456789"
"20180502","M.C. Schilder","NL01INGB0123456789","NL44BUNQ0123456789","GT","Af","35,00","Online bankieren","Naam: M.C. Schilder Omschrijving: Doe er iets leuks mee IBAN: NL44BUNQ0123456789"

Data does not arrive complete at YNAB after sync

When i synced an export .csv and upload it, the data does not arrive after synchronisation. At least, not always. Very strange. On some accounts it works. I used four bankaccounts in YNAB and the issue is skipping trough the accounts. last week it was a different account that did not sync.

I expect all transactions to arrive in the selected budget + account.

  • OS: MacOs 11.6.5
  • Browser Firefox & Safari

I tried to change API key, but this did not help. I get the green light for sync complete. But it is just not there.

Publish core conversion code as npm package

Is your feature request related to a problem? Please describe.

As a developer, I want to be able to fully automate my import pipeline, so that I don’t need to manually drag and drop too much.

Describe the solution you'd like

If the core conversion code were published as a standalone package, I would be able to easily use it directly in a custom workflow.

For instance, on my macOS machine I can attach a script to the Downloads folder that automatically invokes the conversion for csv files that match the expected filenames and do some further processing such as giving the files account names that correspond to the names I use in YNAB.

Additional context

Thanks for your work and releasing this! 🙏

Include IBAN in payee

Hi,

My transactions often include those from one of my bank accounts to another (checking to savings, for instance). The payee in all cases is the same, my name, but the IBAN is different. It would be useful if the tool put the name and the IBAN in the payee field so that YNAB can automatically recognize which bank account to which to set the transfer.

Thanks a bunch for creating this useful tool :)

Edit: I'm talking about Rabobank in this case, but I suspect it would be applicable to other banks as well.

Update YNAB account selection in dialog

Current selection and issue
The selection pop-up currently shows all YNAB accounts, even if they are closed (archived), tracking or loan accounts.
They are shown in the order of JSON response, but otherwise not sorted based on any status or category. This means that the list is cluttered, especially if you have many closed YNAB accounts.

Describe the solution you'd like
While I believe all YNAB accounts should be visible, their status should be used to streamline the account selection. The JSON response for each account includes two variables that can help with this: "on_budget" and "closed"
Then using <optgroup>-tags, the <select>-element can be easily stylized.

HTML example

<div id="selection-popup">
<p>Which account for NL99YNAB0001234567</p>
<select>
 <!—For YNAB accounts that have "on_budget": true, "closed": false,-->
<optgroup label="On Budget Accounts"> 
	<option value="0">Regular</option>
	<option value="1">Saving</option>
	<option value="2">Emergency Fund</option>
	<option value="3">Family Account</option>
</optgroup>
 <!—For YNAB accounts that have "on_budget": false, "closed": false,-->
<optgroup label="Tracking Accounts">
	<option value="4">Stocks</option>
	<option value="5">OV Chipcard</option>
</optgroup>
<!—For YNAB accounts that have "closed": true,-->
<optgroup label="Closed Accounts">
	<option value="6">Student Loan</option>
	<option value="7">DNB account</option>
</optgroup>
</select>
	<button class="button-border">cancel</button>
	<button class="button-border">accept</button>
</div>

Improve SNS/ASN payee info

With PIN transactions, SNS and ASN do not note the payee in the appropriate place (col 3). It does note it in the "memo" box (col 17). See issue #10

ING transaction date vs processed date

ING has a discrepancy between actual transaction dates and the date the transaction is processed. For example, if you paid for something on january 1st, it might not get processed till january 3rd due to business days. Card payments have a transaction date in "Mededelingen" under the subfield "Pasvolgnr". However, I can't quite seem to find an entrypoint to scoop out the transaction date from "Mededelingen". I've been trying something like this on line 260:

date: new INGTransactionDate(new Field(["Mededelingen"], ['Pasvolgnr'], ['Pasvolgnr'])) || new Field(["Datum"]),

And feed it to INGTransactionDate() to process it (I simply need to extract the date with some regexp magic and return it). But it doesn't return a string (variable "text" in the getLine method in Field) as one would expect. Got any clues how to proceed?

Rabo CSV files not "accepted" or picked up

When trying to transform a RABO CSV file, it does not work.
YNAB going dutch does not give a change file.
Not with one account, or with multiple accounts.
Using Edge on Macbook. Both up to date.

Store relation of account ID and YNAB account

Make it possible to store the relation between an account ID and the YNAB account, such that it can sync without the dialogs.
Should probably still have a confirmation dialog.

Also needs a UI in which the relations can be deleted and/or disabled.

Exporting would also be great. Related to #47

Add support for English BUNQ

Please state the bank name and the type of account you would like to be supported.
It is important to add an anonymized CSV file from the requested bank to your issue. You can add this file in a .zip.

Hi!

My Bunq is in English; so my exports are in English as well. The filled in JSON:

  "bunq-en": {
    "bankName": "BUNQ-EN",
    "header": [
      "Date",
      "Interest Date",
      "Amount",
      "Account",
      "Counterparty",
      "Name",
      "Description"
    ],
    "account": [
      "Account"
    ],
    "date": [
      "Date"
    ],
    "dateFormat": "DD/MM/YYYY",
    "payee": [
      "Name",
      "Counterparty"
    ],
    "category": [],
    "memo": [
      "Description"
    ],
    "outflow": [
      "Amount"
    ],
    "inflow": [
      "Amount"
    ],
    "positiveIndicator": null,
    "negativeIndicator": "-"
  },

Edited English export:
anon-bunq-export.zip

Because of the possibility of conflicts between Dutch and English bunq exports, I have not attempted at making a PR for this. You know best how possible conflicts could be handled.

Thanks!

Improve Errors and Information panels

Improve the communication of the software with the user. Should give the user more information about errors, especially the ones with the api connection. As of now, those are mainly shown in the console log.

Rabobank creditcard support

It would be nice if compatibility for Rabo credit cards was added at some point in the future, currently the CSV files are not recognized.

Example CSV structure:

Creditcard Nummer,Munt,Productnaam,Creditcard Regel1,Creditcard Regel2,Transactie Referentie,Datum,Bedrag,Tegenrekening IBAN/BBAN,Omschrijving,Oorspr bedrag,Oorspr munt,Koers
1234,EUR,RaboCard,FIRST LAST,,2019-08-230000003,2019-08-23,-5.99,NL00RABO0123456789,amazon.nl LUX,,,
1234,EUR,RaboCard,FIRST LAST,,2019-08-230000002,2019-08-23,+20.00,NL00RABO0123456789,INCASSO - VORIG OVERZICHT,,,
1234,EUR,RaboCard,FIRST LAST,,2019-08-20SH00019,2019-08-20,-41.67,NL00RABO0123456789,PAYPAL *EXAMPLE LTD 35558566123 GBR,,,

Replace notie

Notie should be replaced by a custom notification, which:

  • Stacks messages (for errors e.g.)
  • Can dismiss messages
  • Has colors and classes for message types (error, warning, success, info)

Refactor YNABConnection

Include the api into the YNABConnection class, such that the api is not open for everyone to use.

Track api calls

Track the number of API calls. Can only make 100 per hour. Create a counter and display a message when the counter reached 100.

Add more settings for synchronization

Add more settings like:

  • Add transaction with or without additional text in memo (ATM this is YGD)
  • Add transaction cleared or uncleared (ATM this is uncleared)
  • Add transaction approved or not (ATM this is approved)

Change name

Give a new name to the repo which corresponds more with the functionality

Add support for KBC (Belgium)

Please state the bank name and the type of account you would like to be supported.
--> Checkings account for KBC (Belgium)

It is important to add an anonymized CSV file from the requested bank to your issue. You can add this file in a .zip.

KBC_csv.zip

Date output broken (bunq)

Describe the bug
On all bunq statements, the date field is corrupted and unusable when imported to YNAB. I initially considered the issue to be with the "recent" CSV changes of bunq with their new interest payments — the issue also persists with CSV files from 2018, long before the introduction

To Reproduce
Steps to reproduce the behavior:

  1. Import recent bunq statement
  2. Download CSV
  3. Open downloaded CSV
  4. Starting after the definitions (line 1), all transactions have a non-standard date formatting.

Expected behavior
Output transaction date to YYYY-MM-DD, instead output date is grarbled:

"Date","Payee","Category","Memo","Outflow","Inflow"
"20-1--3-26","NYTimesNYTimes","","NYTimesNYTimes 800-698-4637, US","2.00","0"`

Input:

"Date","Interest Date","Amount","Account","Counterparty","Name","Description"
"2021-03-26","2021-04-01","-2,00","NL98BUNQ2206754703","","NYTimesNYTimes","NYTimesNYTimes 800-698-4637, US"

Console
If applicable, add the console log to help explain your problem.

Desktop (please complete the following information):

  • OS: MacOS 11.3.1
  • Browser: Safari
  • Version: 14.1

Additional context
Issue not present with Rabobank statement.

Current ASN Bank csv format not recognised

Describe the bug
When trying to convert a downloaded csv file from ASB Bank Internet banking I get the error message 'Bank could not be recognised!'.

To Reproduce
Steps to reproduce the behavior:

  1. Go to https://www.asnbank.nl
  2. Login, click on bank account
  3. Choose 'Transacties downloaden'
  4. Select a time periode
  5. Choose 'bestandsformaat' value 'CSV' or 'CSV2004'
  6. Press the button 'Downloaden'
  7. Clone this project and open Index.html in the browser
  8. Drag the downloaded file into the box
  9. Get the error message 'Bank could not be recognised!'

Expected behavior
I gather after dragging and dropping the csv file I would get a prompt for a download of a converted file that is able to be imported into YouNeedABudget.

Desktop (please complete the following information):

  • OS: MacOSx BigSur 11.5.2
  • Browser Brave, Safari
  • Version Version 1.29.79 Chromium: 93.0.4577.63 (Official Build) (x86_64), Version 15.0 (16612.1.29.41.4, 16612)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.