gitviola / ynab-bank-importer

💰 Pull transactions from your bank and import them to YNAB automatically.
https://ynab.com/referral/?ref=C-_IP8eD8dWYfEec&utm_source=customer_referral
MIT License
134 stars 20 forks source link

YNAB has an early-access API #10

Closed wizonesolutions closed 6 years ago

wizonesolutions commented 6 years ago

https://github.com/ynab/ynab-sdk-js. There is a link there to apply for early access.

philipp-paland commented 6 years ago

Some work is already been done here: https://github.com/schurig/ynab-bank-importer/pull/9

gitviola commented 6 years ago

Hey @wizonesolutions, thanks for the ticket. Glad to see the interest. Yes, as @therealppa already mentioned in #9 you can find a working version with the official YNAB api.

The only issue why I don't merge it yet is that YNAB doesn't offer a way to create internal transactions. I have multiple bank accounts where I often transfer money among them. What I did for now is flagging the transaction orange in case the IBAN is one of your other accounts. This way I at least know and can delete one of them and fix it after the import.

When I asked them the last time they said that this is on their list, however it needs some internal changes on their end that require some thinking (looks like they have to redesign parts of their backend for that).

Already use #9 on my raspberry pi. Currently without docker because it has some network issues that shouldn't be related to this project but I haven't figured out yet how to fix them.

gitviola commented 6 years ago

What do both of you think about me merging it into master and just highlight that inside the README? That selenium thing is very hacky and can break very easily. So even if internal transactions don't work yet it's still better I guess?

wizonesolutions commented 6 years ago

Hmm. Do internal transactions work with Selenium? Overall, #9 is going to be the way to go, but maybe once YNAB releases the API publicly. I don't have early access, so merging it would break it for me.

Unrelated here, but I am planning to try and add Fidor Bank AG support (they have a REST API). I will probably wait for the API, though.

gitviola commented 6 years ago

Oh how cool, I used to have an account at Fidor Bank. Did you apply to get the early access? I got mine within a few days. You could justify it by saying that you want to add support for a new bank to this repository.

Yes internal transactions should work with the Selenium version. However, I haven't used the selenium version in a while. I thought that the support for internal transactions will be done by now.

What I could also do is keep an other branch for the selenium version just so others can still use it. The API-Version works very reliable and the only issues I had so far are coming from the banks directly (eg. N26 changes the IDs and values of transactions sometimes which of course makes the script import a duplicate - but it's easy to see them - same amount, same payee so you delete the other one. Still working on a better way but it's really hard because the problem is on their side and not mine)

wizonesolutions commented 6 years ago

Yeah, I applied for the early access. I think I will get it, just have to wait.

The Selenium version is still working, in any case. I just used it.

It'll be nice if the trend of user-driven direct import continues. Web scraping and APIs have come so far that there's no reason Yodlee/Finicity/Plaid/etc. should be the only options...and especially in Europe, where the bank support isn't that good yet. I hope that changes soon with PSD2...because it certainly is more convenient when someone else worries about it for me 😁

And I still have no idea how I would deal with BankID in Norway, which requires an HOTP code from a device. I guess one would just have to forward that request to the user and then input the code once received. Every time. Or take it as an env var. Not too bad, I guess, since this kind of tool is run on-demand, so it's not as big of an issue where it needs to run unattended.

gitviola commented 6 years ago

I also hope that the PSD2 will unify all those different APIs. I was researching on this topic in January but it seems it was just the date when banks need to start thinking about it. After writing to ING-DiBa they said that they don't offer it yet and that it will take some time

philipp-paland commented 6 years ago

If you remove the Selenium parts I would have to use an older version because the API is still in restricted early access, most people are not able to get an API token.

wizonesolutions commented 6 years ago

So my imports often time out...is there a way to increase the timeout in config? I have two N26 accounts set up in the config, so maybe it's applying the timeout to processing both of them, rather than 15s to each one?

gitviola commented 6 years ago

@wizonesolutions with the api or selenium version? For the API version for sure I can add this to the config to the dumpers and make it configurable by account. Do you mind creating an issue for that? If you want to give it a try you can also create a PR for that in case you’re comfortable with ruby. If not, no worries, I will do it as soon I find a minute.

For the selenium version I wouldn’t want to change too much since the api will probably be the official way to go soon.

wizonesolutions commented 6 years ago

Seems like for my Fidor idea, I won't do it since they charge monthly for API access. Maybe I'll try to do screen scraping. Anyway, the original question for this issue was answered :)

gitviola commented 6 years ago

Merged the PR to master :)