mirror of
https://github.com/actualbudget/actual.git
synced 2026-03-09 03:32:54 -05:00
[Feature] Custom Fields for transactions #1668
Closed
opened 2026-02-28 19:50:30 -06:00 by GiteaMirror
·
3 comments
No Branch/Tag Specified
master
claude/fix-simplefin-ssrf-T31gX
claude/release-notes-validation-X7rvR
matiss/7155
claude/fix-simplefin-batch-sync-O8LcD
ai/custom-theme-dual-prefs
matiss/fix-6804
add-claude-github-actions-1772738270730
claude/analyze-internal-errors-4k6O2
react-query-rules
react-query-useSchedules
matiss/separate-lint-format
dependabot/npm_and_yarn/ajv-6.14.0
cursor/sync-performance-notification-9899
react-query-prefs
matiss/chunked-sync-and-progress-ux
v26.2.1
copilot/sub-pr-6880
fix-react-query-clear-on-close-budget
copilot/sub-pr-6140
feat/auto-note
feat/scoped-bank-sync
cursor/desktop-transactions-react-table-1d0c
fix-exhaustive-deps-App
copilot/fix-find-replace-bug
release/v26.2.0-pre
matiss/browser-tests
mobile-fix-drag-and-drop-across-groups
budget-table-v2
PayeeAutocomplete2
pglite
bugfix/plugins/fix-plugins-sw
feat/plugins/plugins-core-package
prerelease
matiss/unicode-minus-fix
cursor/fix-actual-github-issue-6206-gemini-3-pro-preview-9c37
TransactionFormPage
cursor/implement-mortgage-and-loan-account-type-78ca
tests-update-fill-with-pressSequentially
mobile/link-modal
deps/25.11
cursor/fix-update-vrt-apply-ci-job-dispatch-b324
sync-server-plugins
cursor/propose-patch-for-github-issue-5680-2a18
fix/compiler-preserve-inner-dollar-escapes
cursor/analyze-actual-budget-issue-and-propose-fix-5b70
coderabbitai/docstrings/0c070e5
cursor/add-wip-prefix-and-comment-to-prs-d78d
jfdoming/08-21-auto-focus-on-navigate-in-all-browsers
show-totals-on-mobile-budget-banners
allow-child-transactions-make-transfer
mobile-calculator-keyboard
payee-geolocation
enhance/restore_scroll_position
dm-fix-second-click-on-mobile-new-transaction-2
scrollToLocationBudget
alert-autofix-38
tsconfig-composite
mobile-fix-uncategorized-transactions-on-tracking-budgets
server-budget-handlers
fix-sql-injection-in-cleanup-template
non-chrome-draggable-workaround
mobile-budget-page-swipe-navigation
ts-db-all
stable
dark-theme-with-brand-colors
fix-mobile-delete-group
ts-db-select
UnderKoen/reconcile-context-menu
master-before-server-merge
v25.2.1
ts-runQuery
rename-redux-hooks
UnderKoen/3557-persist-state-in-history
remove-redux-CLOSE_BUDGET
fix-exhaustive-deps-errors-FinancesApp
redux-toolkit-createSlice-backup
accounts-function-component
ts-useSplitsExpanded
loot-core-server-package
useTransactios-in-TransactionEdit
react-aria-input
move-redux-to-desktop-client
QueryState-type
fix-themes-applied-late
mobile-vrts
revert-3295-spendingCardFix
react-aria-button-4
split-payee-on-mobile
twk3/pin-apis-crdt
notes-tag-autocomplete
ts-LoadBackup
dnd-kit
package-upgrades
v26.3.0
v26.2.1
v26.2.0
v26.1.0
v25.12.0
v25.11.0
v25.10.0
v25.9.0
v25.8.0
v25.7.1
v25.7.0
v25.6.1
v25.6.0
v25.5.0
v25.4.0
v25.3.1
v25.3.0
v25.2.1
v25.2.0
v25.1.0
v24.12.0
v24.11.0
v24.10.1
v24.10.0
v24.9.0
v24.8.0
v24.7.0
v24.6.0
v24.5.0
v24.4.0
v24.3.0
v24.2.0
v24.1.0
v23.12.0
v23.11.0
v23.10.0
v23.9.0
v23.8.1
v23.8.0
v23.7.2
v23.7.1
v23.7.0
v23.6.0
v23.5.0
v23.4.2
v23.4.1
v23.4.0
v23.3.2
v23.3.0
v23.2.9
v23.2.5
v23.1.12
v22.12.9
Labels
Clear labels
AI generated
API
bank sync
budgeting
bug
can’t replicate
dependencies
docker
documentation
electron
experimental feature
feature
feedback
goal templates
good first issue
help wanted
importers
maintenance
needs info
needs testing
needs triage
needs votes
openid
payees
pull-request
regression
reports
responsive
rules
schedules
server
✨ merged
split transactions
tech debt
theme
transaction import
transaction reconciliation
transactions
translations
upstream
user interface
✅ approved
wontfix
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/actual#1668
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @joeeasterly on GitHub (Dec 12, 2024).
Verified feature request does not already exist?
💻
Pitch: what problem are you trying to solve?
It would be great if users could create a custom field that is searchable by the gui and api. I save receipts for purchases in paperless-ngx. It would be great if I could add a common identifier both in paperless and actual so I can more easily associate those two records together. Another use case is if I am tracking a series of purchases over months/years towards a specific project -- for example going on vacation. I would be buying books, subscribing to youtube premium to watch lots of videos, buying clothes, getting a passport, plane tickets. Each of those items fall into separate purchase categories but I could also associate them together with a common "project name."
Describe your ideal solution to this problem
An area in settings where you can define a custom field by giving it a name, and then choosing a data type. If the only data type available was string that would be sufficient, but I could see boolean/checkbox, date, and URL (where the value is presented as a clickable link) being handy too.
Teaching and learning
An additional note that you can add custom columns of data to transactions.
@github-actions[bot] commented on GitHub (Dec 12, 2024):
✨ Thanks for sharing your idea! ✨
This repository uses lodash style issue management for enhancements. That means enhancement issues are automatically closed. This doesn’t mean we don’t accept feature requests, though! We will consider implementing ones that receive many upvotes, and we welcome contributions for any feature requests marked as needing votes (just post a comment first so we can help you make a successful contribution).
The enhancement backlog can be found here: https://github.com/actualbudget/actual/issues?q=label%3A%22needs+votes%22+sort%3Areactions-%2B1-desc+
Don’t forget to upvote the top comment with 👍!
@sidvishnoi commented on GitHub (Aug 21, 2025):
To more easily reconcile my bank statements with Actual, which contain a "narration" column (string detailing transaction ID, payment method (card/cheque/others) etc.), this custom field would be very helpful.
Additionally, I think to keep UI simple on transactions page, these fields could be hidden by default, but having them exported in CSV would be helpful with sharing.
@joaoaugustogrobe commented on GitHub (Nov 21, 2025):
I use virtual credit cards in the same account for specific purposes, like streaming services, shopping, etc. With Pluggy integration, I can find usefull information on the raw_synced_data that would be super usefull for rule creation.
I would love to create a rule like
transaction.synced_data.creditCardMetadata.cardNumber == "1234"to apply a specific category or tag.I think this relates to this feature request, as those would be custom fields for transactions.
IMO I see this being implemented as two parts:
Adding the custom fields
We need a way to manage the custom fields (CRUD operations). We could go with a JS object, stored as a JSON text on the
transactionstable; and on the UI side create a simple component for key:value edits, but also allow raw editting, for mode advanced users.Two drownbacks of this approach could be performance wise - I'm not sure the performance impacts on having JSON queries on sqlite, but this can also be mitigated by having more restrictive filters chained; and not having a schema for those custom fields make it harder for a "UI Builder" with "autocomplete/dropdown" selectors. Initially with this approach we would need to type the keys manually (check screenshots for examples)
Accessing the custom fields
We would need query capabilities for the rule condition and action (maybe using the Rule action templating), and also on filters.
With this, we would be able to query all the fields from the transaction object, allowing more flexibility.
I don't have much experience with Actual and its codebase, but this feature is something that I would be happy to contribute