[GH-ISSUE #7799] [Feedback]: Enable Banking bank sync provider #117586

Open
opened 2026-06-11 12:59:05 -05:00 by GiteaMirror · 78 comments
Owner

Originally created by @matt-fidd on GitHub (May 11, 2026).
Original GitHub issue: https://github.com/actualbudget/actual/issues/7799

Implemented in https://github.com/actualbudget/actual/pull/7345

cc @AurelDemiri

Originally created by @matt-fidd on GitHub (May 11, 2026). Original GitHub issue: https://github.com/actualbudget/actual/issues/7799 Implemented in https://github.com/actualbudget/actual/pull/7345 cc @AurelDemiri
GiteaMirror added the experimental featurefeedback labels 2026-06-11 12:59:07 -05:00
Author
Owner

@ProtoxiDe22 commented on GitHub (May 11, 2026):

Hello, i'm testing the flow, i have found a couple minor problems with it.

  • initially i tried setting up the integration with a non-complete setup on enable banking (the eb application was not activated), however, actual didn't report any errors in the frontend, and when trying to link accounts, nothing would just show up when trying to select the bank.
    The logs (understandably) contained this
    actual_server-1 | 2026-05-11T17:37:52.729Z actual:enable-banking:errors Enable Banking API error: status=403 body={"code":403,"message":"Application is not active"} actual_server-1 | 2026-05-11T17:37:52.730Z info: POST 200 /enablebanking/aspsps

  • resetting the enable bank credentials from the bank sync page, the frontend throws an error, but in reality the request went through just fine and the credentials were reset. I couldn't find anything relevant in the js logs, and the server logs just reported the successful request
    actual_server-1 | 2026-05-11T17:39:15.157Z actual:secrets-db setting secret 'enablebanking_applicationId' to 'null' actual_server-1 | 2026-05-11T17:39:15.164Z info: POST 200 /secret
    image

  • On the last step of linking the account, the frontend (correctly) preselects an account to link. However, the confirm button of the modal is disabled, and only enables if i click "remove bank sync" and then "set up bank sync" on the same account
    image
    after re-selecting the account in actual, the button is enabled correctly and the flow terminates just fine.

I use this occasion to thank the author for their work, and the maintainers for (finally :) ) merging this.

<!-- gh-comment-id:4424675020 --> @ProtoxiDe22 commented on GitHub (May 11, 2026): Hello, i'm testing the flow, i have found a couple minor problems with it. - initially i tried setting up the integration with a non-complete setup on enable banking (the eb application was not activated), however, actual didn't report any errors in the frontend, and when trying to link accounts, nothing would just show up when trying to select the bank. The logs (understandably) contained this `actual_server-1 | 2026-05-11T17:37:52.729Z actual:enable-banking:errors Enable Banking API error: status=403 body={"code":403,"message":"Application is not active"} actual_server-1 | 2026-05-11T17:37:52.730Z info: POST 200 /enablebanking/aspsps` - resetting the enable bank credentials from the bank sync page, the frontend throws an error, but in reality the request went through just fine and the credentials were reset. I couldn't find anything relevant in the js logs, and the server logs just reported the successful request `actual_server-1 | 2026-05-11T17:39:15.157Z actual:secrets-db setting secret 'enablebanking_applicationId' to 'null' actual_server-1 | 2026-05-11T17:39:15.164Z info: POST 200 /secret` <img width="420" height="183" alt="image" src="https://github.com/user-attachments/assets/123f2721-9996-48c8-ae76-9d67f643ce61" /> - On the last step of linking the account, the frontend (correctly) preselects an account to link. However, the confirm button of the modal is disabled, and only enables if i click "remove bank sync" and then "set up bank sync" on the same account <img width="1028" height="478" alt="image" src="https://github.com/user-attachments/assets/2eb198e1-ad57-459f-a769-dc5db5d95be4" /> after re-selecting the account in actual, the button is enabled correctly and the flow terminates just fine. I use this occasion to thank the author for their work, and the maintainers for (finally :) ) merging this.
Author
Owner

@daneov commented on GitHub (May 12, 2026):

What happened?

I was trying to set up banking using the sha-e479c84-alpine image when going through the Set up banking flow with Enable Banking credentials. I selected Enable Banking -> Set up and provided the Application ID some_uuid together with some_uuid.pem returned by Enable Banking.

Expected: the banking setup flow completes successfully and linked accounts are available.

Actual: the flow fails during authentication/setup on Firefox, but works on Chromium even though the application details are set exactly the same.

Error message:

Could not validate the credentials. Please check your Application ID and secret key.

As far as I can see from the code, this would only happen if something is going wrong with the userToken from session storage. This seems to be browser specific, maybe some API needs to be called just a bit differently?

How can we reproduce the issue?

  1. Go to your Actual website using Firefox (my version is 147.0.2, Linux, no additional extensions and disabling "strict"-mode did not help)
  2. Enable Enable Banking in the feature flags
  3. Go to Bank sync
  4. Enter the uuid as shown on Enable Banking
  5. Upload the <uuid.pem> file, as provided by Enable Banking
  6. Press the "Save and continue" button
  7. Observe the error

Using the same steps in Chromium works, potentially (but unverified) pointing to using a webkit-specific API? Unsure.

Where are you hosting Actual?

Docker

What browsers are you seeing the problem on?

Firefox

Operating System

Linux

<!-- gh-comment-id:4427174027 --> @daneov commented on GitHub (May 12, 2026): ### What happened? I was trying to set up banking using the `sha-e479c84-alpine` image when going through the `Set up banking` flow with Enable Banking credentials. I selected `Enable Banking -> Set up` and provided the Application ID `some_uuid` together with `some_uuid.pem` returned by Enable Banking. Expected: the banking setup flow completes successfully and linked accounts are available. Actual: the flow fails during authentication/setup on Firefox, but works on Chromium even though the application details are set exactly the same. Error message: ```text Could not validate the credentials. Please check your Application ID and secret key. ``` As far as I can see from the code, this would only happen if something is going wrong with the `userToken` from session storage. This seems to be browser specific, maybe some API needs to be called just a bit differently? ### How can we reproduce the issue? 1. Go to your Actual website using Firefox (my version is 147.0.2, Linux, no additional extensions and disabling "strict"-mode did not help) 2. Enable `Enable Banking` in the feature flags 3. Go to `Bank sync` 4. Enter the uuid as shown on Enable Banking 5. Upload the `<uuid.pem>` file, as provided by Enable Banking 6. Press the "Save and continue" button 7. Observe the error Using the same steps in Chromium works, potentially (but unverified) pointing to using a webkit-specific API? Unsure. ### Where are you hosting Actual? Docker ### What browsers are you seeing the problem on? Firefox ### Operating System Linux
Author
Owner

@emiltb commented on GitHub (May 12, 2026):

I was able to connect to Enable Banking and link it to my account.

A minor detail, that I noticed, is that the list of banks to select from is not sorted - that would be a nice touch and make it slightly faster to find the bank you need.

Image

Even though my account was linked and during linking it showed the right balance, I was not able to succesfully sync it and got a network-error.

When trying to sync to an existing account in Actual:

Bank Sync operation for account: Jyske Bank kcab.worker.1jYQKhxA.js:3229:29
Pulling transactions from Enable Banking kcab.worker.1jYQKhxA.js:3220:29
[Exception] 
Object { meta: undefined, reason: "network-failure", type: "PostError", message: 'Failed syncing account "Jyske Bank."' }
kcab.worker.1jYQKhxA.js:3223:12
    error https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:3223
    captureException https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:3368
    accountsBankSync https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:152137

When trying to sync to a newly created account in Actual:

Bank Sync operation for account: Emil Tveden Bjerglund kcab.worker.1jYQKhxA.js:3229:29
Pulling transactions from Enable Banking kcab.worker.1jYQKhxA.js:3220:29
[Exception] Error: PostError: network-failure
    PostError https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:3415
    post https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:95984
kcab.worker.1jYQKhxA.js:3223:12
    error https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:3223
    captureException https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:3368
    4 https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:3663
Error: PostError: network-failure kcab.worker.1jYQKhxA.js:3415:4
Error linking account to Enable Banking: 
Object { type: "ServerError", message: "PostError: network-failure", cause: Error }
mutations.ts:533:15
    onError mutations.ts:533
    execute mutation.js:159
    mutate mutationObserver.js:61
    mutate useMutation.js:33
    onNext SelectLinkedAccountsModal.tsx:266
    onNext SelectLinkedAccountsModal.tsx:210
    triggerPressEnd usePress.mjs:144
    onClick usePress.mjs:403
    React 6
[Exception] 
Object { meta: undefined, reason: "network-failure", type: "PostError", message: 'Failed syncing account "Emil Tveden Bjerglund."' }
​
message: 'Failed syncing account "Emil Tveden Bjerglund."'
​
meta: undefined
​
reason: "network-failure"
​
type: "PostError"
​
<prototype>: Object { … }
kcab.worker.1jYQKhxA.js:3223:12
    error https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:3223
    captureException https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:3368
    accountsBankSync https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:152137

I'm in doubt about how this works in terms of my network setup and the callback-url. Does that need to be accessible from outside the network for this to work? I host my edge test-instance locally, and the URL is only available internally. I tried briefly opening my test instance up to outside access, but that made no difference.

Edit: I just tried linking accounts over again, but to no avail. I noticed this time, that it actually also gives an error, so it never successfully links the account, with basically the same network-failure as above.

Browser: Tried both Firefox and Chromium
OS: Linux
Environment: edge-alpine as of 2026-05-12 (I'm not completely sure of the exact version) image in docker, through caddy reverse proxy

<!-- gh-comment-id:4433943297 --> @emiltb commented on GitHub (May 12, 2026): I was able to connect to Enable Banking and link it to my account. A minor detail, that I noticed, is that the list of banks to select from is not sorted - that would be a nice touch and make it slightly faster to find the bank you need. <img width="299" height="602" alt="Image" src="https://github.com/user-attachments/assets/1ff30ebb-9f82-4458-8bcf-fd3130c6d96a" /> Even though my account was linked and during linking it showed the right balance, I was not able to succesfully sync it and got a network-error. When trying to sync to an existing account in Actual: ``` Bank Sync operation for account: Jyske Bank kcab.worker.1jYQKhxA.js:3229:29 Pulling transactions from Enable Banking kcab.worker.1jYQKhxA.js:3220:29 [Exception] Object { meta: undefined, reason: "network-failure", type: "PostError", message: 'Failed syncing account "Jyske Bank."' } kcab.worker.1jYQKhxA.js:3223:12 error https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:3223 captureException https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:3368 accountsBankSync https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:152137 ``` When trying to sync to a newly created account in Actual: ``` Bank Sync operation for account: Emil Tveden Bjerglund kcab.worker.1jYQKhxA.js:3229:29 Pulling transactions from Enable Banking kcab.worker.1jYQKhxA.js:3220:29 [Exception] Error: PostError: network-failure PostError https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:3415 post https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:95984 kcab.worker.1jYQKhxA.js:3223:12 error https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:3223 captureException https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:3368 4 https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:3663 Error: PostError: network-failure kcab.worker.1jYQKhxA.js:3415:4 Error linking account to Enable Banking: Object { type: "ServerError", message: "PostError: network-failure", cause: Error } mutations.ts:533:15 onError mutations.ts:533 execute mutation.js:159 mutate mutationObserver.js:61 mutate useMutation.js:33 onNext SelectLinkedAccountsModal.tsx:266 onNext SelectLinkedAccountsModal.tsx:210 triggerPressEnd usePress.mjs:144 onClick usePress.mjs:403 React 6 [Exception] Object { meta: undefined, reason: "network-failure", type: "PostError", message: 'Failed syncing account "Emil Tveden Bjerglund."' } ​ message: 'Failed syncing account "Emil Tveden Bjerglund."' ​ meta: undefined ​ reason: "network-failure" ​ type: "PostError" ​ <prototype>: Object { … } kcab.worker.1jYQKhxA.js:3223:12 error https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:3223 captureException https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:3368 accountsBankSync https://actual-edge.emilbp.dk/kcab/kcab.worker.1jYQKhxA.js:152137 ``` I'm in doubt about how this works in terms of my network setup and the callback-url. Does that need to be accessible from outside the network for this to work? I host my edge test-instance locally, and the URL is only available internally. I tried briefly opening my test instance up to outside access, but that made no difference. **Edit:** I just tried linking accounts over again, but to no avail. I noticed this time, that it actually also gives an error, so it never successfully links the account, with basically the same network-failure as above. Browser: Tried both Firefox and Chromium OS: Linux Environment: `edge-alpine` as of 2026-05-12 (I'm not completely sure of the exact version) image in docker, through caddy reverse proxy
Author
Owner

@geekuality commented on GitHub (May 12, 2026):

Something else I noticed: works in Chromium, not in Firefox. #7795

Works fine for me, using Firefox 150.0.1 on a Mac to access Actual on a Linux server over https. Actual installed from NPM @actual-app/sync-server@26.6.0-nightly.20260512.

