[PR #457] [MERGED] Nordigen integration - account sync #3150

Closed
opened 2026-02-28 20:37:12 -06:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/actualbudget/actual/pull/457
Author: @fstybel
Created: 1/13/2023
Status: Merged
Merged: 3/4/2023
Merged by: @j-f1

Base: masterHead: nordigen


📝 Commits (10+)

  • 277e352 Update gitignore about .idea folder
  • bedd4a9 Add integration with Nordigen
  • a6e8b70 Merge remote-tracking branch 'origin/master' into nordigen
  • fb5941c Fix linter
  • 572f375 Use longer access to the account
  • d4e5073 Move normalizatoin of accounts to the backend side
  • dba0196 Fix possibility to force remove account
  • 83830f1 Merge remote-tracking branch 'origin/master' into nordigen
  • 085e919 Move normalization of transactions to the backend side
  • 0a957c6 Merge remote-tracking branch 'origin/master' into nordigen

📊 Changes

19 files changed (+1221 additions, -172 deletions)

View changed files

📝 .gitignore (+1 -0)
📝 packages/desktop-client/src/components/FinancesApp.js (+2 -0)
📝 packages/desktop-client/src/components/Modals.js (+21 -3)
📝 packages/desktop-client/src/components/accounts/Account.js (+2 -2)
📝 packages/desktop-client/src/components/accounts/AccountSyncCheck.js (+2 -16)
📝 packages/desktop-client/src/components/modals/CreateAccount.js (+1 -1)
packages/desktop-client/src/components/nordigen/NordigenLink.js (+21 -0)
packages/desktop-client/src/nordigen.js (+40 -0)
📝 packages/loot-core/src/client/actions/account.js (+24 -6)
📝 packages/loot-core/src/server/accounts/link.js (+74 -0)
📝 packages/loot-core/src/server/accounts/sync.js (+402 -0)
📝 packages/loot-core/src/server/main.js (+254 -14)
📝 packages/loot-core/src/server/post.js (+2 -1)
📝 packages/loot-core/src/server/server-config.js (+1 -0)
📝 packages/loot-core/src/server/sync/index.js (+13 -4)
📝 packages/loot-design/src/components/common.js (+12 -2)
📝 packages/loot-design/src/components/modals/ConfigureLinkedAccounts.js (+1 -1)
packages/loot-design/src/components/modals/NordigenExternalMsg.js (+156 -0)
📝 packages/loot-design/src/components/modals/SelectLinkedAccounts.js (+192 -122)

📄 Description

This PR integrates the app with Nordigen to allow account sync with banks - balance, account info, and transfers.

Related backend PR: https://github.com/actualbudget/actual-server/pull/74

Bank integrations

Unfortunately, Nordigen not provides one common interface for all banks' data we have to add write implementation for new banks. I wrote a simple README file which describes it. But generally, we have to create a new class for the new bank and add implementation for three methods.

I provided at the beginning implementation for two Poland Banks and for Nordigen Sandbox bank for tests.

Available banks

  • ING PL
  • MBANK Retail PL
  • NORDIGEN Sandbox (for testing)

Demo

https://user-images.githubusercontent.com/8612503/189112287-ac8f70ac-3e6f-4586-b6c2-99cda514db46.mov

How to setup it up locally

  1. Create a Nordigen account and generate API credentials
  2. Put keys in the config.json file in the root of the backend repository
{
  "nordigen_secret_id": "xxxx",
  "nordigen_secret_key": "xxxxx"
}

  1. Launch backend from the PR with Nordigen API credentials yarn start
  2. Launch frontend: yarn start:browser

Things to improve:

Backend

  • Create a new endpoint that provides a list of the integrated banks
  • Improve error handling (request limit exceeded, Bank service not available)

Frontend

  • Add tests on the frontend side
  • Fetch available bank integration from the backend instead of a hardcoded list
  • Tweek the UI for new functionalities
  • Add an option to select for how long period we want to establish access to our bank ( backend is ready for that)
  • Add a progress bar to inform users about the process of importing data after when we add new accounts
  • Add linking transactions between our accounts
  • Display somewhere when access to the account will expire and automatically ask for re-link of accounts

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/actualbudget/actual/pull/457 **Author:** [@fstybel](https://github.com/fstybel) **Created:** 1/13/2023 **Status:** ✅ Merged **Merged:** 3/4/2023 **Merged by:** [@j-f1](https://github.com/j-f1) **Base:** `master` ← **Head:** `nordigen` --- ### 📝 Commits (10+) - [`277e352`](https://github.com/actualbudget/actual/commit/277e352917b85a110fa87243199e11efcce4f9a5) Update gitignore about .idea folder - [`bedd4a9`](https://github.com/actualbudget/actual/commit/bedd4a9023ebc383a78dfe017470de4e275718b3) Add integration with Nordigen - [`a6e8b70`](https://github.com/actualbudget/actual/commit/a6e8b70ffa04a8d4bb1eba0f0eb1af7ec149753b) Merge remote-tracking branch 'origin/master' into nordigen - [`fb5941c`](https://github.com/actualbudget/actual/commit/fb5941ccfc1540afc27b04a2278245d436673af2) Fix linter - [`572f375`](https://github.com/actualbudget/actual/commit/572f37518c7ced34842870ebb8b7faa78e221003) Use longer access to the account - [`d4e5073`](https://github.com/actualbudget/actual/commit/d4e5073c4d369732871cf88b922b99277a5ecc29) Move normalizatoin of accounts to the backend side - [`dba0196`](https://github.com/actualbudget/actual/commit/dba01967b06147e70454f9479b0912904c44e220) Fix possibility to force remove account - [`83830f1`](https://github.com/actualbudget/actual/commit/83830f101a8c75fc1f19f6efdc943918f290b3b3) Merge remote-tracking branch 'origin/master' into nordigen - [`085e919`](https://github.com/actualbudget/actual/commit/085e919ea0ecc90096aa3da6fdfd607e4405a8ac) Move normalization of transactions to the backend side - [`0a957c6`](https://github.com/actualbudget/actual/commit/0a957c66f322beb13cf6d9d1d6ff4edb926c37a1) Merge remote-tracking branch 'origin/master' into nordigen ### 📊 Changes **19 files changed** (+1221 additions, -172 deletions) <details> <summary>View changed files</summary> 📝 `.gitignore` (+1 -0) 📝 `packages/desktop-client/src/components/FinancesApp.js` (+2 -0) 📝 `packages/desktop-client/src/components/Modals.js` (+21 -3) 📝 `packages/desktop-client/src/components/accounts/Account.js` (+2 -2) 📝 `packages/desktop-client/src/components/accounts/AccountSyncCheck.js` (+2 -16) 📝 `packages/desktop-client/src/components/modals/CreateAccount.js` (+1 -1) ➕ `packages/desktop-client/src/components/nordigen/NordigenLink.js` (+21 -0) ➕ `packages/desktop-client/src/nordigen.js` (+40 -0) 📝 `packages/loot-core/src/client/actions/account.js` (+24 -6) 📝 `packages/loot-core/src/server/accounts/link.js` (+74 -0) 📝 `packages/loot-core/src/server/accounts/sync.js` (+402 -0) 📝 `packages/loot-core/src/server/main.js` (+254 -14) 📝 `packages/loot-core/src/server/post.js` (+2 -1) 📝 `packages/loot-core/src/server/server-config.js` (+1 -0) 📝 `packages/loot-core/src/server/sync/index.js` (+13 -4) 📝 `packages/loot-design/src/components/common.js` (+12 -2) 📝 `packages/loot-design/src/components/modals/ConfigureLinkedAccounts.js` (+1 -1) ➕ `packages/loot-design/src/components/modals/NordigenExternalMsg.js` (+156 -0) 📝 `packages/loot-design/src/components/modals/SelectLinkedAccounts.js` (+192 -122) </details> ### 📄 Description This PR integrates the app with [Nordigen](https://nordigen.com/en/) to allow account sync with banks - balance, account info, and transfers. Related backend PR: https://github.com/actualbudget/actual-server/pull/74 ## Bank integrations Unfortunately, Nordigen not provides one common interface for all banks' data we have to add write implementation for new banks. I wrote a simple [README file](https://github.com/actualbudget/actual-server/blob/087eff6cd4884ecb31eaa5c1ddbdc01a8aff31e4/app-nordigen/README.md) which describes it. But generally, we have to create a new class for the new bank and add implementation for three methods. I provided at the beginning implementation for two Poland Banks and for Nordigen Sandbox bank for tests. ### Available banks - ING PL - MBANK Retail PL - NORDIGEN Sandbox (for testing) ## Demo https://user-images.githubusercontent.com/8612503/189112287-ac8f70ac-3e6f-4586-b6c2-99cda514db46.mov ## How to setup it up locally 1. Create a Nordigen account and generate API credentials 2. Put keys in the `config.json` file in the root of the backend repository ``` { "nordigen_secret_id": "xxxx", "nordigen_secret_key": "xxxxx" } ``` 3. Launch backend from the [PR](https://github.com/actualbudget/actual-server/pull/74) with Nordigen API credentials ` yarn start` 4. Launch frontend: `yarn start:browser` ## Things to improve: ### Backend - [ ] Create a new endpoint that provides a list of the integrated banks - [ ] Improve error handling (request limit exceeded, Bank service not available) ### Frontend - [ ] Add tests on the frontend side - [ ] Fetch available bank integration from the backend instead of a hardcoded list - [ ] Tweek the UI for new functionalities - [ ] Add an option to select for how long period we want to establish access to our bank ( backend is ready for that) - [ ] Add a progress bar to inform users about the process of importing data after when we add new accounts - [ ] **Add linking transactions between our accounts** - [ ] Display somewhere when access to the account will expire and automatically ask for re-link of accounts --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-02-28 20:37:12 -06:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#3150