mirror of
https://github.com/actualbudget/actual.git
synced 2026-07-16 15:14:02 -05:00
[Bug]: Bank Sync via GoCardless fails at end of import #2483
Closed
opened 2026-02-28 20:15:13 -06:00 by GiteaMirror
·
19 comments
No Branch/Tag Specified
master
claude/verify-migration-guardrails-i82c8m
cross-version-sync-stage2
api-browser-custom-data-dir
dependabot/npm_and_yarn/npm_and_yarn-cd62b4b37a
tabedzki/feat/replacing-month-picker-with-day-picker
delay-initial-sync-until-loaded
jfdoming/mobile-app-build
cross-version-sync-compat
jfdoming/api-tokens-part-1
jfdoming/api-tokens-part-2
jfdoming/api-tokens-part-3
jfdoming/mobile-app-updates
claude/budget-version-migration-compat-151jlr
claude/worker-error-serialization-9iqtl7
claude/react-table-library-research-afx83z
claude/issue-8401-regression-test-9nw9l3
jfdoming/mobile-app-foundation-part-1
jfdoming/mobile-app-scaffold
release
ai-fix-cleanup-def-8290
claude/relaxed-shannon-jusywa
claude/fervent-keller-s6f2fq
claude/determined-feynman-st1y9z
claude/wizardly-einstein-vi2wce
claude/sweet-albattani-7nseio
feat/bank-sync-per-budget-file
claude/affectionate-cannon-y0kc82
claude/dependabot-findings-m9pgmb
claude/mac-app-ios-publish-zjs1lz
claude/vigilant-tesla-aiiyos
depot-migrate-secrets-1781296330308
claude/quirky-cerf-v5qck7
claude/animation-removal-alternative-2etfh1
claude/netlify-preview-comments-consolidate-9XPYa
osc/7391-error-boundaries-reports
claude/pensive-dijkstra-7DYui
claude/server-app-version-mismatch-HTCGv
claude/pr-8027-review-feedback-mELuO
claude/zealous-wozniak-e5pO0
claude/intelligent-heisenberg-BSHJq
claude/translation-download-refactor-jFRsO
claude/mobile-performance-ideas-G9PAO
claude/github-issue-7988-5A5ly
blacksmith-migration-ff70d2d
claude/great-mayer-KRvOk
claude/react-native-ios-compilation-fcJh5
claude/serene-goldberg-58xv0
claude/kind-euler-LVG3K
release-automation/edge-nightly
7710-bundle-migrations
claude/fix-docker-build-error-WMfed
claude/llm-compatible-release-notes-t20Nr
7710-tests-tdd
cursor/transaction-table-rewrite-f077
claude/plan-ci-secure-context-OtEe1
claude/fix-issue-7667-DPXi3
cursor/resolve-pr-7449-ee11
claude/fix-typescript-build-error-JPtZ5
copilot/add-repository-configs-to-packages
worktree-compressed-drifting-ritchie
claude/api-consumer-verification-kfz1K
pr-7454
claude/fix-issue-7410-LLLQ4
revert-7281-generate-icons
react-query-useSchedules
copilot/sub-pr-6140
package-upgrades
v26.7.0
v26.6.0
v26.5.2
v26.5.1
v26.5.0
v26.4.0
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
tech-support
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#2483
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 @demares99 on GitHub (Sep 19, 2025).
Verified issue does not already exist?
What happened?
Hello Actual Community,
I'm no expert and I can't really understand what I'm talking about so gave all the info to ChatGPT in order to make a complete feedback. The result below.
Subject: Bank Sync via GoCardless fails at end of import (Windows desktop → self-hosted server on Home Assistant)
Hello Actual team,
I’m using Actual Desktop on Windows (Microsoft Store, latest) with a self-hosted Actual server running as a Home Assistant OS add-on on a Raspberry Pi 4. Both client and server are up to date (latest). There is no reverse proxy. My desktop and the server are sometimes on the same LAN and sometimes remote; the problem occurs in both cases.
What I’m trying to do
What happens
Important timeline
What I expect
Steps to reproduce
Environment
Relevant log excerpts (sensitive info redacted)
Bank Sync starts and GoCardless returns data (institution and account identifiers redacted):
Server Log: Bank Sync operation for account: [redacted account name/number]andServer Log: Pulling transactions from GoCardlesswith aResponseobject containing manybookeditems (institutionId:[redacted]).Immediately afterward, the app reports a failure to sync the account:
Server Log: [Exception] { message: 'Failed syncing account “[redacted account name/number]”.' }During/after the same run, the desktop’s fetch layer reports network failures and a connect timeout while syncing:
TypeError: fetch failed … [cause]: ConnectTimeoutError (UND_ERR_CONNECT_TIMEOUT)andPostError: network-failureduring_fullSync.At other moments in the same session, console logs show intermittent DNS resolution failures while contacting my server host (domain redacted):
Error: getaddrinfo EAI_AGAIN actual.[redacted].duckdns.org(seen duringgetUser,postBinary, etc.).I also see a UI/runtime error during reconciliation (including after transactions were listed):
Internal error: TypeError: Cannot read properties of undefined (reading 'offbudget')followed by the same “Failed syncing account” message.Frequency
Can I provide anything else?
I can share the full console log (with sensitive details redacted) and run any additional diagnostics you recommend from either the desktop app or the self-hosted server.
Thanks for your help!
How can we reproduce the issue?
Steps to reproduce
Where are you hosting Actual?
Other
What browsers are you seeing the problem on?
Microsoft Edge
Operating System
Windows 11
@youngcw commented on GitHub (Sep 19, 2025):
Its best not to use the desktop app if you have a hosted server.
Does this still happen if you sync while using Actual in a browser?
@demares99 commented on GitHub (Sep 21, 2025):
Yes, i tried in a browser on the same computer, on my phone and on another computer (still using edge): always an error. The last synced transaction is on 15/07 and I can't sync anything after.
@youngcw commented on GitHub (Sep 21, 2025):
If you sync individual accounts, do they all do this or just a few?
@demares99 commented on GitHub (Sep 21, 2025):
I only have one account sync :)
Le dim. 21 sept. 2025, 17:08, youngcw @.***> a écrit :
@mauroartizzu commented on GitHub (Sep 22, 2025):
@demares99 Check https://bankaccountdata.gocardless.com/companies/usage/ your actual quota. Enable debug and see if it is returning 429 you might have reached the quota.
@demares99 commented on GitHub (Sep 23, 2025):
I doubt the problem comes from Gocardless. I can read in the log of Actual (in the HomeAssistant add-on) that the transactions arrive in Actual (see picture 2). They are not processed by Actual. I couldn't find how to enable debug, but I screenshot the usage (picture 1). I didn't sync since 1 week (17-09-2025, see picture2) and I usually sync once or twice per day at most.
As I mentioned before, I tried to get help from Chat-GPT and in the previous months he gave me a lot of different (false) reasons to explain this behaviour. One of this reason was that maybe a transaction around 15/07/2025 contained a special symbol that made the import crashed into Actual. It's not impossible since I speak french and the transactions names or details could contains é,è,ê,à,â, etc. I have no idea if it's possible or how to check it.
I also forgot to mention that not so long before the bug (but no direcly before either), I tried to switch between Tracking and Enveloppe Budgeting to see what suited me most. I did Enveloppe -> Tracking -> Enveloppe -> Tracking and stayed in tracking since. Once again, I have no idea if it's linked but it's worth mentionning it.
@giacomofabbri commented on GitHub (Sep 30, 2025):
Hello, I'm getting same error on 2 banks of 3 that I setup via GoCardless and on docker logs I got this error
Error /gocardless/get-accounts TypeError: Cannot convert undefined or null to object at Function.keys (<anonymous>) at Object.getDetailedAccount (file:///app/src/app-gocardless/services/gocardless-service.js:345:23) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async file:///app/src/app-gocardless/services/gocardless-service.js:119:29 at async Promise.all (index 0) at async Object.getRequisitionWithAccounts (file:///app/src/app-gocardless/services/gocardless-service.js:118:34) at async file:///app/src/app-gocardless/app-gocardless.js:44:43I'm from Italy if that helps.
@weiran commented on GitHub (Oct 1, 2025):
I'm also getting this error in app my accounts too, since mid September. I'm in the UK.
@mullermn commented on GitHub (Oct 8, 2025):
I am also seeing this error this week. Syncing via GoCardless in the UK, seeing it on Amex, Santander and HSBC.
I tried removing and re-adding HSBC and the linking process works fine, but the sync still fails afterwards.
In the console:
I'm using PikaPods so I'm not sure if I can get anything more detailed than this?
@mullermn commented on GitHub (Oct 9, 2025):
OK, so today I tried the HSBC sync (without any further corrective action since yesterday) and it's worked fine. I then tried Santander and I got an error, but a different one:
Doing the reauthorisation journey worked fine, and these Santander accounts are now syncing again.
So, I think my issue (which may or may not be the exact same one as the OP - I can't tell) is more to do with something going wrong when the credentials expire.
To be clear I did NOT receive any prompt or indication that credentials were out of date when it stopped working (so this isn't a case of me being a numpty and not noticing the auth had expired!), and reauthorising did not fix it until 24h later. Is it possible that credential expiry is not being detected correctly and the sync process is upsetting the GoCardless service with bad requests?
@weiran commented on GitHub (Oct 10, 2025):
Interesting, relinking accounts now seems to fix the error - when it didn't before. I haven't changed my Actual instance so maybe it was something on GoCardless' end.
@francescovigni commented on GitHub (Oct 13, 2025):
Hello all!
I'm also from Italy and I'm using 2 banks on actual.
My instance is running on my Synology NAS and I'm accessing it via a cloudflare tunnel. The setup works well but in these days I am also experiencing an issue when pulling new transactions. The console on the browser shows
Failed linking gocardless account: Object error_code: "INTERNAL_ERROR" error_type: "Cannot convert undefined or null to object"The container logs report
Error /gocardless/get-accounts TypeError: Cannot convert undefined or null to object at Function.keys (<anonymous>) at Object.getDetailedAccount (file:///app/src/app-gocardless/services/gocardless-service.js:345:23) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async file:///app/src/app-gocardless/services/gocardless-service.js:119:29 at async Promise.all (index 0) at async Object.getRequisitionWithAccounts (file:///app/src/app-gocardless/services/gocardless-service.js:118:34) at async file:///app/src/app-gocardless/app-gocardless.js:44:43I guess my credentials expire but I am not able to set up new ones.
@francescovigni commented on GitHub (Oct 13, 2025):
You mean you had to
unlinkyour account andlinkit again and it worked?@giacomofabbri commented on GitHub (Oct 13, 2025):
I was able to fix it too doing the unlink and then link again! Both my account now works perfectly
@demares99 commented on GitHub (Oct 14, 2025):
Unlinking and relinking didn't change anything for me, unfortunatly.
@francescovigni commented on GitHub (Oct 29, 2025):
For the italian banks the problem was solved in issues https://github.com/actualbudget/actual/pull/5706 and 5741 check the release notes
Just update your instance to the 25.10.0 and try again to link your account. It should work now.
I believe this issue can be closed.
@demares99 commented on GitHub (Oct 30, 2025):
You gave me hope, but it actually didn't solve it for me. Version 25.10.0, unlinked and relinked my account.
@JuliaF1988 commented on GitHub (Oct 30, 2025):
Same problem here (since Oct 27 2025).
Everything worked fine before that date.
I'm running Actual Server in Docker (actualbudget/actual:latest), self-hosted behind a reverse proxy. The bank connection is via GoCardless (Germany, PSD2).
According to the container logs, the GoCardless integration does fetch the latest account data — example excerpt:
POST 200 /gocardless/transactions
top10Transactions: '[{"transactionId":"20251030-12345678910-1-0","bookingDate":"2025-10-30","transactionAmount":{"amount":"-123.45","currency":"EUR"}, ... "booked":true}]'
However, these transactions never appear in the Actual UI.
After reset-user-file and re-linking the accounts, the sync still succeeds in the backend but no new transactions are visible or offered for import.
Restarting the container, clearing cache, and re-linking GoCardless do not change the behavior.
@matt-fidd commented on GitHub (Oct 30, 2025):
Hey @demares99, sorry that you're still seeing this issue. The root cause appears to be the data provided by GoCardless, but I've opened a PR that will help us to debug it together.
Could you follow the below steps and we can see if there's any more information please?
If so, there will be some transaction information and a list of accounts logged out. Please could you provide that information, or take a look at it yourself, and we should be able to get further.
If you don't feel comfortable sharing on this thread, then feel free to PM me on Discord @matt-fidd, and you can redact any information not related to the account if you'd like.