actual icon indicating copy to clipboard operation
actual copied to clipboard

Common way to enable future bank syncing tools

Open tjfinlinson opened this issue 1 year ago • 25 comments

Verified feature request does not already exist?

  • [X] I have searched and found no existing issue

💻

  • [ ] Would you like to implement this feature?

Pitch: what problem are you trying to solve?

With Nordigen Bank sync coming into Actual, we need a way to have some common places in place for adding additional bank syncing providers/tools in order to support more financial institutions in different countries.

Discussed providers are PLAID, SIMPLEFIN

https://discord.com/channels/937901803608096828/1077664629557301258

Describe your ideal solution to this problem

Ideally I think it would allow for different providers to be used for different accounts so we would need to have a method for storing that type of configuration as well as well as some UI for selecting the provider before adding in KEYS/SECRETS from that provider.

Teaching and learning

No response

tjfinlinson avatar Mar 10 '23 06:03 tjfinlinson

+1 to this. I also think we should be able to configure the keys without having to update the server config (with a UI similar to GitHub’s secrets UI where you can add, update, and remove the secrets but can’t read them).

j-f1 avatar Mar 10 '23 12:03 j-f1

Perhaps we could pursue progressive integration?

  1. Separate docker / application that calls the API.
  2. Integrated sync engine that is configured on the backend.
  3. Front end UI integration.

For Simplefin it looks like someone got 1) working but I haven't tested.

https://github.com/lancepick/actual-budget-sync https://github.com/lancepick/actual-simplefin-sync

latetedemelon avatar Mar 13 '23 04:03 latetedemelon

Perhaps we could pursue progressive integration?

  1. Separate docker / application that calls the API.
  2. Integrated sync engine that is configured on the backend.
  3. Front end UI integration.

For Simplefin it looks like someone got 1) working but I haven't tested.

https://github.com/lancepick/actual-budget-sync https://github.com/lancepick/actual-simplefin-sync

I never tested that either, but he made it to work with the closed source version of actual, I don't know how much work it might be to take what he already did and get it working with the open source version.

Sadly, I don't really have much knowledge or skill in the dev side of things.

tjfinlinson avatar Mar 14 '23 16:03 tjfinlinson

I would love to team up with someone though and try and help do something.

tjfinlinson avatar Mar 14 '23 17:03 tjfinlinson

I think a good approach here would be to refactor the code for the existing Nordigen setup (ideally as little as possible) so that it’s just one of an arbitrary number of syncing providers. Then a separate PR can build on that foundation to actually actually add support for SimpleFin.

j-f1 avatar Mar 14 '23 17:03 j-f1

Hey I would be able to work on this feature! I wont have time until next week though. I am not too familiar with the actual server code but I think I can figure it out. The code from the simplefin sync repo is pretty straight forward. I think I can get a prototype working fairly quickly.

babsher avatar Apr 14 '23 16:04 babsher

@babsher

That would be amazing, I don't have really any dev experience, but could help with testing. I have Simple-Fin credentials and can always share an opinion if needed. haha.

tjfinlinson avatar Apr 14 '23 19:04 tjfinlinson

Hey @babsher I was told to reach out to you regarding bank sync. I plan on restarting my Plaid integration work, and it sounds like we should collaborate on best path forward for multiple bank syncing.

culpeppers avatar Apr 14 '23 21:04 culpeppers

@culpeppers Sounds great to me! I was looking at the Plaid code and the existing sync. Seems like it could use a bit of refactoring like was mentioned above. I am still not familar with the codebase so I might not be able to give the best suggestions but I am alright JavaScript dev so I can code if there is plan. I am red_hook on the discord server if you want to start chatting there.

babsher avatar Apr 14 '23 23:04 babsher

Another open banking provider which would be nice to sync from, because it has better coverage in the Nordics and other parts of Europe than Nordigen, is Aiia: https://www.aiia.eu/.

FeralFlora avatar Apr 20 '23 14:04 FeralFlora

So my current plan is to implement Simple Fin and open a PR for that. The problem I have doing a larger change this what the original ticket proposes is that I am not very familiar with the code base right now so my ability to design and implement such a large change is limited right now. After that I may consider adding other syncing services and refactoring the existing ones.

babsher avatar Apr 21 '23 20:04 babsher

I've uploaded the sync I've been trying to get to work below. Feel free to bash / borrow / steal.

https://github.com/latetedemelon/simplefin-actual

Based off of the project I found here:

https://github.com/lancepick/actual-simplefin-sync

latetedemelon avatar Apr 22 '23 14:04 latetedemelon

Maybe it is possible to add support for syncing with the API provided by the bank directly. An EU regulation introduced a few years ago requires all banks to support a standardized API (this is the one for Germany). There is even a python wrapper viable. You have to get a Product-ID to use it, and as far as I can tell, it is only intended for commercial applications, but I tried to register and maybe it will work.

