[PR #4253] [MERGED] Custom mapping and import settings for bank sync providers #5287

Closed
opened 2026-02-28 21:09:53 -06:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/actualbudget/actual/pull/4253
Author: @matt-fidd
Created: 1/28/2025
Status: Merged
Merged: 2/14/2025
Merged by: @matt-fidd

Base: masterHead: bank-sync


📝 Commits (10+)

📊 Changes

85 files changed (+1366 additions, -654 deletions)

View changed files

📝 packages/desktop-client/src/components/FinancesApp.tsx (+2 -0)
📝 packages/desktop-client/src/components/Modals.tsx (+4 -0)
packages/desktop-client/src/components/banksync/AccountRow.tsx (+92 -0)
packages/desktop-client/src/components/banksync/AccountsHeader.tsx (+37 -0)
packages/desktop-client/src/components/banksync/AccountsList.tsx (+43 -0)
packages/desktop-client/src/components/banksync/EditSyncAccount.tsx (+240 -0)
packages/desktop-client/src/components/banksync/FieldMapping.tsx (+155 -0)
packages/desktop-client/src/components/banksync/index.tsx (+138 -0)
📝 packages/desktop-client/src/components/common/Input.tsx (+3 -0)
📝 packages/desktop-client/src/components/sidebar/PrimaryButtons.tsx (+20 -3)
packages/loot-core/migrations/1739139550000_bank_sync_page.sql (+7 -0)
📝 packages/loot-core/src/client/accounts/accountsSlice.ts (+2 -0)
📝 packages/loot-core/src/client/state-types/modals.d.ts (+5 -0)
📝 packages/loot-core/src/mocks/index.ts (+6 -7)
📝 packages/loot-core/src/server/__snapshots__/main.test.ts.snap (+7 -5)
📝 packages/loot-core/src/server/accounts/__snapshots__/parse-file.test.ts.snap (+49 -0)
📝 packages/loot-core/src/server/accounts/__snapshots__/sync.test.ts.snap (+2 -0)
📝 packages/loot-core/src/server/accounts/__snapshots__/transfer.test.ts.snap (+69 -48)
📝 packages/loot-core/src/server/accounts/sync.ts (+48 -18)
📝 packages/loot-core/src/server/aql/schema/index.ts (+2 -0)

...and 65 more files

📄 Description

{\color{red}\text{This PR contains a migration, don't connect it to a server you'd like to continue using}}

Features

  • Adds a new page to manage bank sync
  • Custom mapping of fields provided by sync providers into actual per account with live examples from real data
  • Ability to enable/disable importing pending transactions per-account
  • Ability to enable/disable importing notes per-account

Notes

  • Existing transactions will not be affected unless the notes field is blank and the new mapping brings in data there wasn't before.
  • If you upload an old file, or when this is merged, the mapping functionality will not be available until a new transaction is added via sync as there is no raw data stored against the old transactions to pull the available fields from.
  • There will be another PR in the server to alter how transactions are normalised to ensure that the raw sync data is retained.

Testing

  1. Connect the preview build to a blank server running on this PR
  2. Set up bank sync with your favourite provider, the SimpleFIN test credentials work well but data provided is limited. GoCardless is better to show off the full functionality
  3. Use the bank sync page to edit settings then delete and resync some transactions to see the changes.

Screenshots

image image image

Potential TODOs

  • move notes normalisation to actual-server
  • change GoCardless handlers to retain the original raw data
  • see what other fields we can expose with SimpleFIN

Issues

Closes https://github.com/actualbudget/actual/issues/4138
Closes https://github.com/actualbudget/actual/issues/3838
Closes https://github.com/actualbudget/actual/issues/2759
Closes https://github.com/actualbudget/actual/issues/1467


🔄 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/4253 **Author:** [@matt-fidd](https://github.com/matt-fidd) **Created:** 1/28/2025 **Status:** ✅ Merged **Merged:** 2/14/2025 **Merged by:** [@matt-fidd](https://github.com/matt-fidd) **Base:** `master` ← **Head:** `bank-sync` --- ### 📝 Commits (10+) - [`a3a5b7c`](https://github.com/actualbudget/actual/commit/a3a5b7cc831f3b6a806fe160b6e12f3b8ddbac34) barebones UI - [`fa3ba98`](https://github.com/actualbudget/actual/commit/fa3ba98b2ebe48602a30e0cb21bae57ff1ee01c7) add saving and prefs - [`966e8c5`](https://github.com/actualbudget/actual/commit/966e8c546b6be6d2de2125b5ec3cb0b50c19b2bd) add last sync functionality - [`56ec090`](https://github.com/actualbudget/actual/commit/56ec0901959b586e2260809c8815471ebff4058e) use mapping for synced transactions - [`623e052`](https://github.com/actualbudget/actual/commit/623e052e0dbf9b4c8049af98197fc0424dfe1881) note - [`f538b41`](https://github.com/actualbudget/actual/commit/f538b41e2c8fab0f26daffe600f50bf1ce7d6d0c) jest -u - [`aef48d2`](https://github.com/actualbudget/actual/commit/aef48d2f3c95d6e36c2d8d4ab17700c9b4e42f70) Update VRT - [`8ce3fc0`](https://github.com/actualbudget/actual/commit/8ce3fc082e0c7ce4a404a88b47f08dd90beb7945) Coderabbit - [`a485534`](https://github.com/actualbudget/actual/commit/a4855342341ac9f77bcba40bba67df6e47053abe) add new fields - [`c5e1fcc`](https://github.com/actualbudget/actual/commit/c5e1fcc31f46b499c2c650a34df6e6d7f0d666a5) Merge branch 'master' into bank-sync ### 📊 Changes **85 files changed** (+1366 additions, -654 deletions) <details> <summary>View changed files</summary> 📝 `packages/desktop-client/src/components/FinancesApp.tsx` (+2 -0) 📝 `packages/desktop-client/src/components/Modals.tsx` (+4 -0) ➕ `packages/desktop-client/src/components/banksync/AccountRow.tsx` (+92 -0) ➕ `packages/desktop-client/src/components/banksync/AccountsHeader.tsx` (+37 -0) ➕ `packages/desktop-client/src/components/banksync/AccountsList.tsx` (+43 -0) ➕ `packages/desktop-client/src/components/banksync/EditSyncAccount.tsx` (+240 -0) ➕ `packages/desktop-client/src/components/banksync/FieldMapping.tsx` (+155 -0) ➕ `packages/desktop-client/src/components/banksync/index.tsx` (+138 -0) 📝 `packages/desktop-client/src/components/common/Input.tsx` (+3 -0) 📝 `packages/desktop-client/src/components/sidebar/PrimaryButtons.tsx` (+20 -3) ➕ `packages/loot-core/migrations/1739139550000_bank_sync_page.sql` (+7 -0) 📝 `packages/loot-core/src/client/accounts/accountsSlice.ts` (+2 -0) 📝 `packages/loot-core/src/client/state-types/modals.d.ts` (+5 -0) 📝 `packages/loot-core/src/mocks/index.ts` (+6 -7) 📝 `packages/loot-core/src/server/__snapshots__/main.test.ts.snap` (+7 -5) 📝 `packages/loot-core/src/server/accounts/__snapshots__/parse-file.test.ts.snap` (+49 -0) 📝 `packages/loot-core/src/server/accounts/__snapshots__/sync.test.ts.snap` (+2 -0) 📝 `packages/loot-core/src/server/accounts/__snapshots__/transfer.test.ts.snap` (+69 -48) 📝 `packages/loot-core/src/server/accounts/sync.ts` (+48 -18) 📝 `packages/loot-core/src/server/aql/schema/index.ts` (+2 -0) _...and 65 more files_ </details> ### 📄 Description $${\color{red}\text{This PR contains a migration, don't connect it to a server you'd like to continue using}}$$ ## Features - Adds a new page to manage bank sync - Custom mapping of fields provided by sync providers into actual per account with live examples from real data - Ability to enable/disable importing pending transactions per-account - Ability to enable/disable importing notes per-account ## Notes - Existing transactions will not be affected unless the notes field is blank and the new mapping brings in data there wasn't before. - If you upload an old file, or when this is merged, the mapping functionality will not be available until a new transaction is added via sync as there is no raw data stored against the old transactions to pull the available fields from. - There will be another PR in the server to alter how transactions are normalised to ensure that the raw sync data is retained. ## Testing 1. Connect the preview build to a blank server running on this PR 3. Set up bank sync with your favourite provider, the SimpleFIN test credentials work well but data provided is limited. GoCardless is better to show off the full functionality 4. Use the bank sync page to edit settings then delete and resync some transactions to see the changes. ## Screenshots <img width="1312" alt="image" src="https://github.com/user-attachments/assets/f44d9ff1-a236-482e-93d5-ffbe134c6143" /> <img width="811" alt="image" src="https://github.com/user-attachments/assets/f83e0cac-b913-4a6b-9559-93af2a83b40e" /> <img width="807" alt="image" src="https://github.com/user-attachments/assets/9860b068-2dee-4fd1-a3ec-f1d0b3f66eb3" /> ## Potential TODOs - [x] move notes normalisation to actual-server - [x] change GoCardless handlers to retain the original raw data - [x] see what other fields we can expose with SimpleFIN ## Issues Closes https://github.com/actualbudget/actual/issues/4138 Closes https://github.com/actualbudget/actual/issues/3838 Closes https://github.com/actualbudget/actual/issues/2759 Closes https://github.com/actualbudget/actual/issues/1467 --- <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 21:09:53 -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#5287