mirror of
https://github.com/actualbudget/actual.git
synced 2026-03-22 00:13:45 -05:00
[Feature] Plaid Integration #346
Closed
opened 2026-02-28 19:00:14 -06:00 by GiteaMirror
·
49 comments
No Branch/Tag Specified
master
claude/browser-compatible-api-QbhHh
matiss/theme-catalog-responsive-layout
claude/improve-cli-transactions-waTUY
matiss/remove-browser-connection-extension
claude/secure-custom-fonts-evOw0
claude/publish-react-native-ios-j8qoT
dependabot/npm_and_yarn/flatted-3.4.2
js-proxy
claude/fix-flaky-ci-job-5gDdz
react-query-rules
react-query-useSchedules
claude/nightly-theme-validation-scan-DzOGD
claude/debug-simplefin-error-ZuKzB
matiss/desktop-client-subpath-imports
claude/fix-simplefin-ssrf-T31gX
claude/release-notes-validation-X7rvR
add-claude-github-actions-1772738270730
cursor/sync-performance-notification-9899
react-query-prefs
matiss/chunked-sync-and-progress-ux
v26.2.1
copilot/sub-pr-6880
fix-react-query-clear-on-close-budget
copilot/sub-pr-6140
feat/auto-note
feat/scoped-bank-sync
cursor/desktop-transactions-react-table-1d0c
fix-exhaustive-deps-App
copilot/fix-find-replace-bug
release/v26.2.0-pre
matiss/browser-tests
mobile-fix-drag-and-drop-across-groups
budget-table-v2
PayeeAutocomplete2
pglite
bugfix/plugins/fix-plugins-sw
feat/plugins/plugins-core-package
prerelease
matiss/unicode-minus-fix
cursor/fix-actual-github-issue-6206-gemini-3-pro-preview-9c37
TransactionFormPage
cursor/implement-mortgage-and-loan-account-type-78ca
tests-update-fill-with-pressSequentially
mobile/link-modal
deps/25.11
cursor/fix-update-vrt-apply-ci-job-dispatch-b324
sync-server-plugins
cursor/propose-patch-for-github-issue-5680-2a18
fix/compiler-preserve-inner-dollar-escapes
cursor/analyze-actual-budget-issue-and-propose-fix-5b70
coderabbitai/docstrings/0c070e5
cursor/add-wip-prefix-and-comment-to-prs-d78d
jfdoming/08-21-auto-focus-on-navigate-in-all-browsers
show-totals-on-mobile-budget-banners
allow-child-transactions-make-transfer
mobile-calculator-keyboard
payee-geolocation
enhance/restore_scroll_position
dm-fix-second-click-on-mobile-new-transaction-2
scrollToLocationBudget
alert-autofix-38
tsconfig-composite
mobile-fix-uncategorized-transactions-on-tracking-budgets
server-budget-handlers
fix-sql-injection-in-cleanup-template
non-chrome-draggable-workaround
mobile-budget-page-swipe-navigation
ts-db-all
stable
dark-theme-with-brand-colors
fix-mobile-delete-group
ts-db-select
UnderKoen/reconcile-context-menu
master-before-server-merge
v25.2.1
ts-runQuery
rename-redux-hooks
UnderKoen/3557-persist-state-in-history
remove-redux-CLOSE_BUDGET
fix-exhaustive-deps-errors-FinancesApp
redux-toolkit-createSlice-backup
accounts-function-component
ts-useSplitsExpanded
loot-core-server-package
useTransactios-in-TransactionEdit
react-aria-input
move-redux-to-desktop-client
QueryState-type
fix-themes-applied-late
mobile-vrts
revert-3295-spendingCardFix
react-aria-button-4
split-payee-on-mobile
twk3/pin-apis-crdt
notes-tag-autocomplete
ts-LoadBackup
dnd-kit
package-upgrades
v26.3.0
v26.2.1
v26.2.0
v26.1.0
v25.12.0
v25.11.0
v25.10.0
v25.9.0
v25.8.0
v25.7.1
v25.7.0
v25.6.1
v25.6.0
v25.5.0
v25.4.0
v25.3.1
v25.3.0
v25.2.1
v25.2.0
v25.1.0
v24.12.0
v24.11.0
v24.10.1
v24.10.0
v24.9.0
v24.8.0
v24.7.0
v24.6.0
v24.5.0
v24.4.0
v24.3.0
v24.2.0
v24.1.0
v23.12.0
v23.11.0
v23.10.0
v23.9.0
v23.8.1
v23.8.0
v23.7.2
v23.7.1
v23.7.0
v23.6.0
v23.5.0
v23.4.2
v23.4.1
v23.4.0
v23.3.2
v23.3.0
v23.2.9
v23.2.5
v23.1.12
v22.12.9
Labels
Clear labels
AI generated
API
bank sync
budgeting
bug
can’t replicate
dependencies
docker
documentation
electron
experimental feature
feature
feedback
goal templates
good first issue
help wanted
importers
maintenance
needs info
needs testing
needs triage
needs votes
openid
payees
pull-request
regression
reports
responsive
rules
schedules
server
✨ merged
split transactions
tech debt
theme
transaction import
transaction reconciliation
transactions
translations
upstream
user interface
✅ approved
wontfix
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/actual#346
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @culpeppers on GitHub (Apr 14, 2023).
Verified feature request does not already exist?
💻
Pitch: what problem are you trying to solve?
Integrate Plaid Account Linking into Actual. This feature would, at a minimum, pull transactions into linked accounts.
Describe your ideal solution to this problem
I was the originator of the previous Plaid integration PR. As a lot has changed with Actual since that work, I plan on starting from scratch to ensure compatibility and close integration with other development work.
I am still debating how I would like to implement Client ID and Secret. Previously I was setting these in the config files, but a more user-friendly solution is preferred.
Teaching and learning
The biggest issue with Plaid sync is back-end setup. Making sure Client ID and Secret are set appropriately. Each user would need to have a specific Plaid account. Documentation on how that is done would go a long way for users.
@j-f1 commented on GitHub (Apr 14, 2023):
Here’s the setup we have for Nordigen at the moment: https://actualbudget.github.io/docs/Installing/Configuration#nordigen
I think it would be nice to optionally load these secret values from the database and offer an option in the web app to set them, but that would be part of a different feature.
@culpeppers commented on GitHub (Apr 14, 2023):
Great thanks! I'm happy to borrow as much from Nordigen as possible to get this out the door, and then work on refinements afterwards.
@sslilyous commented on GitHub (Apr 15, 2023):
I think this is great. With Nordigen currently being the only option, our friends in both the United States and Canada are left out on the account syncing feature.
@github-actions[bot] commented on GitHub (May 1, 2023):
✨ Thanks for sharing your idea! ✨
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=label%3A%22needs+votes%22+sort%3Areactions-%2B1-desc+
Don’t forget to upvote the top comment with 👍!
@jinesh-b commented on GitHub (Jul 6, 2023):
Hey All! Is there any progress on this yet? I don't mind collaborating on this feature.
@j-f1 commented on GitHub (Jul 6, 2023):
Nothing that I know of — feel free to pick the work back up!
@acorncom commented on GitHub (Aug 5, 2023):
@jinB2021 https://github.com/actualbudget/actual-server/pull/191/files shows the status of the most recent Plaid work I've found so far. I'm stuck unable to use Actual without a Plaid integration given accounts I'm working with on my end, so I'm actively considering doing the Plaid integration work atm. If you're still interested in pairing up, let me know and we might be able to work on it together
@jinesh-b commented on GitHub (Aug 5, 2023):
@acorncom Yeah I would be down to pair up for the work. Would we be using that branch as the base or have you already started in a separate branch?
@seanculver commented on GitHub (Aug 15, 2023):
I'm also interested in helping with this feature, I'm still new to this codebase but would be willing to try to implement this or pair on this feature.
@acorncom commented on GitHub (Aug 16, 2023):
@seanculver / @jinB2021 I'm still on the fence on using Actual due to a few other items we need for our personal accounts (multi-currency is important on my end). Maybe the two of you could pair and I could keep an eye on things / drop in occasionally? I'm pretty new in the codebase myself, so not sure my involvement significantly alters how fast this work goes ... 😉
@seanculver commented on GitHub (Aug 17, 2023):
@acorncom Understandable, this is a trial for me, everything that I need besides the bank sync is here for the most part. I also would like multi-currency but I've just converted my foreign bank accounts into USD for now, not ideal but for me that works as it's not my main budget.
I'm digging into how Plaid works, I've never integrated it into an existing app but was always curious about it. Here's a useful video I found from the Plaid team. https://www.youtube.com/watch?v=sGBvKDGgPjc
@jinB2021 Let me know if you are interested in Pairing sometime.
@Kidglove57 commented on GitHub (Aug 17, 2023):
Just curious as I am not in the US or Canada. But how would Plaid be paid for? I can’t see a facility on their website for users to pay on an individual basis and I don’t really understand how an open source project would bear the cost ? Hopefully there is an answer I have completely missed!
@youngcw commented on GitHub (Aug 17, 2023):
@Kidglove57 There is a free "developer" tier that, iirc, limits you to 100 synced accounts.
@Kidglove57 commented on GitHub (Aug 17, 2023):
@youngcw Thanks! I did spot that on their pricing but, say, as an example each of our users has 3 accounts, I was thinking that would not get us very far? 30 or so users.
The original dev of Actual used to talk about $500 per month minimum subscription needed for full use.
@youngcw commented on GitHub (Aug 17, 2023):
It would have to be like the current goCardless setup where you have to bring you own credentials. I setup a developer login but never got around to trying to figure it out.
@Kidglove57 commented on GitHub (Aug 17, 2023):
@youngcw thanks, that's helpful. It just never occurred to me that it might be possible for say 250 individual Actual users to each set up their own Dev account.
I just wanted to be sure that the Actual team are protected from any monetary liabilities.
@youngcw commented on GitHub (Aug 17, 2023):
@Kidglove57 Firefly-III has a secondary project and container that runs the plaid integration so its not part of the main project, probably for this reason. And the user has to provide their own login. Its seems to be working fine for them so I wouldn't expect much issue.
@Kidglove57 commented on GitHub (Aug 17, 2023):
That's great! Thank you. I will take a other look at Firefly
@seanculver commented on GitHub (Aug 17, 2023):
@youngcw Thanks for the heads up on the firefly repositories. I see there are two repositories with connectors for Firefly.
https://gitlab.com/GeorgeHahn/firefly-plaid-connector
https://github.com/dvankley/firefly-plaid-connector-2
They are both docker containers and are written in .net / java, but they might be useful as a reference.
So, now that I've started using Plaid, here's something else to think about: I watched this video earlier, and it seems you need to apply to switch your API to development mode. That's when you can start pulling real data from banks.
I've applied but I don't know how they feel about everyone applying.
@seanculver commented on GitHub (Aug 17, 2023):
I stumbled across this repo as well. https://github.com/infiniteluke/actualplaid
@youngcw commented on GitHub (Aug 17, 2023):
@seanculver Interesting. I never got very far, but everything I saw seemed like all you needed was to use the development key instead of the sandbox key and you were good to go.
I think there are a few old repos that connected old actual to plaid, but I didn't dig far enough to see what all needed updated. I think that one you linked was the best one.
@seanculver commented on GitHub (Aug 17, 2023):
Just to throw it in the mix, here's an interesting read on the security implications of using a service like Plaid. https://news.ycombinator.com/item?id=28228051
People in this thread certainly have strong opinions, I don't know how legitimate some of these claims are.
@Thiesjoo commented on GitHub (Aug 23, 2023):
I forked this repo and made "some" changes: https://github.com/Thiesjoo/actualplaid. It now works with the most recent version of Actual and Plaid! Hopefully you guys can implement this functionality inside Actual, as that would be way easier than using a CLI script.
@youngcw commented on GitHub (Aug 23, 2023):
This looks pretty great so far, but it looks to be hard coded to be in the Netherlands. Could you add a env var to set the region?
@youngcw commented on GitHub (Aug 23, 2023):
@Thiesjoo Looks like you already had a env setup for the country, it just needed added to the env file. I did have to change the language, so that probably should also be an env var.
@Thiesjoo commented on GitHub (Aug 23, 2023):
Yep, repo is now updated, 2 env vars: 1 for which countries you should select your bank from, and 1 for the language of the plaid interface
@seanculver commented on GitHub (Aug 24, 2023):
@Thiesjoo Thanks for this! This is a great first step. I've got it working on my local machine, I've tried it with a development account and successfully synced transactions. I made a PR for a small breaking bug that I came across.
This would be a better experience as an actual integration into the project. If the project maintainers didn't want it in there, this would be an okay alternative for a basic solution. I would want to add a few more features to make it more robust.
@Thiesjoo commented on GitHub (Aug 25, 2023):
Of course! That would be the most optimal solution. It would also be better to use the new Plaid api's with webhooks (The repo is using a deprecated API now I think). This would mean that we do not have to make api calls every day, but can just update with transactions with webhooks!
What kind of features are you thinking about? I was thinking maybe category linking based on Plaid's suggestions, but maybe Actual rules would be better for that.
@youngcw commented on GitHub (Aug 25, 2023):
@Thiesjoo what version of actual-server and the api are you using with your plaid linking? Im getting all sorts of errors that seem to be on the Actual side.
@Thiesjoo commented on GitHub (Aug 26, 2023):
I'm using the most recent version of Actual
v23.8.1and the Actual api version is defined in package.json so6.2.1.What kind of errors are you getting? Is your budget maybe encrypted? I have not included functionality for that.
@youngcw commented on GitHub (Aug 26, 2023):
I think my issue was that I couldn't pull the budget down via the api if I had a web page of the same budget open. If I closed the budget in any browser windows then it worked. Ill see over the next few days if things are working on the plaid side.
@culpeppers commented on GitHub (Aug 31, 2023):
Yeah I keep wanting to work on this but life keeps getting in the way :(
@tjfinlinson commented on GitHub (Sep 5, 2023):
I know how that goes.
@youngcw commented on GitHub (Sep 5, 2023):
@Thiesjoo I put in a PR that takes care of pending transactions instead of erroring out. Pending gets marked as uncleared, then once no longer pending, cleared.
@jamesqo commented on GitHub (Sep 9, 2023):
As an end user who has a BofA account I would looove to see this feature implemented. Would be a total game changer and finally let me switch from Mint.
@amirHizkiya commented on GitHub (Sep 13, 2023):
Aren't there some privacy concerns with Plaid?
Is nobody worried about that?
@nickzxcv commented on GitHub (Sep 19, 2023):
I think the privacy concerns would be true for all banking API aggregators. It would make a lot more sense for bank APIs to work directly with anyone having business with the bank, but doesn't sound practical according to this other comment https://github.com/actualbudget/actual/issues/1661#issuecomment-1710678465 :(
@devinellis commented on GitHub (Nov 2, 2023):
FYI mint is shutting down
@amirHizkiya commented on GitHub (Nov 2, 2023):
IDK, I think adding one of the most egregious offenders of consumer privacy to an open source project of this nature is a bad idea.
Just because we can, doesn't mean we should.
The financial data company Plaid must pay $58 million and remove large amounts of consumer data in a class action settlement after harvesting and selling users' data
Source: https://www.courthousenews.com/judge-approves-settlement-ordering-plaid-to-pay-58-million-for-selling-consumer-data/
@derekpovah commented on GitHub (Nov 4, 2023):
As far as the Plaid privacy concerns go, I don't think a project should make a value judgement on behalf of its users. It seems like there is enough support for this, especially now that the Mint refugees like myself are on the hunt for a replacement.
If it's an issue for someone, they can always choose to keep the feature off.
@policeshootout commented on GitHub (Nov 5, 2023):
I am looking for an alternative to Mint and hoping to use Actual. I have installed the ActualServer on my SynologyNAS in Docker for my wife and I to use. The NAS is not exposed to the internet, only accessible from LAN. I don't have a lot of experience with this stuff and was hoping somebody could help a bit.
I don't really understand the setup instructions for the Plaid integration. Since I am using Docker, actualserver was installed using container manager and the docker-compose text which I edited to my specific needs. The location of data is stored at /volume1/docker/actualbudget/actual-data:/data.
Perhaps I am too out of my element to do this?
@youngcw commented on GitHub (Nov 5, 2023):
@policeshootout if you are just starting I recommend you try using csv/ofx import or manual entry to start. It does take at least a few days to get plaid syncing setup since you need to get approved by plaid for developer access. Once you have access it's not too bad to setup, but you have to manually setup connections and accounts.
@youngcw commented on GitHub (Nov 6, 2023):
Discord channel for plaid sync https://discord.com/channels/937901803608096828/1171096337111064626
@Bryce-MW commented on GitHub (Dec 4, 2023):
I was looking at the Plaid docs because I was thinking of writing my own program to fetch data from Plaid and I noticed an interesting API called enhance that can take some basic info about a transaction (most of which Actual stores), and get back data that is cleaned up a lot from the usually messy payee that banks provide: https://plaid.com/docs/enrich/ Since Plaid's transaction sync only allows a maximum of 24 months of history, this might be useful to people like myself who are interested in historical data. I'll make a follow-up if I end up using it
In order to use it even in the development environment, you must sign up for production access. In the development environment you only get 1000 transactions total. For production, the cost is $4 per 1000 transactions.
@aescgar commented on GitHub (Jan 17, 2024):
None of the Discord links posted on any of these issue threads have worked for me (says no text channel or I don't have access), so I haven't been able to follow all the discussion but do have a question. @Bryce-MW pointed out that Plaid requires payment for the "enrich" feature. However, for normal transaction syncing into Actual, am I right that this could be done for free up to 100 financial institutions (each user generates their own tokens)?
(Also, @youngcw @tjfinlinson, any way for me to get access to follow the Discord conversation since the link is posted publicly, or no?)
@Bryce-MW commented on GitHub (Jan 17, 2024):
@aescgar The Discord is public but maybe you have to join before it works. Link should be https://discord.gg/pRYNYr4W5A
Yes you can get data through Plaid for free. It requires a bit of setup and Actual doesn't support it yet (there's some code in there that could be used as a starting point if anyone actually wants to implement it). I think an easier temporary solution would be to use a Python program that connects to Plaid and outputs an OFX.
I did try that but I found out that it didn't really do what I had hoped and I can't even test Enrich on real data without signing an agreement which I don't want to do right now. I have learned many interesting and many frustrating things about getting the best quality data. I even tried using ChatGPT to improve the quality of my data (which sort of worked but not well). I have a few more things that I want to try but my life has been busy. For now, I just have a lot of rules…
@youngcw commented on GitHub (Jun 23, 2024):
FYI there is no longer a free option for Plaid as of June 20 2024. It may still be worth setting up a Plaid integration for those that prefer Plaid over simplefin.
@Jiffrope commented on GitHub (Oct 6, 2024):
SaltEdge offers a "test" status tier to Firefly III users which allows up to 10 accounts connections, but has absolutely no support from them - users just have to sign up then request it. I don't know nothing about coding or integrations but just throwing that into the mix, as neither Plaid, GoCardless or SimpleFin support the banks what I am.
@tarkilhk commented on GitHub (May 27, 2025):
+1 for SaltEdge, which supports a fair number of banks in Asia (which SimpleFin and GoCardless don't)