This way, a third party has access to the private data of actual users. The higher difficulty in setting this up would probably hinder less technical users from using this way to syncing their transactions, but it for anyone who has the required knowledge to set this up, I think it would be a nice addition.

rasmuslos avatar Apr 22 '23 17:04 rasmuslos

That might work OK for Europe (or use the Nordigen integration) but this would support North American uses who don’t have that standardization and access.

latetedemelon avatar Apr 22 '23 23:04 latetedemelon

A standardised way for developers to implement a syncing integration would support both ways. Also, my request for a productID was approved, so it isn't really hard to get one

rasmuslos avatar Apr 25 '23 16:04 rasmuslos

Plaid approves of use of the API for personal use if this is anything to go off of.

https://stackoverflow.com/a/49868230

The bank I use (PNC) dosnt have its own API for personal use but it dose work via Plaid. It's also very easy to get development access for plaid as well. I put in "for personal use" into the reason for requesting access.

LakesideMiners avatar Apr 28 '23 12:04 LakesideMiners

:sparkles: Thanks for sharing your idea! :sparkles:

This repository is now using lodash style issue management for enhancements. This means enhancement issues will now be closed instead of leaving them open. This doesn’t mean we don’t accept feature requests, though! We will consider implementing ones that receive many upvotes, and we welcome contributions for any feature requests marked as needing votes (just post a comment first so we can help you make a successful contribution).

The enhancement backlog can be found here: https://github.com/actualbudget/actual/issues?q=is%3Aissue+label%3A%22needs+votes%22+sort%3Areactions-%2B1-desc

Don’t forget to upvote the top comment with 👍!

github-actions[bot] avatar May 01 '23 19:05 github-actions[bot]

Has anyone done any work on a standard way to implement syncing? Just curious. If someone is doing something have they created a branch or PR anywhere?

tjfinlinson avatar May 19 '23 16:05 tjfinlinson

I will be open to work on this if anyone want to team up doing a poc.

r1cebank avatar May 23 '23 19:05 r1cebank

Some work happening here

https://github.com/actualbudget/actual/issues/898

tjfinlinson avatar Aug 31 '23 15:08 tjfinlinson

mx.com is another provider with a Data Access open finance API platform. It looks like MX uses a Connect Widget to do all the initial linking of accounts, but then reading the data would require their Data Recipient API which is compliant with the FDX (Financial Data Exchange) standard.

daveneeley avatar Oct 08 '23 06:10 daveneeley

Just adding this link to a chat on discord so we can keep things linked together.

https://discord.com/channels/937901803608096828/1171096337111064626

tjfinlinson avatar Nov 10 '23 17:11 tjfinlinson

Stumbled upon Basiq for Australia and New Zealand customers. Is this something that could be integrated into Actual? It costs 50 cents per month but I don't mind paying $6 a year for the convenience of bank syncing.

https://www.basiq.io/products/connect/

damomato avatar Jan 01 '24 22:01 damomato

I saw the server and app PRs for SimpleFIN. Is this in place of doing a Plaid integration, or is it in addition? It looks like SimpleFIN uses MX.com (the service pointed out above by @daveneeley) and charges monthly with no free tier option. In this comment, it seems that Plaid would potentially be free to use once integrated. Maybe I'm looking at it wrong, but it seems like Plaid has a free tier whereas SimpleFIN does not. Is this right? If so, why implement SimpleFIN integration instead of Plaid?

aescgar avatar Jan 20 '24 21:01 aescgar

I think there are add-ons that can provide plaid integration. If you want it, that’s how this integration started out. Simplefin is being added, in addition to the current gocardless integration. Maybe someone will add plaid as well in the future?

For me personally simplefin had better bank coverage than plaid.

On Sat, Jan 20, 2024 at 13:06 aescgar @.***> wrote:

I saw the server and app PRs for SimpleFIN. Is this in place of doing a Plaid integration, or is it in addition? It looks like SimpleFIN uses MX.com (the service pointed out above by @daveneeley https://github.com/daveneeley) and charges monthly with no free tier option. In this comment https://github.com/actualbudget/actual/issues/898#issuecomment-1894755624, it seems that Plaid would potentially be free to use once integrated. Maybe I'm looking at it wrong, but it seems like Plaid has a free tier whereas SimpleFIN does not. Is this right? If so, why implement SimpleFIN integration instead of Plaid?

— Reply to this email directly, view it on GitHub https://github.com/actualbudget/actual/issues/737#issuecomment-1902265153, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACDYM2IV4Q5EHMBD6ZH2F6DYPQWVXAVCNFSM6AAAAAAVV76AMSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMBSGI3DKMJVGM . You are receiving this because you commented.Message ID: @.***>

latetedemelon avatar Jan 20 '24 21:01 latetedemelon