<!-- gh-comment-id:4435031762 --> @geekuality commented on GitHub (May 12, 2026): > Something else I noticed: works in Chromium, not in Firefox. [#7795](https://github.com/actualbudget/actual/issues/7795) Works fine for me, using Firefox 150.0.1 on a Mac to access Actual on a Linux server over https. Actual installed from NPM `@actual-app/sync-server@26.6.0-nightly.20260512`.
Author
Owner

@geekuality commented on GitHub (May 12, 2026):

But now what I came here to do, actual feedback: There is something funny happening with confirmed future payments (on an account) and holds (on a card), the upcoming charge amount is put into "deposit" and screws up things. I don't know yet what happens when the upcoming payment is turned into a real statement entry or a hold matures into an actual charge.

Here is an example of an account that has two upcoming charges from it (turned running balance on to highlight the effect):

Image

My current enviroment is listed in the post above.

<!-- gh-comment-id:4435195024 --> @geekuality commented on GitHub (May 12, 2026): But now what I came here to do, actual feedback: There is something funny happening with confirmed future payments (on an account) and holds (on a card), the upcoming charge amount is put into "deposit" and screws up things. I don't know yet what happens when the upcoming payment is turned into a real statement entry or a hold matures into an actual charge. Here is an example of an account that has two upcoming charges from it (turned running balance on to highlight the effect): <img width="800" alt="Image" src="https://github.com/user-attachments/assets/6078184c-a0ce-4132-aee4-72a4ee4d5796" /> My current enviroment is listed in the post above.
Author
Owner

@Tatcher00 commented on GitHub (May 13, 2026):

It worked without any problems for me. I’m using a Linux server running 26.6.0-nightly.20260512.
Tested with Chromium. The connection via Enable Banking worked without any error messages once I’d linked my bank.
All transactions were synchronised correctly (German bank DKB)

Thanks for your work

<!-- gh-comment-id:4437770236 --> @Tatcher00 commented on GitHub (May 13, 2026): It worked without any problems for me. I’m using a Linux server running 26.6.0-nightly.20260512. Tested with Chromium. The connection via Enable Banking worked without any error messages once I’d linked my bank. All transactions were synchronised correctly (German bank DKB) Thanks for your work
Author
Owner

@oskardotglobal commented on GitHub (May 14, 2026):

Runs perfectly with one of my banks (German DKB) as reported by @Tatcher00, but my other bank Berliner Sparkasse refuses to sync:

index.ts:26 [Exception] PostError: PostError: network-failure
    at post (post.ts:82:11)
    at async downloadEnableBankingTransactions (sync.ts:324:15)
    at async syncAccount (sync.ts:1131:16)
    at async linkEnableBankingAccount (app.ts:438:19)
error @ index.ts:26
post.ts:82 Uncaught (in promise) PostError: PostError: network-failure
    at post (post.ts:82:11)
    at async downloadEnableBankingTransactions (sync.ts:324:15)
    at async syncAccount (sync.ts:1131:16)
    at async linkEnableBankingAccount (app.ts:438:19)
mutations.ts:533 Error linking account to Enable Banking: Objectcause: Error: PostError: network-failure
    at post (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:97686:10)
    at async downloadEnableBankingTransactions (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:152826:15)
    at async syncAccount (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:153222:72)
    at async linkEnableBankingAccount (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:153465:28)message: "PostError: network-failure"stack: "Error: PostError: network-failure\n    at post (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:97686:10)\n    at async downloadEnableBankingTransactions (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:152826:15)\n    at async syncAccount (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:153222:72)\n    at async linkEnableBankingAccount (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:153465:28)"[[Prototype]]: Objectconstructor: ƒ Error()message: ""name: "Error"toString: ƒ toString()[[Prototype]]: Objectmessage: "PostError: network-failure"type: "ServerError"[[Prototype]]: Object
onError @ mutations.ts:533

(Linking works though)

<!-- gh-comment-id:4450075934 --> @oskardotglobal commented on GitHub (May 14, 2026): Runs perfectly with one of my banks (German DKB) as reported by @Tatcher00, but my other bank Berliner Sparkasse refuses to sync: ``` index.ts:26 [Exception] PostError: PostError: network-failure at post (post.ts:82:11) at async downloadEnableBankingTransactions (sync.ts:324:15) at async syncAccount (sync.ts:1131:16) at async linkEnableBankingAccount (app.ts:438:19) error @ index.ts:26 post.ts:82 Uncaught (in promise) PostError: PostError: network-failure at post (post.ts:82:11) at async downloadEnableBankingTransactions (sync.ts:324:15) at async syncAccount (sync.ts:1131:16) at async linkEnableBankingAccount (app.ts:438:19) mutations.ts:533 Error linking account to Enable Banking: Objectcause: Error: PostError: network-failure at post (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:97686:10) at async downloadEnableBankingTransactions (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:152826:15) at async syncAccount (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:153222:72) at async linkEnableBankingAccount (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:153465:28)message: "PostError: network-failure"stack: "Error: PostError: network-failure\n at post (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:97686:10)\n at async downloadEnableBankingTransactions (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:152826:15)\n at async syncAccount (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:153222:72)\n at async linkEnableBankingAccount (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:153465:28)"[[Prototype]]: Objectconstructor: ƒ Error()message: ""name: "Error"toString: ƒ toString()[[Prototype]]: Objectmessage: "PostError: network-failure"type: "ServerError"[[Prototype]]: Object onError @ mutations.ts:533 ``` (Linking works though)
Author
Owner

@matt-fidd commented on GitHub (May 14, 2026):

Runs perfectly with one of my banks (German DKB) as reported by @Tatcher00, but my other bank Berliner Sparkasse refuses to sync:

index.ts:26 [Exception] PostError: PostError: network-failure
    at post (post.ts:82:11)
    at async downloadEnableBankingTransactions (sync.ts:324:15)
    at async syncAccount (sync.ts:1131:16)
    at async linkEnableBankingAccount (app.ts:438:19)
error @ index.ts:26
post.ts:82 Uncaught (in promise) PostError: PostError: network-failure
    at post (post.ts:82:11)
    at async downloadEnableBankingTransactions (sync.ts:324:15)
    at async syncAccount (sync.ts:1131:16)
    at async linkEnableBankingAccount (app.ts:438:19)
mutations.ts:533 Error linking account to Enable Banking: Objectcause: Error: PostError: network-failure
    at post (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:97686:10)
    at async downloadEnableBankingTransactions (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:152826:15)
    at async syncAccount (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:153222:72)
    at async linkEnableBankingAccount (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:153465:28)message: "PostError: network-failure"stack: "Error: PostError: network-failure\n    at post (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:97686:10)\n    at async downloadEnableBankingTransactions (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:152826:15)\n    at async syncAccount (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:153222:72)\n    at async linkEnableBankingAccount (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:153465:28)"[[Prototype]]: Objectconstructor: ƒ Error()message: ""name: "Error"toString: ƒ toString()[[Prototype]]: Objectmessage: "PostError: network-failure"type: "ServerError"[[Prototype]]: Object
onError @ mutations.ts:533

(Linking works though)

Out of interest, are there any logs in your server logs?

<!-- gh-comment-id:4450085347 --> @matt-fidd commented on GitHub (May 14, 2026): > Runs perfectly with one of my banks (German DKB) as reported by [@Tatcher00](https://github.com/Tatcher00), but my other bank Berliner Sparkasse refuses to sync: > > ``` > index.ts:26 [Exception] PostError: PostError: network-failure > at post (post.ts:82:11) > at async downloadEnableBankingTransactions (sync.ts:324:15) > at async syncAccount (sync.ts:1131:16) > at async linkEnableBankingAccount (app.ts:438:19) > error @ index.ts:26 > post.ts:82 Uncaught (in promise) PostError: PostError: network-failure > at post (post.ts:82:11) > at async downloadEnableBankingTransactions (sync.ts:324:15) > at async syncAccount (sync.ts:1131:16) > at async linkEnableBankingAccount (app.ts:438:19) > mutations.ts:533 Error linking account to Enable Banking: Objectcause: Error: PostError: network-failure > at post (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:97686:10) > at async downloadEnableBankingTransactions (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:152826:15) > at async syncAccount (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:153222:72) > at async linkEnableBankingAccount (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:153465:28)message: "PostError: network-failure"stack: "Error: PostError: network-failure\n at post (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:97686:10)\n at async downloadEnableBankingTransactions (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:152826:15)\n at async syncAccount (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:153222:72)\n at async linkEnableBankingAccount (https://<my actual url>/kcab/kcab.worker.jUVFVkaN.js:153465:28)"[[Prototype]]: Objectconstructor: ƒ Error()message: ""name: "Error"toString: ƒ toString()[[Prototype]]: Objectmessage: "PostError: network-failure"type: "ServerError"[[Prototype]]: Object > onError @ mutations.ts:533 > ``` > > (Linking works though) Out of interest, are there any logs in your server logs?
Author
Owner

@oskardotglobal commented on GitHub (May 14, 2026):

No, unless I have to enable debug logging or something?

<!-- gh-comment-id:4450095714 --> @oskardotglobal commented on GitHub (May 14, 2026): No, unless I have to enable debug logging or something?
Author
Owner

@tylerlinquata commented on GitHub (May 14, 2026):

The "start date" when creating a new, linked account seems to be ignored. I selected 5/13/2026, but it appears that the entire transaction history of the account synced (371 uncategorized transactions).

Image
<!-- gh-comment-id:4450314241 --> @tylerlinquata commented on GitHub (May 14, 2026): The "start date" when creating a new, linked account seems to be ignored. I selected 5/13/2026, but it appears that the entire transaction history of the account synced (371 uncategorized transactions). <img width="123" height="670" alt="Image" src="https://github.com/user-attachments/assets/03a2e586-af43-404a-aebb-608c9f93e0d5" />
Author
Owner

@geekuality commented on GitHub (May 14, 2026):

I'm now getting errors with one bank (S-Pankki, Finland), but only for two of several accounts there.

EDIT: It is also a bank holiday today in Finland, if that would matter - can't figure out how it could.

May 14 19:15:25 actualbudget node[31679]: 2026-05-14T16:15:25.104Z actual:enable-banking:app Error fetching transactions: EnableBankingError: Wrong transactions period requested
May 14 19:15:25 actualbudget node[31679]:     at handleEnableBankingError (file:///opt/actual/node_modules/@actual-app/sync-server/build/chunks/app-URBBPE6f.js:798:10)
May 14 19:15:25 actualbudget node[31679]:     at request (file:///opt/actual/node_modules/@actual-app/sync-server/build/chunks/app-URBBPE6f.js:879:9)
May 14 19:15:25 actualbudget node[31679]:     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
May 14 19:15:25 actualbudget node[31679]:     at async Object.getAllTransactions (file:///opt/actual/node_modules/@actual-app/sync-server/build/chunks/app-URBBPE6f.js:994:19)
May 14 19:15:25 actualbudget node[31679]:     at async file:///opt/actual/node_modules/@actual-app/sync-server/build/chunks/app-URBBPE6f.js:1309:27 {
May 14 19:15:25 actualbudget node[31679]:   error_type: 'Wrong transactions period requested',
May 14 19:15:25 actualbudget node[31679]:   error_code: 'INVALID_INPUT'
May 14 19:15:25 actualbudget node[31679]: }
<!-- gh-comment-id:4452498559 --> @geekuality commented on GitHub (May 14, 2026): I'm now getting errors with one bank (S-Pankki, Finland), but only for two of several accounts there. EDIT: It is also a bank holiday today in Finland, if that would matter - can't figure out how it could. ``` May 14 19:15:25 actualbudget node[31679]: 2026-05-14T16:15:25.104Z actual:enable-banking:app Error fetching transactions: EnableBankingError: Wrong transactions period requested May 14 19:15:25 actualbudget node[31679]: at handleEnableBankingError (file:///opt/actual/node_modules/@actual-app/sync-server/build/chunks/app-URBBPE6f.js:798:10) May 14 19:15:25 actualbudget node[31679]: at request (file:///opt/actual/node_modules/@actual-app/sync-server/build/chunks/app-URBBPE6f.js:879:9) May 14 19:15:25 actualbudget node[31679]: at process.processTicksAndRejections (node:internal/process/task_queues:95:5) May 14 19:15:25 actualbudget node[31679]: at async Object.getAllTransactions (file:///opt/actual/node_modules/@actual-app/sync-server/build/chunks/app-URBBPE6f.js:994:19) May 14 19:15:25 actualbudget node[31679]: at async file:///opt/actual/node_modules/@actual-app/sync-server/build/chunks/app-URBBPE6f.js:1309:27 { May 14 19:15:25 actualbudget node[31679]: error_type: 'Wrong transactions period requested', May 14 19:15:25 actualbudget node[31679]: error_code: 'INVALID_INPUT' May 14 19:15:25 actualbudget node[31679]: } ```
Author
Owner

@geekuality commented on GitHub (May 14, 2026):

No, unless I have to enable debug logging or something?

You do. Set env DEBUG=actual:enable-banking:app to activate debug only for this plugin.

<!-- gh-comment-id:4452518984 --> @geekuality commented on GitHub (May 14, 2026): > No, unless I have to enable debug logging or something? You do. Set env `DEBUG=actual:enable-banking:app` to activate debug only for this plugin.
Author
Owner

@emiltb commented on GitHub (May 14, 2026):

DEBUG=actual:enable-banking:app

Where to add that? I tried adding it as en var to my compose.yml and redeployed my edge-server, but saw no difference in the log output.

<!-- gh-comment-id:4454693527 --> @emiltb commented on GitHub (May 14, 2026): > DEBUG=actual:enable-banking:app Where to add that? I tried adding it as en var to my compose.yml and redeployed my edge-server, but saw no difference in the log output.
Author
Owner

@emarforio commented on GitHub (May 15, 2026):

Tried out the bank sync and have to say that I love it! This is the first integration that I have gotten to work with EU banks. I have tried out the web interface as well as the JavaScript API and no issues at all using my Swedish bank. Great job!

<!-- gh-comment-id:4459398280 --> @emarforio commented on GitHub (May 15, 2026): Tried out the bank sync and have to say that I love it! This is the first integration that I have gotten to work with EU banks. I have tried out the web interface as well as the JavaScript API and no issues at all using my Swedish bank. Great job!
Author
Owner

@Calychas commented on GitHub (May 16, 2026):

Hey! Thanks a lot for the feature!

I had no problems linking 5 accounts with Erste Bank Poland (former Santander Bank Poland), both personal and business accounts, and Revolut as well

<!-- gh-comment-id:4467019980 --> @Calychas commented on GitHub (May 16, 2026): Hey! Thanks a lot for the feature! I had no problems linking 5 accounts with Erste Bank Poland (former Santander Bank Poland), both personal and business accounts, and Revolut as well
Author
Owner

@insomniacslk commented on GitHub (May 18, 2026):

Worked just fine with N26 and Revolut. When adding Fineco Italy, a traditional bank, I get an empty list of accounts after successful authorization of the main account, as per screenshot

Image
<!-- gh-comment-id:4477748895 --> @insomniacslk commented on GitHub (May 18, 2026): Worked just fine with N26 and Revolut. When adding Fineco Italy, a traditional bank, I get an empty list of accounts after successful authorization of the main account, as per screenshot <img width="2003" height="923" alt="Image" src="https://github.com/user-attachments/assets/2e221134-4128-4138-af0c-e002fe017107" />
Author
Owner

@alcroito commented on GitHub (May 19, 2026):

Tried the new integration with N26 production account.

Noticed the following.

When syncing multiple accounts from the same bank, and setting up sync for all of them, transfer transactions between accounts are not properly set up.
Instead a new Payee gets created.
The one transfer at the bottom was manually created before syncing.

Image
<!-- gh-comment-id:4485066539 --> @alcroito commented on GitHub (May 19, 2026): Tried the new integration with N26 production account. Noticed the following. When syncing multiple accounts from the same bank, and setting up sync for all of them, transfer transactions between accounts are not properly set up. Instead a new Payee gets created. The one transfer at the bottom was manually created before syncing. <img width="2856" height="748" alt="Image" src="https://github.com/user-attachments/assets/b742e207-2696-443e-ae2c-9b691c6c1c97" />
Author
Owner

@riley211 commented on GitHub (May 19, 2026):

Unfortunately this only supports very limited banks in the UK - could we investigate using something like TrueLayer?

<!-- gh-comment-id:4486474542 --> @riley211 commented on GitHub (May 19, 2026): Unfortunately this only supports very limited banks in the UK - could we investigate using something like TrueLayer?
Author
Owner

@filiptrplan commented on GitHub (May 19, 2026):

Worked just fine with N26 and Revolut. When adding Fineco Italy, a traditional bank, I get an empty list of accounts after successful authorization of the main account, as per screenshot
Image

Same with OTP Banka in Slovenia.

<!-- gh-comment-id:4488926240 --> @filiptrplan commented on GitHub (May 19, 2026): > Worked just fine with N26 and Revolut. When adding Fineco Italy, a traditional bank, I get an empty list of accounts after successful authorization of the main account, as per screenshot > <img alt="Image" width="2000" height="922" src="https://private-user-images.githubusercontent.com/2356960/594061369-2e221134-4128-4138-af0c-e002fe017107.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzkyMDE5OTUsIm5iZiI6MTc3OTIwMTY5NSwicGF0aCI6Ii8yMzU2OTYwLzU5NDA2MTM2OS0yZTIyMTEzNC00MTI4LTQxMzgtYWYwYy1lMDAyZmUwMTcxMDcucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDUxOSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA1MTlUMTQ0MTM1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9Zjg0NmU0NWU0NzFjMGJjNmIzMzFiMDYyN2FkODlmNzUxYjJjMWE2NDcyMmU2ODU2MzYzMTI1NjZhMTg2ZjNmZiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.gUaDyw5uobWxldxygLK0KvlxLqqrHT8gqFLk0mX-8Wo"> Same with OTP Banka in Slovenia.
Author
Owner

@matt-fidd commented on GitHub (May 19, 2026):

I'd suggest that a first port of call on some of these issues would be to contact Enable Banking and see if they can provide any insight.

<!-- gh-comment-id:4489187895 --> @matt-fidd commented on GitHub (May 19, 2026): I'd suggest that a first port of call on some of these issues would be to contact Enable Banking and see if they can provide any insight.
Author
Owner

@mnogueron commented on GitHub (May 20, 2026):

I'm now getting errors with one bank (S-Pankki, Finland), but only for two of several accounts there.

EDIT: It is also a bank holiday today in Finland, if that would matter - can't figure out how it could.

May 14 19:15:25 actualbudget node[31679]: 2026-05-14T16:15:25.104Z actual:enable-banking:app Error fetching transactions: EnableBankingError: Wrong transactions period requested
May 14 19:15:25 actualbudget node[31679]:     at handleEnableBankingError (file:///opt/actual/node_modules/@actual-app/sync-server/build/chunks/app-URBBPE6f.js:798:10)
May 14 19:15:25 actualbudget node[31679]:     at request (file:///opt/actual/node_modules/@actual-app/sync-server/build/chunks/app-URBBPE6f.js:879:9)
May 14 19:15:25 actualbudget node[31679]:     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
May 14 19:15:25 actualbudget node[31679]:     at async Object.getAllTransactions (file:///opt/actual/node_modules/@actual-app/sync-server/build/chunks/app-URBBPE6f.js:994:19)
May 14 19:15:25 actualbudget node[31679]:     at async file:///opt/actual/node_modules/@actual-app/sync-server/build/chunks/app-URBBPE6f.js:1309:27 {
May 14 19:15:25 actualbudget node[31679]:   error_type: 'Wrong transactions period requested',
May 14 19:15:25 actualbudget node[31679]:   error_code: 'INVALID_INPUT'
May 14 19:15:25 actualbudget node[31679]: }

You can check on EB console all the requests made by the integration. If you have errors, you can check EB's error, plus the bank layer error.

On my side, the initial pull worked flawlessly, now if I try to sync it fails and EB and my bank report an invalid dateFrom with a WRONG_TRANSACTIONS_PERIOD on EB's side.

<!-- gh-comment-id:4493466720 --> @mnogueron commented on GitHub (May 20, 2026): > I'm now getting errors with one bank (S-Pankki, Finland), but only for two of several accounts there. > > EDIT: It is also a bank holiday today in Finland, if that would matter - can't figure out how it could. > > ``` > May 14 19:15:25 actualbudget node[31679]: 2026-05-14T16:15:25.104Z actual:enable-banking:app Error fetching transactions: EnableBankingError: Wrong transactions period requested > May 14 19:15:25 actualbudget node[31679]: at handleEnableBankingError (file:///opt/actual/node_modules/@actual-app/sync-server/build/chunks/app-URBBPE6f.js:798:10) > May 14 19:15:25 actualbudget node[31679]: at request (file:///opt/actual/node_modules/@actual-app/sync-server/build/chunks/app-URBBPE6f.js:879:9) > May 14 19:15:25 actualbudget node[31679]: at process.processTicksAndRejections (node:internal/process/task_queues:95:5) > May 14 19:15:25 actualbudget node[31679]: at async Object.getAllTransactions (file:///opt/actual/node_modules/@actual-app/sync-server/build/chunks/app-URBBPE6f.js:994:19) > May 14 19:15:25 actualbudget node[31679]: at async file:///opt/actual/node_modules/@actual-app/sync-server/build/chunks/app-URBBPE6f.js:1309:27 { > May 14 19:15:25 actualbudget node[31679]: error_type: 'Wrong transactions period requested', > May 14 19:15:25 actualbudget node[31679]: error_code: 'INVALID_INPUT' > May 14 19:15:25 actualbudget node[31679]: } > ``` You can check on EB console all the requests made by the integration. If you have errors, you can check EB's error, plus the bank layer error. On my side, the initial pull worked flawlessly, now if I try to sync it fails and EB and my bank report an invalid `dateFrom` with a `WRONG_TRANSACTIONS_PERIOD` on EB's side.
Author
Owner

@geekuality commented on GitHub (May 20, 2026):

@matt-fidd @mnogueron Good pointers, I did find irregularities from EB request logs - did submit a support ticket there. 😌

<!-- gh-comment-id:4497321322 --> @geekuality commented on GitHub (May 20, 2026): @matt-fidd @mnogueron Good pointers, I did find irregularities from EB request logs - did submit a support ticket there. 😌
Author
Owner

@filiptrplan commented on GitHub (May 21, 2026):

Worked just fine with N26 and Revolut. When adding Fineco Italy, a traditional bank, I get an empty list of accounts after successful authorization of the main account, as per screenshot
Image

Same with OTP Banka in Slovenia.

Nevermind, it was a stupid mistake. I have a restricted production app and forgot to link the account in the EB dashboard first.

<!-- gh-comment-id:4511171800 --> @filiptrplan commented on GitHub (May 21, 2026): > > Worked just fine with N26 and Revolut. When adding Fineco Italy, a traditional bank, I get an empty list of accounts after successful authorization of the main account, as per screenshot > > <img alt="Image" width="2000" height="922" src="https://private-user-images.githubusercontent.com/2356960/594061369-2e221134-4128-4138-af0c-e002fe017107.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzkyMDE5OTUsIm5iZiI6MTc3OTIwMTY5NSwicGF0aCI6Ii8yMzU2OTYwLzU5NDA2MTM2OS0yZTIyMTEzNC00MTI4LTQxMzgtYWYwYy1lMDAyZmUwMTcxMDcucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDUxOSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA1MTlUMTQ0MTM1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9Zjg0NmU0NWU0NzFjMGJjNmIzMzFiMDYyN2FkODlmNzUxYjJjMWE2NDcyMmU2ODU2MzYzMTI1NjZhMTg2ZjNmZiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.gUaDyw5uobWxldxygLK0KvlxLqqrHT8gqFLk0mX-8Wo"> > > Same with OTP Banka in Slovenia. Nevermind, it was a stupid mistake. I have a restricted production app and forgot to link the account in the EB dashboard first.
Author
Owner

@insomniacslk commented on GitHub (May 21, 2026):

...I did the same mistake, thanks for catching that. Feedback for the developers: if there's an error message from EB, it could be bubbled up? Alternatively there could still be a warning from Actual that this could be caused by an account that hasn't been linked on EB

May 21, 2026 20:05:32 Filip Trplan @.***>:

 [Image]*filiptrplan* left a comment (actualbudget/actual#7799)[https://github.com/actualbudget/actual/issues/7799#issuecomment-4511171800]

Worked just fine with N26 and Revolut. When adding Fineco Italy, a traditional bank, I get an empty list of accounts after successful authorization of the main account, as per screenshot
[Image][Image][https://private-user-images.githubusercontent.com/2356960/594061369-2e221134-4128-4138-af0c-e002fe017107.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzkyMDE5OTUsIm5iZiI6MTc3OTIwMTY5NSwicGF0aCI6Ii8yMzU2OTYwLzU5NDA2MTM2OS0yZTIyMTEzNC00MTI4LTQxMzgtYWYwYy1lMDAyZmUwMTcxMDcucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDUxOSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA1MTlUMTQ0MTM1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9Zjg0NmU0NWU0NzFjMGJjNmIzMzFiMDYyN2FkODlmNzUxYjJjMWE2NDcyMmU2ODU2MzYzMTI1NjZhMTg2ZjNmZiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.gUaDyw5uobWxldxygLK0KvlxLqqrHT8gqFLk0mX-8Wo][https://private-user-images.githubusercontent.com/2356960/594061369-2e221134-4128-4138-af0c-e002fe017107.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzkyMDE5OTUsIm5iZiI6MTc3OTIwMTY5NSwicGF0aCI6Ii8yMzU2OTYwLzU5NDA2MTM2OS0yZTIyMTEzNC00MTI4LTQxMzgtYWYwYy1lMDAyZmUwMTcxMDcucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDUxOSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA1MTlUMTQ0MTM1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9Zjg0NmU0NWU0NzFjMGJjNmIzMzFiMDYyN2FkODlmNzUxYjJjMWE2NDcyMmU2ODU2MzYzMTI1NjZhMTg2ZjNmZiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.gUaDyw5uobWxldxygLK0KvlxLqqrHT8gqFLk0mX-8Wo]

Same with OTP Banka in Slovenia.

Nevermind, it was a stupid mistake. I have a restricted production app and forgot to link the account in the EB dashboard first.


Reply to this email directly, view it on GitHub[https://github.com/actualbudget/actual/issues/7799#issuecomment-4511171800], or unsubscribe[https://github.com/notifications/unsubscribe-auth/AAR7NYD3JSUVWS5GN5NL7Z3435AOVAVCNFSM6AAAAACYZVPVKWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHM2DKMJRGE3TCOBQGA].
Triage notifications on the go with GitHub Mobile for iOS[https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675] or Android[https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub].
You are receiving this because you commented.
[Tracking image][https://github.com/notifications/beacon/AAR7NYFJK33GHVFR4GICPZT435AOVBFCNFSM6AAAAACYZVPVKWWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTYAAAAACDHDATMKM4TFMFZW63VHMNXW23LFNZ2A.gif]

<!-- gh-comment-id:4511296020 --> @insomniacslk commented on GitHub (May 21, 2026): ...I did the same mistake, thanks for catching that. Feedback for the developers: if there's an error message from EB, it could be bubbled up? Alternatively there could still be a warning from Actual that this could be caused by an account that hasn't been linked on EB May 21, 2026 20:05:32 Filip Trplan ***@***.***>: > > [Image]*filiptrplan* left a comment (actualbudget/actual#7799)[https://github.com/actualbudget/actual/issues/7799#issuecomment-4511171800] > > > Worked just fine with N26 and Revolut. When adding Fineco Italy, a traditional bank, I get an empty list of accounts after successful authorization of the main account, as per screenshot > [Image][Image][https://private-user-images.githubusercontent.com/2356960/594061369-2e221134-4128-4138-af0c-e002fe017107.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzkyMDE5OTUsIm5iZiI6MTc3OTIwMTY5NSwicGF0aCI6Ii8yMzU2OTYwLzU5NDA2MTM2OS0yZTIyMTEzNC00MTI4LTQxMzgtYWYwYy1lMDAyZmUwMTcxMDcucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDUxOSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA1MTlUMTQ0MTM1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9Zjg0NmU0NWU0NzFjMGJjNmIzMzFiMDYyN2FkODlmNzUxYjJjMWE2NDcyMmU2ODU2MzYzMTI1NjZhMTg2ZjNmZiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.gUaDyw5uobWxldxygLK0KvlxLqqrHT8gqFLk0mX-8Wo][https://private-user-images.githubusercontent.com/2356960/594061369-2e221134-4128-4138-af0c-e002fe017107.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzkyMDE5OTUsIm5iZiI6MTc3OTIwMTY5NSwicGF0aCI6Ii8yMzU2OTYwLzU5NDA2MTM2OS0yZTIyMTEzNC00MTI4LTQxMzgtYWYwYy1lMDAyZmUwMTcxMDcucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDUxOSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA1MTlUMTQ0MTM1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9Zjg0NmU0NWU0NzFjMGJjNmIzMzFiMDYyN2FkODlmNzUxYjJjMWE2NDcyMmU2ODU2MzYzMTI1NjZhMTg2ZjNmZiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.gUaDyw5uobWxldxygLK0KvlxLqqrHT8gqFLk0mX-8Wo] > > Same with OTP Banka in Slovenia. > > Nevermind, it was a stupid mistake. I have a restricted production app and forgot to link the account in the EB dashboard first. > > — > Reply to this email directly, view it on GitHub[https://github.com/actualbudget/actual/issues/7799#issuecomment-4511171800], or unsubscribe[https://github.com/notifications/unsubscribe-auth/AAR7NYD3JSUVWS5GN5NL7Z3435AOVAVCNFSM6AAAAACYZVPVKWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHM2DKMJRGE3TCOBQGA]. > Triage notifications on the go with GitHub Mobile for iOS[https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675] or Android[https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub]. > You are receiving this because you commented. > [Tracking image][https://github.com/notifications/beacon/AAR7NYFJK33GHVFR4GICPZT435AOVBFCNFSM6AAAAACYZVPVKWWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTYAAAAACDHDATMKM4TFMFZW63VHMNXW23LFNZ2A.gif] >
Author
Owner

@alanwflood commented on GitHub (May 22, 2026):

I've spotted on issue where Bank of Ireland will only allow you to log in as a business user, it gives no option to log in with a personal account.

<!-- gh-comment-id:4517328010 --> @alanwflood commented on GitHub (May 22, 2026): I've spotted on issue where Bank of Ireland will only allow you to log in as a business user, it gives no option to log in with a personal account.
Author
Owner

@mnil commented on GitHub (May 22, 2026):

On my side, the initial pull worked flawlessly, now if I try to sync it fails and EB and my bank report an invalid dateFrom with a WRONG_TRANSACTIONS_PERIOD on EB's side.

@mnogueron Do you know if this a problem with actualserver/EB integration or EB itself? I am getting the same problem, initial link and sync works, but the day after I get an error with WRONG_TRANSACTIONS_PERIOD.

<!-- gh-comment-id:4518173899 --> @mnil commented on GitHub (May 22, 2026): > On my side, the initial pull worked flawlessly, now if I try to sync it fails and EB and my bank report an invalid `dateFrom` with a `WRONG_TRANSACTIONS_PERIOD` on EB's side. @mnogueron Do you know if this a problem with actualserver/EB integration or EB itself? I am getting the same problem, initial link and sync works, but the day after I get an error with `WRONG_TRANSACTIONS_PERIOD`.
Author
Owner

@mnogueron commented on GitHub (May 22, 2026):

@mnil It seems EB obfuscate any query params which makes debugging impossible.
The initial calls shows the same call to a /transaction endpoint to my bank with dateFrom=0000-00-00&dateTo=0000-00-00 which works fine, but the next ones have the same params and fails.
I have a strong feeling that these zeros are fillers.

Although, I also see that my app is flagged as restricted and I can ask to make it unrestricted. This is very blurry as to what it's supposed to do. Are you in the same situation?

<!-- gh-comment-id:4523389242 --> @mnogueron commented on GitHub (May 22, 2026): @mnil It seems EB obfuscate any query params which makes debugging impossible. The initial calls shows the same call to a `/transaction` endpoint to my bank with `dateFrom=0000-00-00&dateTo=0000-00-00` which works fine, but the next ones have the same params and fails. I have a strong feeling that these zeros are fillers. Although, I also see that my app is flagged as restricted and I can ask to make it unrestricted. This is very blurry as to what it's supposed to do. Are you in the same situation?
Author
Owner

@geekuality commented on GitHub (May 23, 2026):

I got a reply from EB regrding that WRONG_TRANSACTIONS_PERIOD error:

Thank you for your email.

Just to let you know that you get an error because the bank limits historical transactions data fetch to 3 minutes after authentication.
Once 3 minutes pass you can fetch transactions data up to 90 days. In the request where you received an error I noticed that you fetched transactions for 91 days.

Let me know if I can help you with anything else.

<!-- gh-comment-id:4524324135 --> @geekuality commented on GitHub (May 23, 2026): I got a reply from EB regrding that `WRONG_TRANSACTIONS_PERIOD` error: > Thank you for your email. > > Just to let you know that you get an error because the bank limits historical transactions data fetch to 3 minutes after authentication. Once 3 minutes pass you can fetch transactions data up to 90 days. In the request where you received an error I noticed that you fetched transactions for 91 days. > > Let me know if I can help you with anything else.
Author
Owner

@mnil commented on GitHub (May 23, 2026):

I got a reply from EB regrding that WRONG_TRANSACTIONS_PERIOD error:

In the request where you received an error I noticed that you fetched transactions for 91 days.

thanks for this, I think it's likely it's and off-by-one error in the date handling so created a PR: https://github.com/actualbudget/actual/pull/7930

Not sure how to test it in production env though.

<!-- gh-comment-id:4524525613 --> @mnil commented on GitHub (May 23, 2026): > I got a reply from EB regrding that `WRONG_TRANSACTIONS_PERIOD` error: > >> In the request where you received an error I noticed that you fetched transactions for 91 days. thanks for this, I think it's likely it's and off-by-one error in the date handling so created a PR: https://github.com/actualbudget/actual/pull/7930 Not sure how to test it in production env though.
Author
Owner

@mnogueron commented on GitHub (May 23, 2026):

I got a reply from EB regrding that WRONG_TRANSACTIONS_PERIOD error:

In the request where you received an error I noticed that you fetched transactions for 91 days.

thanks for this, I think it's likely it's and off-by-one error in the date handling so created a PR: https://github.com/actualbudget/actual/pull/7930

Not sure how to test it in production env though.

I was about with my dev instance but now I'm having an Invalid status PSU-IP-Address on my dev instance.

I'll create a ticket on EB's side.

<!-- gh-comment-id:4525687878 --> @mnogueron commented on GitHub (May 23, 2026): > > I got a reply from EB regrding that `WRONG_TRANSACTIONS_PERIOD` error: > > > >> In the request where you received an error I noticed that you fetched transactions for 91 days. > > thanks for this, I think it's likely it's and off-by-one error in the date handling so created a PR: https://github.com/actualbudget/actual/pull/7930 > > Not sure how to test it in production env though. I was about with my dev instance but now I'm having an `Invalid status PSU-IP-Address` on my dev instance. I'll create a ticket on EB's side.
Author
Owner

@stevenhansel commented on GitHub (May 24, 2026):

I'm using Commerzbank, and there is a problem in the "pending" transactions that all the dates object are empty.

The Enable Banking API was successful and everything from the API side is working, only from the client side worker is failing, due to the empty dates.

I was able to resolve this temporarily by going to Bank Sync > Edit the Enable Banking Bank Sync Settings > Uncheck the Import Pending Transactions Checkbox.

The Pending Logs from the Enable Banking API:

{
  "pending": [
    {
      "entry_reference": null,
      "merchant_category_code": null,
      "transaction_amount": {
        "currency": "EUR",
        "amount": "23"
      },
      "creditor": {
        "name": "XXX GmbH",
        "postal_address": null,
        "organisation_id": null,
        "private_id": null,
        "contact_details": null
      },
      "creditor_account": null,
      "creditor_agent": null,
      "debtor": null,
      "debtor_account": {
        "iban": "XXXX",
        "other": null
      },
      "debtor_agent": null,
      "bank_transaction_code": null,
      "credit_debit_indicator": "DBIT",
      "status": "PDNG",
      "booking_date": null,
      "value_date": null,
      "transaction_date": null,
      "balance_after_transaction": null,
      "reference_number": null,
      "reference_number_schema": null,
      "remittance_information": [],
      "debtor_account_additional_identification": null,
      "creditor_account_additional_identification": null,
      "exchange_rate": null,
      "note": null,
      "transaction_id": null,
      "transactionId": "",
      "date": "",
      "bookingDate": "",
      "valueDate": null,
      "transactionAmount": {
        "amount": "-23",
        "currency": "EUR"
      },
      "payeeName": "XXXX GmbH",
      "booked": false
    },
    {
      "entry_reference": null,
      "merchant_category_code": null,
      "transaction_amount": {
        "currency": "EUR",
        "amount": "6"
      },
      "creditor": {
        "name": "XXXX GmbH",
        "postal_address": null,
        "organisation_id": null,
        "private_id": null,
        "contact_details": null
      },
      "creditor_account": null,
      "creditor_agent": null,
      "debtor": null,
      "debtor_account": {
        "iban": "XXXX",
        "other": null
      },
      "debtor_agent": null,
      "bank_transaction_code": null,
      "credit_debit_indicator": "DBIT",
      "status": "PDNG",
      "booking_date": null,
      "value_date": null,
      "transaction_date": null,
      "balance_after_transaction": null,
      "reference_number": null,
      "reference_number_schema": null,
      "remittance_information": [],
      "debtor_account_additional_identification": null,
      "creditor_account_additional_identification": null,
      "exchange_rate": null,
      "note": null,
      "transaction_id": null,
      "transactionId": "",
      "date": "",
      "bookingDate": "",
      "valueDate": null,
      "transactionAmount": {
        "amount": "-6",
        "currency": "EUR"
      },
      "payeeName": "XXXX GmbH",
      "booked": false
    }
  ]
}

Console errors from the Browser:

[Exception] 
Object { message: 'Failed syncing account "Commerzbank."' }
​
message: 'Failed syncing account "Commerzbank."'
​
<prototype>: Object { … }
​​
__defineGetter__: function __defineGetter__()
​​
__defineSetter__: function __defineSetter__()
​​
__lookupGetter__: function __lookupGetter__()
​​
__lookupSetter__: function __lookupSetter__()
​​
__proto__: 
​​
constructor: function Object()
​​
hasOwnProperty: function hasOwnProperty()
���​
isPrototypeOf: function isPrototypeOf()
​​
propertyIsEnumerable: function propertyIsEnumerable()
​​
toLocaleString: function toLocaleString()
​​
toString: function toString()
​​
valueOf: function valueOf()
​​
<get __proto__()>: function __proto__()
​​​
length: 0
​​​
name: "get __proto__"
​​​
<prototype>: function ()
​​
<set __proto__()>: function __proto__()
kcab.worker.Cn6Jnyv4.js:195:12
Internal error: CompileError@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49395:21
badDateFormat@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49515:9
castInput@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49541:84
val@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49568:26
valArray/<@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49576:37
valArray@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49576:14
compileOp<@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49761:35
saveStack/<@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49590:20
compileConditions/</compiled<@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49829:12
compileConditions/<@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49819:46
compileConditions@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49818:32
compileOr@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49836:32
compileConditions/</compiled<@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49825:13
compileConditions/<@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49819:46
compileConditions@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49818:32
compileAnd@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49842:32
compileWhere<@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49847:10
saveStack/<@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49590:20
compileQuery@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:50003:57
compileAndRunAqlQuery@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:51950:44
aqlQuery@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:52506:10
getRunningBalanceBeforeTransaction@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:152296:35
prepareTransactionForRules@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:152325:22
<!-- gh-comment-id:4528902828 --> @stevenhansel commented on GitHub (May 24, 2026): I'm using Commerzbank, and there is a problem in the `"pending"` transactions that all the dates object are empty. The Enable Banking API was successful and everything from the API side is working, only from the client side worker is failing, due to the empty dates. I was able to resolve this temporarily by going to Bank Sync > Edit the Enable Banking Bank Sync Settings > Uncheck the Import Pending Transactions Checkbox. The Pending Logs from the Enable Banking API: ``` { "pending": [ { "entry_reference": null, "merchant_category_code": null, "transaction_amount": { "currency": "EUR", "amount": "23" }, "creditor": { "name": "XXX GmbH", "postal_address": null, "organisation_id": null, "private_id": null, "contact_details": null }, "creditor_account": null, "creditor_agent": null, "debtor": null, "debtor_account": { "iban": "XXXX", "other": null }, "debtor_agent": null, "bank_transaction_code": null, "credit_debit_indicator": "DBIT", "status": "PDNG", "booking_date": null, "value_date": null, "transaction_date": null, "balance_after_transaction": null, "reference_number": null, "reference_number_schema": null, "remittance_information": [], "debtor_account_additional_identification": null, "creditor_account_additional_identification": null, "exchange_rate": null, "note": null, "transaction_id": null, "transactionId": "", "date": "", "bookingDate": "", "valueDate": null, "transactionAmount": { "amount": "-23", "currency": "EUR" }, "payeeName": "XXXX GmbH", "booked": false }, { "entry_reference": null, "merchant_category_code": null, "transaction_amount": { "currency": "EUR", "amount": "6" }, "creditor": { "name": "XXXX GmbH", "postal_address": null, "organisation_id": null, "private_id": null, "contact_details": null }, "creditor_account": null, "creditor_agent": null, "debtor": null, "debtor_account": { "iban": "XXXX", "other": null }, "debtor_agent": null, "bank_transaction_code": null, "credit_debit_indicator": "DBIT", "status": "PDNG", "booking_date": null, "value_date": null, "transaction_date": null, "balance_after_transaction": null, "reference_number": null, "reference_number_schema": null, "remittance_information": [], "debtor_account_additional_identification": null, "creditor_account_additional_identification": null, "exchange_rate": null, "note": null, "transaction_id": null, "transactionId": "", "date": "", "bookingDate": "", "valueDate": null, "transactionAmount": { "amount": "-6", "currency": "EUR" }, "payeeName": "XXXX GmbH", "booked": false } ] } ``` Console errors from the Browser: ``` [Exception] Object { message: 'Failed syncing account "Commerzbank."' } ​ message: 'Failed syncing account "Commerzbank."' ​ <prototype>: Object { … } ​​ __defineGetter__: function __defineGetter__() ​​ __defineSetter__: function __defineSetter__() ​​ __lookupGetter__: function __lookupGetter__() ​​ __lookupSetter__: function __lookupSetter__() ​​ __proto__: ​​ constructor: function Object() ​​ hasOwnProperty: function hasOwnProperty() ���​ isPrototypeOf: function isPrototypeOf() ​​ propertyIsEnumerable: function propertyIsEnumerable() ​​ toLocaleString: function toLocaleString() ​​ toString: function toString() ​​ valueOf: function valueOf() ​​ <get __proto__()>: function __proto__() ​​​ length: 0 ​​​ name: "get __proto__" ​​​ <prototype>: function () ​​ <set __proto__()>: function __proto__() kcab.worker.Cn6Jnyv4.js:195:12 ``` ``` Internal error: CompileError@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49395:21 badDateFormat@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49515:9 castInput@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49541:84 val@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49568:26 valArray/<@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49576:37 valArray@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49576:14 compileOp<@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49761:35 saveStack/<@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49590:20 compileConditions/</compiled<@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49829:12 compileConditions/<@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49819:46 compileConditions@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49818:32 compileOr@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49836:32 compileConditions/</compiled<@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49825:13 compileConditions/<@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49819:46 compileConditions@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49818:32 compileAnd@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49842:32 compileWhere<@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49847:10 saveStack/<@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:49590:20 compileQuery@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:50003:57 compileAndRunAqlQuery@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:51950:44 aqlQuery@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:52506:10 getRunningBalanceBeforeTransaction@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:152296:35 prepareTransactionForRules@https://example.com/kcab/kcab.worker.Cn6Jnyv4.js:152325:22 ```
Author
Owner

@mnil commented on GitHub (May 25, 2026):

I got a reply from EB regrding that WRONG_TRANSACTIONS_PERIOD error:

In the request where you received an error I noticed that you fetched transactions for 91 days.

thanks for this, I think it's likely it's and off-by-one error in the date handling so created a PR: #7930

Not sure how to test it in production env though.

@matt-fidd or @MatissJanis I have now tested this on my local instance and it fixes the problems I was having. Would be nice with a review before you cut the 2026.6 release.

<!-- gh-comment-id:4531931119 --> @mnil commented on GitHub (May 25, 2026): > > I got a reply from EB regrding that `WRONG_TRANSACTIONS_PERIOD` error: > > > In the request where you received an error I noticed that you fetched transactions for 91 days. > > thanks for this, I think it's likely it's and off-by-one error in the date handling so created a PR: [#7930](https://github.com/actualbudget/actual/pull/7930) > > Not sure how to test it in production env though. @matt-fidd or @MatissJanis I have now tested this on my local instance and it fixes the problems I was having. Would be nice with a review before you cut the 2026.6 release.
Author
Owner

@DmitriiGoi commented on GitHub (May 25, 2026):

i was using the feature from branch for one month, and found out no bugs, thx for the development, happy to have this feature in release version

<!-- gh-comment-id:4537404779 --> @DmitriiGoi commented on GitHub (May 25, 2026): i was using the feature from branch for one month, and found out no bugs, thx for the development, happy to have this feature in release version
Author
Owner

@nickmansrob commented on GitHub (May 26, 2026):

Very happy to see this implemented! Found one small bug: when going to the bank sync page and clicking 'Link account' on an already existing, manual account and then following the linking process, I cannot click 'Link accounts' in the Link Accounts modal. The Actual Budget account was already prefilled since I use the 'Link account' button. When clicking on the account and selecting it again, the 'Link accounts' button became clickable.

<!-- gh-comment-id:4544148340 --> @nickmansrob commented on GitHub (May 26, 2026): Very happy to see this implemented! Found one small bug: when going to the bank sync page and clicking 'Link account' on an already existing, manual account and then following the linking process, I cannot click 'Link accounts' in the Link Accounts modal. The Actual Budget account was already prefilled since I use the 'Link account' button. When clicking on the account and selecting it again, the 'Link accounts' button became clickable.
Author
Owner

@chrismin13 commented on GitHub (May 26, 2026):

...I did the same mistake, thanks for catching that. Feedback for the developers: if there's an error message from EB, it could be bubbled up? Alternatively there could still be a warning from Actual that this could be caused by an account that hasn't been linked on EB

May 21, 2026 20:05:32 Filip Trplan @.***>:

+1 on this, plus we need some more docs before this goes in a production build, as it isn't clear that:
a) you can only find this via the browser for the server, not the app or locally
b) you need https working
c) you need to FIRST connect the app from Enable, then through Actual

And one more bug: the verification for the Application ID field isn't very strict, I had a ) at the end of my UUID and it was just accepted, leading to an empty list of banks after selecting my country, which took me a sec to figure out. Not a big deal, just something that could be easily solved and improve the experience for everyone.

Thanks for your efforts!

<!-- gh-comment-id:4546667372 --> @chrismin13 commented on GitHub (May 26, 2026): > ...I did the same mistake, thanks for catching that. Feedback for the developers: if there's an error message from EB, it could be bubbled up? Alternatively there could still be a warning from Actual that this could be caused by an account that hasn't been linked on EB > > May 21, 2026 20:05:32 Filip Trplan ***@***.***>: > […](#) +1 on this, plus we need some more docs before this goes in a production build, as it isn't clear that: a) you can only find this via the browser for the server, not the app or locally b) you need https working c) you need to FIRST connect the app from Enable, then through Actual And one more bug: the verification for the Application ID field isn't very strict, I had a `)` at the end of my UUID and it was just accepted, leading to an empty list of banks after selecting my country, which took me a sec to figure out. Not a big deal, just something that could be easily solved and improve the experience for everyone. Thanks for your efforts!
Author
Owner

@matt-fidd commented on GitHub (May 26, 2026):

If anyone feels like writing up some docs before this is released at the start of next month, that would be really useful!

<!-- gh-comment-id:4547317011 --> @matt-fidd commented on GitHub (May 26, 2026): If anyone feels like writing up some docs before this is released at the start of next month, that would be really useful!
Author
Owner

@mnil commented on GitHub (May 26, 2026):

If anyone feels like writing up some docs before this is released at the start of next month, that would be really useful!

I wrote up something here: https://github.com/actualbudget/actual/pull/7961/changes#diff-b1eec69c3d5896824cacc6c465d172a5fbb2756894eb9c887c663d1bda4ec059

I don't consider them complete but not sure what else is needed, so please add feedback.

<!-- gh-comment-id:4547526615 --> @mnil commented on GitHub (May 26, 2026): > If anyone feels like writing up some docs before this is released at the start of next month, that would be really useful! I wrote up something here: https://github.com/actualbudget/actual/pull/7961/changes#diff-b1eec69c3d5896824cacc6c465d172a5fbb2756894eb9c887c663d1bda4ec059 I don't consider them complete but not sure what else is needed, so please add feedback.
Author
Owner

@mnil commented on GitHub (May 31, 2026):

@matt-fidd @MatissJanis This might be a candidate for cherry-picking before release, I will try to get it through CI ASAP,

IMO it's quite problematic when linking accounts from the account page without this fix.

<!-- gh-comment-id:4586463336 --> @mnil commented on GitHub (May 31, 2026): @matt-fidd @MatissJanis This might be a candidate for cherry-picking before release, I will try to get it through CI ASAP, - https://github.com/actualbudget/actual/pull/8006 IMO it's quite problematic when linking accounts from the account page without this fix.
Author
Owner

@MatissJanis commented on GitHub (May 31, 2026):

That one is a bit too high for my taste of risk (too short period until the next release to catch regressions there).

Lets keep it for the 26.7.0 release.

<!-- gh-comment-id:4587912650 --> @MatissJanis commented on GitHub (May 31, 2026): That one is a bit too high for my taste of risk (too short period until the next release to catch regressions there). Lets keep it for the 26.7.0 release.
Author
Owner

@mnil commented on GitHub (Jun 1, 2026):

i updated to the latest version (v26.6.0) but the enable banking option doesnt appear

@mjtf3 did you follow the docs? i.e. enabled the experimental feature?

<!-- gh-comment-id:4594857492 --> @mnil commented on GitHub (Jun 1, 2026): > i updated to the latest version (v26.6.0) but the enable banking option doesnt appear @mjtf3 did you follow the [docs](https://actualbudget.org/docs/advanced/bank-sync/enable-banking)? i.e. enabled the experimental feature?
Author
Owner

@bartoszsporek commented on GitHub (Jun 1, 2026):

I've spotted on issue where Bank of Ireland will only allow you to log in as a business user, it gives no option to log in with a personal account.

Exactly the same here with mBank (Poland)

<!-- gh-comment-id:4595355571 --> @bartoszsporek commented on GitHub (Jun 1, 2026): > I've spotted on issue where Bank of Ireland will only allow you to log in as a business user, it gives no option to log in with a personal account. Exactly the same here with mBank (Poland)
Author
Owner

@matt-fidd commented on GitHub (Jun 1, 2026):

I've spotted on issue where Bank of Ireland will only allow you to log in as a business user, it gives no option to log in with a personal account.

Exactly the same here with mBank (Poland)

What banks and accounts are provided is down to Enable Banking, you'll need to open a ticket with them about that

<!-- gh-comment-id:4595457108 --> @matt-fidd commented on GitHub (Jun 1, 2026): > > I've spotted on issue where Bank of Ireland will only allow you to log in as a business user, it gives no option to log in with a personal account. > > Exactly the same here with mBank (Poland) What banks and accounts are provided is down to Enable Banking, you'll need to open a ticket with them about that
Author
Owner

@bartoszsporek commented on GitHub (Jun 1, 2026):

I've spotted on issue where Bank of Ireland will only allow you to log in as a business user, it gives no option to log in with a personal account.

Exactly the same here with mBank (Poland)

What banks and accounts are provided is down to Enable Banking, you'll need to open a ticket with them about that

Not sure since earlier I was using Enable Actual for syncing and it worked fine, so it's not Enable Banking issue.

<!-- gh-comment-id:4596307373 --> @bartoszsporek commented on GitHub (Jun 1, 2026): > > > I've spotted on issue where Bank of Ireland will only allow you to log in as a business user, it gives no option to log in with a personal account. > > > > Exactly the same here with mBank (Poland) > > What banks and accounts are provided is down to Enable Banking, you'll need to open a ticket with them about that Not sure since earlier I was using Enable Actual for syncing and it worked fine, so it's not Enable Banking issue.
Author
Owner

@wolepp commented on GitHub (Jun 1, 2026):

I've spotted on issue where Bank of Ireland will only allow you to log in as a business user, it gives no option to log in with a personal account.

Exactly the same here with mBank (Poland)

What banks and accounts are provided is down to Enable Banking, you'll need to open a ticket with them about that

In Enable Banking you can choose either "Personal" or "Business" account. First one redirects to personal account, while the business redirects to business one.
However in Actual Budget there is only one "mBank" option, and it redirects to the business one. The expected case would be to provide both options, or at least to redirect to the "personal" option (I suspect this is much more used use case)

Image

It looks like in enablebanking.ts there is no info about "Usage" from the Enable Banking API: AccountResource.usage and Usage enum See Nustinua's response

<!-- gh-comment-id:4596331853 --> @wolepp commented on GitHub (Jun 1, 2026): > > > I've spotted on issue where Bank of Ireland will only allow you to log in as a business user, it gives no option to log in with a personal account. > > > > > > Exactly the same here with mBank (Poland) > > What banks and accounts are provided is down to Enable Banking, you'll need to open a ticket with them about that In Enable Banking you can choose either "Personal" or "Business" account. First one redirects to personal account, while the business redirects to business one. However in Actual Budget there is only one "mBank" option, and it redirects to the business one. The expected case would be to provide both options, or at least to redirect to the "personal" option (I suspect this is much more used use case) <img width="528" height="198" alt="Image" src="https://github.com/user-attachments/assets/fba82c6f-9b23-4bdf-adde-4b9642159f7b" /> ~~It looks like in [`enablebanking.ts`](https://github.com/actualbudget/actual/pull/7345/changes#diff-0aad43f1cedd49f497268786a035963acde52f57b8338a13c690f5738eb773ea) there is no info about "Usage" from the Enable Banking API: [`AccountResource.usage`](https://enablebanking.com/docs/api/reference/#accountresource) and [`Usage` enum](https://enablebanking.com/docs/api/reference/#usage)~~ See [Nustinua's response](https://github.com/actualbudget/actual/issues/7799#issuecomment-4596442404)
Author
Owner

@Nustinua commented on GitHub (Jun 1, 2026):

I opened a PR for this here: #8028

The Enable Banking request field is psu_type rather than PSUType.

The PR adds a Usage type selection in the bank linking form, defaults it to personal, and forwards the selected value through the auth flow to the final /auth request.

<!-- gh-comment-id:4596442404 --> @Nustinua commented on GitHub (Jun 1, 2026): I opened a PR for this here: #8028 The Enable Banking request field is `psu_type` rather than `PSUType`. The PR adds a Usage type selection in the bank linking form, defaults it to `personal`, and forwards the selected value through the auth flow to the final `/auth` request.
Author
Owner

@Cesc1986 commented on GitHub (Jun 2, 2026):

What happened?
When using the newest Enable Banking feature, for my German bank ING, the notes always contain "mandatereference:,creditorid:,remittanceinformation" before the actual info.

Image

This was already reported here and discussed including a possible hot fix. https://github.com/actualbudget/actual/pull/7345#issuecomment-4232655603

How can we reproduce the issue?
Install latest Actual Budget Client-Version: v26.6.0 and Server-Version: v26.6.0

Use Enable Banking with the Bank "ING" in Germany. Please note that for another German Bank "DKB" it doesn't show this bug, so it seems Bank specific.

<!-- gh-comment-id:4597711122 --> @Cesc1986 commented on GitHub (Jun 2, 2026): **What happened?** When using the newest Enable Banking feature, for my German bank ING, the notes always contain "mandatereference:,creditorid:,remittanceinformation" before the actual info. <img width="2398" height="108" alt="Image" src="https://github.com/user-attachments/assets/a8cf7c9b-26f5-434f-8465-764b7b8f4564" /> This was already reported here and discussed including a possible hot fix. https://github.com/actualbudget/actual/pull/7345#issuecomment-4232655603 **How can we reproduce the issue?** Install latest Actual Budget Client-Version: v26.6.0 and Server-Version: v26.6.0 Use Enable Banking with the Bank "ING" in Germany. Please note that for another German Bank "DKB" it doesn't show this bug, so it seems Bank specific.
Author
Owner

@mortiy commented on GitHub (Jun 2, 2026):

Exactly the same here with mBank (Poland)

Confirming this issue.

Also, if I already have bank accounts linked on https://enablebanking.com/cp/applications side, can't we reuse that links on Actual Budget side, without relink process?

<!-- gh-comment-id:4604859497 --> @mortiy commented on GitHub (Jun 2, 2026): > Exactly the same here with mBank (Poland) Confirming this issue. Also, if I already have bank accounts linked on https://enablebanking.com/cp/applications side, can't we reuse that links on Actual Budget side, without relink process?
Author
Owner

@emiltb commented on GitHub (Jun 2, 2026):

I still get a network-error when trying to sync my accounts on 2026.6.

{ meta: undefined, reason: "network-failure", type: "PostError", message: 'Failed syncing account "Emil Tveden Bjerglund."' }

I can set up Enable Banking successfully. When I link an account, it lists my accounts and the amounts in the accounts correctly, so the connection to EB definitely works. But syncing the transactions fail, with no real useful output in the console log. I also tried adding the DEBUG=actual:enable-banking:app env var to my actual-server, as suggested above, but I see no related output in the server log either.

<!-- gh-comment-id:4606569988 --> @emiltb commented on GitHub (Jun 2, 2026): I still get a `network-error` when trying to sync my accounts on 2026.6. `{ meta: undefined, reason: "network-failure", type: "PostError", message: 'Failed syncing account "Emil Tveden Bjerglund."' }` I can set up Enable Banking successfully. When I link an account, it lists my accounts and the amounts in the accounts correctly, so the connection to EB definitely works. But syncing the transactions fail, with no real useful output in the console log. I also tried adding the `DEBUG=actual:enable-banking:app` env var to my actual-server, as suggested above, but I see no related output in the server log either.
Author
Owner

@Nustinua commented on GitHub (Jun 2, 2026):

I still get a network-error when trying to sync my accounts on 2026.6.

{ meta: undefined, reason: "network-failure", type: "PostError", message: 'Failed syncing account "Emil Tveden Bjerglund."' }

I can set up Enable Banking successfully. When I link an account, it lists my accounts and the amounts in the accounts correctly, so the connection to EB definitely works. But syncing the transactions fail, with no real useful output in the console log. I also tried adding the DEBUG=actual:enable-banking:app env var to my actual-server, as suggested above, but I see no related output in the server log either.

Local network? You could try this PR https://github.com/actualbudget/actual/pull/8032

<!-- gh-comment-id:4607335525 --> @Nustinua commented on GitHub (Jun 2, 2026): > I still get a `network-error` when trying to sync my accounts on 2026.6. > > `{ meta: undefined, reason: "network-failure", type: "PostError", message: 'Failed syncing account "Emil Tveden Bjerglund."' }` > > I can set up Enable Banking successfully. When I link an account, it lists my accounts and the amounts in the accounts correctly, so the connection to EB definitely works. But syncing the transactions fail, with no real useful output in the console log. I also tried adding the `DEBUG=actual:enable-banking:app` env var to my actual-server, as suggested above, but I see no related output in the server log either. Local network? You could try this PR https://github.com/actualbudget/actual/pull/8032
Author
Owner

@nickmansrob commented on GitHub (Jun 2, 2026):

Minor annoyance:

When the Enable Banking authorization at the bank expires (for example when testing this feature locally with that bank, the authorization at my production server expired), I get, as expected a notification at the top of the account, mentioning I should re-link my account. When clicking on it, I can do the entire authentication flow again, only to find I cannot select the Actual account, because it is still linked.
The best way to fix this would probably be to automatically unlink the account when clicking on the error message, but this should only happen on errors which prompt to re-link, not on general 'Failed to sync' errors, as this not always means an expired token.

<!-- gh-comment-id:4607434763 --> @nickmansrob commented on GitHub (Jun 2, 2026): Minor annoyance: When the Enable Banking authorization at the bank expires (for example when testing this feature locally with that bank, the authorization at my production server expired), I get, as expected a notification at the top of the account, mentioning I should re-link my account. When clicking on it, I can do the entire authentication flow again, only to find I cannot select the Actual account, because it is still linked. The best way to fix this would probably be to automatically unlink the account when clicking on the error message, but this should only happen on errors which prompt to re-link, not on general 'Failed to sync' errors, as this not always means an expired token.
Author
Owner

@matt-fidd commented on GitHub (Jun 2, 2026):

I think that's fixed in master now, in the meantime you can deselect and reselect the account in the dropdown in that modal to get around it

Minor annoyance:

When the Enable Banking authorization at the bank expires (for example when testing this feature locally with that bank, the authorization at my production server expired), I get, as expected a notification at the top of the account, mentioning I should re-link my account. When clicking on it, I can do the entire authentication flow again, only to find I cannot select the Actual account, because it is still linked. The best way to fix this would probably be to automatically unlink the account when clicking on the error message, but this should only happen on errors which prompt to re-link, not on general 'Failed to sync' errors, as this not always means an expired token.

<!-- gh-comment-id:4607439328 --> @matt-fidd commented on GitHub (Jun 2, 2026): I think that's fixed in master now, in the meantime you can deselect and reselect the account in the dropdown in that modal to get around it > Minor annoyance: > > When the Enable Banking authorization at the bank expires (for example when testing this feature locally with that bank, the authorization at my production server expired), I get, as expected a notification at the top of the account, mentioning I should re-link my account. When clicking on it, I can do the entire authentication flow again, only to find I cannot select the Actual account, because it is still linked. The best way to fix this would probably be to automatically unlink the account when clicking on the error message, but this should only happen on errors which prompt to re-link, not on general 'Failed to sync' errors, as this not always means an expired token.
Author
Owner

@nickmansrob commented on GitHub (Jun 2, 2026):

I think that's fixed in master now, in the meantime you can deselect and reselect the account in the dropdown in that modal to get around it

Minor annoyance:
When the Enable Banking authorization at the bank expires (for example when testing this feature locally with that bank, the authorization at my production server expired), I get, as expected a notification at the top of the account, mentioning I should re-link my account. When clicking on it, I can do the entire authentication flow again, only to find I cannot select the Actual account, because it is still linked. The best way to fix this would probably be to automatically unlink the account when clicking on the error message, but this should only happen on errors which prompt to re-link, not on general 'Failed to sync' errors, as this not always means an expired token.

Did you mean this PR: https://github.com/actualbudget/actual/pull/8006? If so, I may have not explained clearly. The dropdown does not contain the account I want to link my Enable Banking connection to, as it already is linked to the, now expired, token. The dropdown obviously only shows accounts which are not linked to anything, therefore I need to first manually unlink the account in Actual before attempting to link it again, which defeats the purpose of the notification linking to the Enable Banking connection page.

<!-- gh-comment-id:4607477039 --> @nickmansrob commented on GitHub (Jun 2, 2026): > I think that's fixed in master now, in the meantime you can deselect and reselect the account in the dropdown in that modal to get around it > > > Minor annoyance: > > When the Enable Banking authorization at the bank expires (for example when testing this feature locally with that bank, the authorization at my production server expired), I get, as expected a notification at the top of the account, mentioning I should re-link my account. When clicking on it, I can do the entire authentication flow again, only to find I cannot select the Actual account, because it is still linked. The best way to fix this would probably be to automatically unlink the account when clicking on the error message, but this should only happen on errors which prompt to re-link, not on general 'Failed to sync' errors, as this not always means an expired token. Did you mean this PR: https://github.com/actualbudget/actual/pull/8006? If so, I may have not explained clearly. The dropdown does not contain the account I want to link my Enable Banking connection to, as it already is linked to the, now expired, token. The dropdown obviously only shows accounts which are not linked to anything, therefore I need to first _manually_ unlink the account in Actual before attempting to link it again, which defeats the purpose of the notification linking to the Enable Banking connection page.
Author
Owner

@alby258 commented on GitHub (Jun 3, 2026):

Enable Banking integration feedback (v26.6.0, ING Italy + BBVA Italy)

Setup note: Accounts only appear in Actual if they are first linked via the Enable Banking web portal, then added again from within Actual.

ING Italy – payee/notes not split on current account transactions

On the current account (C/C), both payee and notes fields are mapped to the same concatenated string (e.g. "Operazione Mastercard del 03/06/2026 alle ore 0..."), making it impossible to distinguish the counterparty from the transaction description. This affects both incoming and outgoing transactions.
Image

The credit card account behaves correctly — payeeName is populated as expected (e.g. "Amazon Prime LUXEMBOURG LUX").
Image

BBVA Italy – language forced to Spanish

The BBVA Italy authorization flow opens in Spanish regardless of the user's locale or country selection. The OTP/SMS confirmation is also sent in Spanish. Field mapping works correctly and the sync functions, but all imported transaction strings are in Spanish (e.g. "TRANSFERENCIAS // TRANSFERENCIA REALIZADA..."), which makes rule matching and payee normalization harder for Italian users.
Image

<!-- gh-comment-id:4610248764 --> @alby258 commented on GitHub (Jun 3, 2026): **Enable Banking integration feedback (v26.6.0, ING Italy + BBVA Italy)** **Setup note:** Accounts only appear in Actual if they are first linked via the Enable Banking web portal, then added again from within Actual. **ING Italy – payee/notes not split on current account transactions** On the current account (C/C), both `payee` and `notes` fields are mapped to the same concatenated string (e.g. `"Operazione Mastercard del 03/06/2026 alle ore 0..."`), making it impossible to distinguish the counterparty from the transaction description. This affects both incoming and outgoing transactions. <img width="1187" height="433" alt="Image" src="https://github.com/user-attachments/assets/dc85faff-ff9b-40e3-bf26-e122ff3ee453" /> The credit card account behaves correctly — `payeeName` is populated as expected (e.g. `"Amazon Prime LUXEMBOURG LUX"`). <img width="1186" height="427" alt="Image" src="https://github.com/user-attachments/assets/db9ee781-7a33-4314-af3a-3aa60f0ba74a" /> **BBVA Italy – language forced to Spanish** The BBVA Italy authorization flow opens in Spanish regardless of the user's locale or country selection. The OTP/SMS confirmation is also sent in Spanish. Field mapping works correctly and the sync functions, but all imported transaction strings are in Spanish (e.g. `"TRANSFERENCIAS // TRANSFERENCIA REALIZADA..."`), which makes rule matching and payee normalization harder for Italian users. <img width="1181" height="438" alt="Image" src="https://github.com/user-attachments/assets/69a45ad7-fbe2-4b8b-9295-7b31b2fdd7b0" />
Author
Owner

@PimVanLeeuwen commented on GitHub (Jun 3, 2026):

Maybe a dumb questions, but even on v26.6.0 I still do not see the option for Enable Banking:

Image

Am I doing something wrong or is there some alternative documentation about how to set this up?

<!-- gh-comment-id:4610648972 --> @PimVanLeeuwen commented on GitHub (Jun 3, 2026): Maybe a dumb questions, but even on v26.6.0 I still do not see the option for Enable Banking: <img width="1578" height="1010" alt="Image" src="https://github.com/user-attachments/assets/57e42139-04d4-44e0-bab0-c870c4d114ae" /> Am I doing something wrong or is there some alternative documentation about how to set this up?
Author
Owner

@MrAdam commented on GitHub (Jun 3, 2026):

Maybe a dumb questions, but even on v26.6.0 I still do not see the option for Enable Banking:
Image

Am I doing something wrong or is there some alternative documentation about how to set this up?

You need to enable it in Experimental features, under Advanced Settings in Settings

<!-- gh-comment-id:4611348529 --> @MrAdam commented on GitHub (Jun 3, 2026): > Maybe a dumb questions, but even on v26.6.0 I still do not see the option for Enable Banking: > <img alt="Image" width="1578" height="1010" src="https://private-user-images.githubusercontent.com/50077457/602081685-57e42139-04d4-44e0-bab0-c870c4d114ae.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODA0ODI0NDEsIm5iZiI6MTc4MDQ4MjE0MSwicGF0aCI6Ii81MDA3NzQ1Ny82MDIwODE2ODUtNTdlNDIxMzktMDRkNC00NGUwLWJhYjAtYzg3MGM0ZDExNGFlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MDMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjAzVDEwMjIyMVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWUyNmQxMjIxNGE3NzQ2MzNmMjIyYmEzNDY3NTI1ODQyYzBmZDAzZDU2ZmU4NDI0NDNhYTU0N2U4ZjgzZDYxOWMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.uxTAij5UouzI8myokXjwadLjQHCwV3GHlB1T_cKRunI"> > > Am I doing something wrong or is there some alternative documentation about how to set this up? You need to enable it in `Experimental features`, under `Advanced Settings` in `Settings`
Author
Owner

@salixh5 commented on GitHub (Jun 3, 2026):

I'm using German bank belonging to Volksbank group called "GLS Gemeinschaftsbank". In my phone's banking application I can see my current account and credit card:

GLS bank phone application showing both a current account and a credit card

When I try to link my accounts via Enable Banking, only my bank account shows up with no option to choose my credit card at any point. Is this a general restriction or am I missing something?

<!-- gh-comment-id:4613737587 --> @salixh5 commented on GitHub (Jun 3, 2026): I'm using German bank belonging to Volksbank group called "GLS Gemeinschaftsbank". In my phone's banking application I can see my current account and credit card: <img width="250" alt="GLS bank phone application showing both a current account and a credit card" src="https://github.com/user-attachments/assets/b9d58c55-dfc5-443a-86c0-dc3837611a1f" /> When I try to link my accounts via Enable Banking, only my bank account shows up with no option to choose my credit card at any point. Is this a general restriction or am I missing something?
Author
Owner

@emiltb commented on GitHub (Jun 3, 2026):

Local network? You could try this PR #8032

I just tried building an image from 8032 and deploying it in place with my usual server. I still get the exact same network-failure error. I saw this in the log, confirming that it did run the #8032 version.

actual_server-1 | 2026-06-03T19:56:18.473Z actual:enable-banking:app Skipping PSU headers because PSU IP is local/private

My setup: I host Actual in Docker and access it on my own domain through Caddy (also running in Docker), which takes care of HTTPS and a certificate from Lets Encrypt.

Edit: Wait! I just tried syncing two other accounts and that worked flawlessly (on latest). Same bank. But for some reason, i consistently get network-failure when trying to sync my main account.

<!-- gh-comment-id:4616266356 --> @emiltb commented on GitHub (Jun 3, 2026): > Local network? You could try this PR [#8032](https://github.com/actualbudget/actual/pull/8032) I just tried building an image from 8032 and deploying it in place with my usual server. I still get the exact same `network-failure` error. I saw this in the log, confirming that it did run the #8032 version. `actual_server-1 | 2026-06-03T19:56:18.473Z actual:enable-banking:app Skipping PSU headers because PSU IP is local/private` My setup: I host Actual in Docker and access it on my own domain through Caddy (also running in Docker), which takes care of HTTPS and a certificate from Lets Encrypt. Edit: Wait! I just tried syncing two other accounts and that worked flawlessly (on `latest`). Same bank. But for some reason, i consistently get `network-failure` when trying to sync my main account.
Author
Owner

@second-string commented on GitHub (Jun 4, 2026):

If anyone else is getting the "Invalid URL" error from Enable Banking when creating your application, it's not talking about your callback URL, it's talking about one of the two URLS after (privacy policy and terms of service). I had typed in actualbanking.org manually for both, but it needs an https prefix.

So both need to be https://actualbanking.org or whatever you want it to be. Spent an hour banging my head against this assuming it was the oauth callback URL that was a problem so i figured I'd share for anyone else. Maybe could be included in the docs for Actual Budget if they're expanded as well. Thanks for adding the support!

<!-- gh-comment-id:4620383596 --> @second-string commented on GitHub (Jun 4, 2026): If anyone else is getting the "Invalid URL" error from Enable Banking when creating your application, it's not talking about your callback URL, it's talking about one of the two URLS after (privacy policy and terms of service). I had typed in `actualbanking.org` manually for both, but it needs an `https` prefix. So both need to be `https://actualbanking.org` or whatever you want it to be. Spent an hour banging my head against this assuming it was the oauth callback URL that was a problem so i figured I'd share for anyone else. Maybe could be included in the docs for Actual Budget if they're expanded as well. Thanks for adding the support!
Author
Owner

@AntonioGuerrisi commented on GitHub (Jun 4, 2026):

I tried with Revolut and PayPal. The auth procedure works well, but Actual doesn't find any accounts to sync.

Image

Other traditional bank accounts are working fine.

<!-- gh-comment-id:4621473781 --> @AntonioGuerrisi commented on GitHub (Jun 4, 2026): I tried with Revolut and PayPal. The auth procedure works well, but Actual doesn't find any accounts to sync. <img width="1033" height="476" alt="Image" src="https://github.com/user-attachments/assets/e10de075-d067-442b-ac4e-d0cd9206a3a3" /> Other traditional bank accounts are working fine.
Author
Owner

@wneuhaus commented on GitHub (Jun 4, 2026):

I tried with Revolut and PayPal. The auth procedure works well, but Actual doesn't find any accounts to sync.

Image Other traditional bank accounts are working fine.

Did you link the accounts in enable banking first? I had the same issue and after linking them, I could select them in Actual.

<!-- gh-comment-id:4622536220 --> @wneuhaus commented on GitHub (Jun 4, 2026): > I tried with Revolut and PayPal. The auth procedure works well, but Actual doesn't find any accounts to sync. > > <img alt="Image" width="1033" height="476" src="https://private-user-images.githubusercontent.com/14899/602790848-e10de075-d067-442b-ac4e-d0cd9206a3a3.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODA1Nzk0NTUsIm5iZiI6MTc4MDU3OTE1NSwicGF0aCI6Ii8xNDg5OS82MDI3OTA4NDgtZTEwZGUwNzUtZDA2Ny00NDJiLWFjNGUtZDBjZDkyMDZhM2EzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MDQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjA0VDEzMTkxNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg3YjU0MmU3NTFmM2NmYTMzODNiZWVhOTY1OTk3Nzc4YTFjODdmZmY4N2Q4OWEyYTk2MzZkYmNkMzE0ZjYwOWMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.lFUc-_P7f0c3r3DUyBPsBfUtq-NFUxuIKODrM_PVdqQ"> > Other traditional bank accounts are working fine. Did you link the accounts in enable banking first? I had the same issue and after linking them, I could select them in Actual.
Author
Owner

@wneuhaus commented on GitHub (Jun 4, 2026):

I'm using German bank belonging to Volksbank group called "GLS Gemeinschaftsbank". In my phone's banking application I can see my current account and credit card:

GLS bank phone application showing both a current account and a credit card When I try to link my accounts via Enable Banking, only my bank account shows up with no option to choose my credit card at any point. Is this a general restriction or am I missing something?

Same limitation with Raiffeisen Ö. I can only choose the „Giro“ account. Must be bank specific.

<!-- gh-comment-id:4622551740 --> @wneuhaus commented on GitHub (Jun 4, 2026): > I'm using German bank belonging to Volksbank group called "GLS Gemeinschaftsbank". In my phone's banking application I can see my current account and credit card: > > <img alt="GLS bank phone application showing both a current account and a credit card" width="250" src="https://private-user-images.githubusercontent.com/3247063/602291251-b9d58c55-dfc5-443a-86c0-dc3837611a1f.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODA1Nzk0NTUsIm5iZiI6MTc4MDU3OTE1NSwicGF0aCI6Ii8zMjQ3MDYzLzYwMjI5MTI1MS1iOWQ1OGM1NS1kZmM1LTQ0M2EtODZjMC1kYzM4Mzc2MTFhMWYucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDYwNCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjA2MDRUMTMxOTE1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9ODljM2EzNzc5Y2U5OThhMTc5YTY5OTY5NDhiMTI2NmY0Y2JiMWFhMThjOTNkNTk4MzFiZmI0MmRiYTIzMmRlMSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmcmVzcG9uc2UtY29udGVudC10eXBlPWltYWdlJTJGcG5nIn0.6LjMXsB96v_BYisFvp7nequ1ZCustCTsloPLWq4kTR8"> > When I try to link my accounts via Enable Banking, only my bank account shows up with no option to choose my credit card at any point. Is this a general restriction or am I missing something? Same limitation with Raiffeisen Ö. I can only choose the „Giro“ account. Must be bank specific.
Author
Owner

@Cesc1986 commented on GitHub (Jun 4, 2026):

I tried with Revolut and PayPal. The auth procedure works well, but Actual doesn't find any accounts to sync.

Image Other traditional bank accounts are working fine.

Revolut in Germany works without a problem for me. Did you check indeed whether you linked your account first in enable banking?

<!-- gh-comment-id:4623330626 --> @Cesc1986 commented on GitHub (Jun 4, 2026): > I tried with Revolut and PayPal. The auth procedure works well, but Actual doesn't find any accounts to sync. > > <img alt="Image" width="1033" height="476" src="https://private-user-images.githubusercontent.com/14899/602790848-e10de075-d067-442b-ac4e-d0cd9206a3a3.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODA1ODUyNzIsIm5iZiI6MTc4MDU4NDk3MiwicGF0aCI6Ii8xNDg5OS82MDI3OTA4NDgtZTEwZGUwNzUtZDA2Ny00NDJiLWFjNGUtZDBjZDkyMDZhM2EzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA2MDQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNjA0VDE0NTYxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTVlZjdmOWFjZDM1Y2JmNmFjNGJhMmY2YzJkZmYyOTQ2NTg0MzA5YWNmNTI4YTZhOWI1YmExZGZiMTljZTNjZTMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JnJlc3BvbnNlLWNvbnRlbnQtdHlwZT1pbWFnZSUyRnBuZyJ9.1CeBtFLcxw24zFO1UkrxR5j3uXU5w2xpV3iORCGgCEs"> > Other traditional bank accounts are working fine. Revolut in Germany works without a problem for me. Did you check indeed whether you linked your account first in enable banking?
Author
Owner

@AntonioGuerrisi commented on GitHub (Jun 4, 2026):

Did you link the accounts in enable banking first? I had the same issue and after linking them, I could select them in Actual.

Revolut in Germany works without a problem for me. Did you check indeed whether you linked your account first in enable banking?

Linking first the accounts in Enable Banking, them working well both Revolut and PayPal.
for the traditional bank it was not needed

Thanks

<!-- gh-comment-id:4623685448 --> @AntonioGuerrisi commented on GitHub (Jun 4, 2026): > Did you link the accounts in enable banking first? I had the same issue and after linking them, I could select them in Actual. > Revolut in Germany works without a problem for me. Did you check indeed whether you linked your account first in enable banking? Linking first the accounts in Enable Banking, them working well both Revolut and PayPal. for the traditional bank it was not needed Thanks
Author
Owner

@Dreptschar commented on GitHub (Jun 5, 2026):

It dosnt load a list of banks for me

<!-- gh-comment-id:4629194825 --> @Dreptschar commented on GitHub (Jun 5, 2026): It dosnt load a list of banks for me
Author
Owner

@cichond commented on GitHub (Jun 5, 2026):

Please add support for the PSUType parameter.

According to the Enable Banking API documentation (https://enablebanking.com/docs/api/reference/#startauthorizationrequest), the default value is business for StartAuthorizationRequest. However, some banks use different authorization flows for private and corporate customers. When PSUType cannot be specified, authorization may fail or become unavailable for banks that require the customer type to be explicitly selected.

Supporting PSUType would improve compatibility with banks that distinguish between retail and corporate banking authorization processes.

<!-- gh-comment-id:4631460744 --> @cichond commented on GitHub (Jun 5, 2026): Please add support for the PSUType parameter. According to the Enable Banking API documentation (https://enablebanking.com/docs/api/reference/#startauthorizationrequest), the default value is business for StartAuthorizationRequest. However, some banks use different authorization flows for private and corporate customers. When PSUType cannot be specified, authorization may fail or become unavailable for banks that require the customer type to be explicitly selected. Supporting PSUType would improve compatibility with banks that distinguish between retail and corporate banking authorization processes.
Author
Owner

@mnil commented on GitHub (Jun 5, 2026):

@cichond https://github.com/actualbudget/actual/pull/8028

<!-- gh-comment-id:4631869879 --> @mnil commented on GitHub (Jun 5, 2026): @cichond https://github.com/actualbudget/actual/pull/8028
Author
Owner

@wojciechbielecki commented on GitHub (Jun 6, 2026):

Thanks for this feature!
I'm trying to set this up and I'm having trouble registering the application in the Enable Banking control panel. I guess my issue is caused by using the Desktop App (26.6.0 on macOS 26.5.1).
The app tells me enter app://actual/enablebanking/auth_callback in the Allowed redirect URLs (one per line) box. However Enable Banking rejects this with an error: URL "app://actual/enablebanking/auth_callback" uses unsupported scheme
I'm assuming the redirect URL needs to be reachable via the internet. So is there a way to use Enable Banking with the desktop app? Do I need to set up a reverse proxy?

Image

If it's not possible to set up Enable Banking using the desktop app with the default configuration, I'd suggest the app shouldn't provide the app://actual/enablebanking/auth_callback and instead it could link the user to appropriate docs.

<!-- gh-comment-id:4640274862 --> @wojciechbielecki commented on GitHub (Jun 6, 2026): Thanks for this feature! I'm trying to set this up and I'm having trouble registering the application in the Enable Banking control panel. I guess my issue is caused by using the Desktop App (26.6.0 on macOS 26.5.1). The app tells me enter `app://actual/enablebanking/auth_callback` in the `Allowed redirect URLs (one per line)` box. However Enable Banking rejects this with an error: `URL "app://actual/enablebanking/auth_callback" uses unsupported scheme` I'm assuming the redirect URL needs to be reachable via the internet. So is there a way to use Enable Banking with the desktop app? Do I need to [set up a reverse proxy](https://actualbudget.org/docs/config/reverse-proxies)? <img width="480" height="320" alt="Image" src="https://github.com/user-attachments/assets/352f15a2-cade-4e88-9075-8a298b48ca07" /> If it's not possible to set up Enable Banking using the desktop app with the default configuration, I'd suggest the app shouldn't provide the `app://actual/enablebanking/auth_callback` and instead it could link the user to appropriate docs.
Author
Owner

@Tuphal commented on GitHub (Jun 7, 2026):

It dosnt load a list of banks for me

I had the same issue, because I missed following sentence in the docs:
then link the accounts you want in the Enable Banking interface

After linking my bank account on the EnableBanking site, the banks in AB loaded and I could select my bank again and linked it a second time. Worked with my german bank flawless !
Thank you for this feature

<!-- gh-comment-id:4641704020 --> @Tuphal commented on GitHub (Jun 7, 2026): > It dosnt load a list of banks for me I had the same issue, because I missed following sentence in the docs: `then link the accounts you want in the Enable Banking interface` After linking my bank account on the EnableBanking site, the banks in AB loaded and I could select my bank again and linked it a second time. Worked with my german bank flawless ! Thank you for this feature
Author
Owner

@wojciechbielecki commented on GitHub (Jun 7, 2026):

https://github.com/actualbudget/actual/issues/7799#issuecomment-4640274862
I've figured it out. I've signed up for ngrok, ran ngrok http --url=my-domain.ngrok-free.dev 5007 and put https://my-domain.ngrok-free.dev/enablebanking/auth_callback as the redirect URL in the Enable Banking panel.
Still, setting up sync in the Actual app wasn't working (An error occurred while linking your account, sorry! The potential issue could be: Redirect URI not allowed)
I had to open Actual in browser by navigating to https://my-domain.ngrok-free.dev/ and only then could I link my bank account via Enable Banking. But after having done that, the sync is now working directly in the desktop app as well. So the reverse proxy was actually only needed for the set up.

<!-- gh-comment-id:4642786579 --> @wojciechbielecki commented on GitHub (Jun 7, 2026): https://github.com/actualbudget/actual/issues/7799#issuecomment-4640274862 I've figured it out. I've signed up for ngrok, ran `ngrok http --url=my-domain.ngrok-free.dev 5007` and put `https://my-domain.ngrok-free.dev/enablebanking/auth_callback` as the redirect URL in the Enable Banking panel. Still, setting up sync in the Actual app wasn't working (`An error occurred while linking your account, sorry! The potential issue could be: Redirect URI not allowed`) I had to open Actual in browser by navigating to `https://my-domain.ngrok-free.dev/` and only then could I link my bank account via Enable Banking. But after having done that, the sync is now working directly in the desktop app as well. So the reverse proxy was actually only needed for the set up.
Author
Owner

@brunotraverso commented on GitHub (Jun 7, 2026):

AIB Ireland: Actual UI redirects to AIB Business (iBB) instead of AIB Personal

Reporting a specific bug found while testing Enable Banking with Irish banks.

Setup

  • Actual Server 26.6.0 (Docker, self-hosted Coolify)
  • Enable Banking integration configured (App ID + credential file uploaded successfully)
  • Browser: Chrome (latest)
  • Country: Ireland

What happens

When linking via Actual UI:

  1. Bank Sync → Link bank account on Enable Banking card
  2. Country: Ireland → Bank: AIB (Allied Irish Banks) — entry is marked "beta"
  3. Click "Link bank with browser"
  4. Redirects to https://auth.aib.ie/as/authorization.oauth2 — iBB (Internet Business Banking) login, requires business credentials I don't have
  5. Blocked, can't proceed

Workaround that confirms the bug

Linking AIB via the Enable Banking dashboard directly (https://enablebanking.com/cp/applications → Activate by linking accounts) correctly presents the Personal vs Business choice, and AIB Personal links successfully. The issue is specifically in Actual's UI flow, it appears to default to the AIB Business ASPSP instead of offering choice.

Other Irish banks tested

  • Revolut (Ireland): works correctly via Actual UI, Personal/Business selection presented
  • Wise (Ireland): tested, works (TBC if I'm linking same way)
  • AIB (Ireland): only one with this issue — marked "beta" in the dropdown which may correlate

Note: AIB has two distinct PSD2 ASPSPs in Enable Banking — aib_ie (Personal) and aib_business_ie or similar (Business). The Actual UI might be hardcoded to the wrong one or selecting first match.

<!-- gh-comment-id:4643107731 --> @brunotraverso commented on GitHub (Jun 7, 2026): **AIB Ireland: Actual UI redirects to AIB Business (iBB) instead of AIB Personal** Reporting a specific bug found while testing Enable Banking with Irish banks. **Setup** - Actual Server 26.6.0 (Docker, self-hosted Coolify) - Enable Banking integration configured (App ID + credential file uploaded successfully) - Browser: Chrome (latest) - Country: Ireland **What happens** When linking via Actual UI: 1. Bank Sync → Link bank account on Enable Banking card 2. Country: Ireland → Bank: AIB (Allied Irish Banks) — entry is marked "beta" 3. Click "Link bank with browser" 4. **Redirects to `https://auth.aib.ie/as/authorization.oauth2`** — iBB (Internet Business Banking) login, requires business credentials I don't have 5. Blocked, can't proceed **Workaround that confirms the bug** Linking AIB via the Enable Banking dashboard directly (https://enablebanking.com/cp/applications → Activate by linking accounts) correctly presents the Personal vs Business choice, and AIB Personal links successfully. The issue is specifically in Actual's UI flow, it appears to default to the AIB Business ASPSP instead of offering choice. **Other Irish banks tested** - ✅ Revolut (Ireland): works correctly via Actual UI, Personal/Business selection presented - ✅ Wise (Ireland): tested, works (TBC if I'm linking same way) - ❌ AIB (Ireland): only one with this issue — marked "beta" in the dropdown which may correlate **Note**: AIB has two distinct PSD2 ASPSPs in Enable Banking — `aib_ie` (Personal) and `aib_business_ie` or similar (Business). The Actual UI might be hardcoded to the wrong one or selecting first match.
Author
Owner

@wnhrt commented on GitHub (Jun 8, 2026):

Actual Budget version: v26.6.0 (Docker nightly-alpine)
Bank country: Germany
Bank name: "Sparkasse Allgäu"

When running Bank Sync on https://example.com/accounts/UUID, I get following error:

2026-06-08T18:35:44.976Z actual:enable-banking:app Error fetching transactions: EnableBankingError: Error interacting with ASPSP
    at handleEnableBankingError (file:///app/chunks/app-Dlykaj2E.js:1039:10)
    at request (file:///app/chunks/app-Dlykaj2E.js:1120:9)
    at process.processTicksAndRejections (node:internal/process/task_queues:103:5)
    at async file:///app/chunks/app-Dlykaj2E.js:1552:21 {
  error_type: 'Error interacting with ASPSP',
  error_code: 'INVALID_INPUT'
}

and in the browser console:

Error linking account to Enable Banking:
{
  "type": "ServerError",
  "cause": {
    "type": "BankSyncError",
    "category": "INVALID_INPUT",
    "code": "INVALID_INPUT"
  }
}
<!-- gh-comment-id:4652326391 --> @wnhrt commented on GitHub (Jun 8, 2026): Actual Budget version: v26.6.0 (Docker `nightly-alpine`) Bank country: Germany Bank name: "Sparkasse Allgäu" When running `Bank Sync` on https://example.com/accounts/UUID, I get following error: ``` 2026-06-08T18:35:44.976Z actual:enable-banking:app Error fetching transactions: EnableBankingError: Error interacting with ASPSP at handleEnableBankingError (file:///app/chunks/app-Dlykaj2E.js:1039:10) at request (file:///app/chunks/app-Dlykaj2E.js:1120:9) at process.processTicksAndRejections (node:internal/process/task_queues:103:5) at async file:///app/chunks/app-Dlykaj2E.js:1552:21 { error_type: 'Error interacting with ASPSP', error_code: 'INVALID_INPUT' } ``` and in the browser console: ``` Error linking account to Enable Banking: { "type": "ServerError", "cause": { "type": "BankSyncError", "category": "INVALID_INPUT", "code": "INVALID_INPUT" } } ```
Author
Owner

@MatissJanis commented on GitHub (Jun 8, 2026):

Related: https://github.com/actualbudget/actual/issues/8105

<!-- gh-comment-id:4652938214 --> @MatissJanis commented on GitHub (Jun 8, 2026): Related: https://github.com/actualbudget/actual/issues/8105
Author
Owner

@joostvanopdorp commented on GitHub (Jun 9, 2026):

Merging existing (manual) transactions with synced ones doesn't always seem to work as expected. Some of those transactions get synced again. When I just delete the old transactions and adjust the newly synced ones, it works correctly. Might have something to do with the transaction id? Maybe it gets lost in a merge?

<!-- gh-comment-id:4657279428 --> @joostvanopdorp commented on GitHub (Jun 9, 2026): Merging existing (manual) transactions with synced ones doesn't always seem to work as expected. Some of those transactions get synced again. When I just delete the old transactions and adjust the newly synced ones, it works correctly. Might have something to do with the transaction id? Maybe it gets lost in a merge?
Author
Owner

@emilgeo commented on GitHub (Jun 9, 2026):

AIB Ireland: Actual UI redirects to AIB Business (iBB) instead of AIB Personal

Reporting a specific bug found while testing Enable Banking with Irish banks.

Setup

  • Actual Server 26.6.0 (Docker, self-hosted Coolify)
  • Enable Banking integration configured (App ID + credential file uploaded successfully)
  • Browser: Chrome (latest)
  • Country: Ireland

What happens

When linking via Actual UI:

  1. Bank Sync → Link bank account on Enable Banking card
  2. Country: Ireland → Bank: AIB (Allied Irish Banks) — entry is marked "beta"
  3. Click "Link bank with browser"
  4. Redirects to https://auth.aib.ie/as/authorization.oauth2 — iBB (Internet Business Banking) login, requires business credentials I don't have
  5. Blocked, can't proceed

Workaround that confirms the bug

Linking AIB via the Enable Banking dashboard directly (https://enablebanking.com/cp/applications → Activate by linking accounts) correctly presents the Personal vs Business choice, and AIB Personal links successfully. The issue is specifically in Actual's UI flow, it appears to default to the AIB Business ASPSP instead of offering choice.

Other Irish banks tested

  • Revolut (Ireland): works correctly via Actual UI, Personal/Business selection presented
  • Wise (Ireland): tested, works (TBC if I'm linking same way)
  • AIB (Ireland): only one with this issue — marked "beta" in the dropdown which may correlate

Note: AIB has two distinct PSD2 ASPSPs in Enable Banking — aib_ie (Personal) and aib_business_ie or similar (Business). The Actual UI might be hardcoded to the wrong one or selecting first match.

https://github.com/actualbudget/actual/pull/8028#issuecomment-4659290844

<!-- gh-comment-id:4659313034 --> @emilgeo commented on GitHub (Jun 9, 2026): > **AIB Ireland: Actual UI redirects to AIB Business (iBB) instead of AIB Personal** > > Reporting a specific bug found while testing Enable Banking with Irish banks. > > **Setup** > > * Actual Server 26.6.0 (Docker, self-hosted Coolify) > * Enable Banking integration configured (App ID + credential file uploaded successfully) > * Browser: Chrome (latest) > * Country: Ireland > > **What happens** > > When linking via Actual UI: > > 1. Bank Sync → Link bank account on Enable Banking card > 2. Country: Ireland → Bank: AIB (Allied Irish Banks) — entry is marked "beta" > 3. Click "Link bank with browser" > 4. **Redirects to `https://auth.aib.ie/as/authorization.oauth2`** — iBB (Internet Business Banking) login, requires business credentials I don't have > 5. Blocked, can't proceed > > **Workaround that confirms the bug** > > Linking AIB via the Enable Banking dashboard directly (https://enablebanking.com/cp/applications → Activate by linking accounts) correctly presents the Personal vs Business choice, and AIB Personal links successfully. The issue is specifically in Actual's UI flow, it appears to default to the AIB Business ASPSP instead of offering choice. > > **Other Irish banks tested** > > * ✅ Revolut (Ireland): works correctly via Actual UI, Personal/Business selection presented > * ✅ Wise (Ireland): tested, works (TBC if I'm linking same way) > * ❌ AIB (Ireland): only one with this issue — marked "beta" in the dropdown which may correlate > > **Note**: AIB has two distinct PSD2 ASPSPs in Enable Banking — `aib_ie` (Personal) and `aib_business_ie` or similar (Business). The Actual UI might be hardcoded to the wrong one or selecting first match. https://github.com/actualbudget/actual/pull/8028#issuecomment-4659290844
Author
Owner

@marcodallagatta commented on GitHub (Jun 10, 2026):

Do we know if Enable Banking itself goes down once in a while? I keep having very generic errors that seem to resolve themselves after a while...

Image

If I try to link a new account it goes through with the auth, but then I don't see any row in the table where I am supposed to select the starting date/balance/etc, and old account don't sync at all.

<!-- gh-comment-id:4673516675 --> @marcodallagatta commented on GitHub (Jun 10, 2026): Do we know if Enable Banking itself goes down once in a while? I keep having very generic errors that seem to resolve themselves after a while... <img width="876" height="342" alt="Image" src="https://github.com/user-attachments/assets/8e7fd573-1e91-434d-b267-f4d219f8a0e0" /> If I try to link a new account it goes through with the auth, but then I don't see any row in the table where I am supposed to select the starting date/balance/etc, and old account don't sync at all.
Author
Owner

@TechBreakHelp commented on GitHub (Jun 11, 2026):

I use the last version (26.6.0) of both server and client side.
I have Actual installed on a Ubuntu server reachable via ethernet.
I use a basic installation without Docker.

I wanted to use EnableBanking since GoCardless do not sync correctly when button Sync has been pressed.
But after uploading the private key of the new EnableBanking application, it throws an error:
Could not validate the credentials. Please check your Application ID and secret key.

I inspected the network traffic and the endpoint /enablebanking/configure is not reachable (error 404).

I noticed that src/app.js has:

import * as accountApp from './app-account.js';
import * as syncApp from './app-sync.js';
import * as goCardlessApp from './app-gocardless/app-gocardless.js';
import * as simpleFinApp from './app-simplefin/app-simplefin.js';
import * as secretApp from './app-secrets.js';
import * as adminApp from './app-admin.js';
import * as openidApp from './app-openid.js';

EnableBanking is missing from import.

It is missing even from the list of handlers:

app.use('/sync', syncApp.handlers);
app.use('/account', accountApp.handlers);
app.use('/gocardless', goCardlessApp.handlers);
app.use('/simplefin', simpleFinApp.handlers);
app.use('/secret', secretApp.handlers);

app.use('/admin', adminApp.handlers);
app.use('/openid', openidApp.handlers);

app.get('/mode', (req, res) => {
  res.send(config.mode);
});

How can I solve?

<!-- gh-comment-id:4683126698 --> @TechBreakHelp commented on GitHub (Jun 11, 2026): I use the last version (26.6.0) of both server and client side. I have Actual installed on a Ubuntu server reachable via ethernet. I use a basic installation without Docker. I wanted to use EnableBanking since GoCardless do not sync correctly when button Sync has been pressed. But after uploading the private key of the new EnableBanking application, it throws an error: `Could not validate the credentials. Please check your Application ID and secret key.` I inspected the network traffic and the endpoint /enablebanking/configure is not reachable (error 404). I noticed that src/app.js has: ``` import * as accountApp from './app-account.js'; import * as syncApp from './app-sync.js'; import * as goCardlessApp from './app-gocardless/app-gocardless.js'; import * as simpleFinApp from './app-simplefin/app-simplefin.js'; import * as secretApp from './app-secrets.js'; import * as adminApp from './app-admin.js'; import * as openidApp from './app-openid.js'; ``` EnableBanking is missing from import. It is missing even from the list of handlers: ``` app.use('/sync', syncApp.handlers); app.use('/account', accountApp.handlers); app.use('/gocardless', goCardlessApp.handlers); app.use('/simplefin', simpleFinApp.handlers); app.use('/secret', secretApp.handlers); app.use('/admin', adminApp.handlers); app.use('/openid', openidApp.handlers); app.get('/mode', (req, res) => { res.send(config.mode); }); ``` How can I solve?
Author
Owner

@matt-fidd commented on GitHub (Jun 11, 2026):

I use the last version (26.6.0) of both server and client side. I have Actual installed on a Ubuntu server reachable via ethernet. I use a basic installation without Docker.

I wanted to use EnableBanking since GoCardless do not sync correctly when button Sync has been pressed. But after uploading the private key of the new EnableBanking application, it throws an error: Could not validate the credentials. Please check your Application ID and secret key.

I inspected the network traffic and the endpoint /enablebanking/configure is not reachable (error 404).

I noticed that src/app.js has:

import * as accountApp from './app-account.js';
import * as syncApp from './app-sync.js';
import * as goCardlessApp from './app-gocardless/app-gocardless.js';
import * as simpleFinApp from './app-simplefin/app-simplefin.js';
import * as secretApp from './app-secrets.js';
import * as adminApp from './app-admin.js';
import * as openidApp from './app-openid.js';

EnableBanking is missing from import.

It is missing even from the list of handlers:

app.use('/sync', syncApp.handlers);
app.use('/account', accountApp.handlers);
app.use('/gocardless', goCardlessApp.handlers);
app.use('/simplefin', simpleFinApp.handlers);
app.use('/secret', secretApp.handlers);

app.use('/admin', adminApp.handlers);
app.use('/openid', openidApp.handlers);

app.get('/mode', (req, res) => {
  res.send(config.mode);
});

How can I solve?

I'm pretty sure you can't actually be on version 26.6.0. Enable banking is definitely imported in sync-server/src/app.ts
044a4ad47a/packages/sync-server/src/app.ts (L14)

and it's there in the handlers

044a4ad47a/packages/sync-server/src/app.ts (L65)

<!-- gh-comment-id:4683168129 --> @matt-fidd commented on GitHub (Jun 11, 2026): > I use the last version (26.6.0) of both server and client side. I have Actual installed on a Ubuntu server reachable via ethernet. I use a basic installation without Docker. > > I wanted to use EnableBanking since GoCardless do not sync correctly when button Sync has been pressed. But after uploading the private key of the new EnableBanking application, it throws an error: `Could not validate the credentials. Please check your Application ID and secret key.` > > I inspected the network traffic and the endpoint /enablebanking/configure is not reachable (error 404). > > I noticed that src/app.js has: > > ``` > import * as accountApp from './app-account.js'; > import * as syncApp from './app-sync.js'; > import * as goCardlessApp from './app-gocardless/app-gocardless.js'; > import * as simpleFinApp from './app-simplefin/app-simplefin.js'; > import * as secretApp from './app-secrets.js'; > import * as adminApp from './app-admin.js'; > import * as openidApp from './app-openid.js'; > ``` > > EnableBanking is missing from import. > > It is missing even from the list of handlers: > > ``` > app.use('/sync', syncApp.handlers); > app.use('/account', accountApp.handlers); > app.use('/gocardless', goCardlessApp.handlers); > app.use('/simplefin', simpleFinApp.handlers); > app.use('/secret', secretApp.handlers); > > app.use('/admin', adminApp.handlers); > app.use('/openid', openidApp.handlers); > > app.get('/mode', (req, res) => { > res.send(config.mode); > }); > ``` > > How can I solve? I'm pretty sure you can't actually be on version 26.6.0. Enable banking is definitely imported in sync-server/src/app.ts https://github.com/actualbudget/actual/blob/044a4ad47a5f2d7f88ba77b036c18b5d10a241d5/packages/sync-server/src/app.ts#L14 and it's there in the handlers https://github.com/actualbudget/actual/blob/044a4ad47a5f2d7f88ba77b036c18b5d10a241d5/packages/sync-server/src/app.ts#L65
Author
Owner

@TechBreakHelp commented on GitHub (Jun 11, 2026):

How should I update correctly than?
Which command in CLI I have to use?

Image
<!-- gh-comment-id:4683233379 --> @TechBreakHelp commented on GitHub (Jun 11, 2026): How should I update correctly than? Which command in CLI I have to use? <img width="556" height="223" alt="Image" src="https://github.com/user-attachments/assets/f5e24542-e258-4339-be51-dc766148b44a" />
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#117586