[Bug]: Can't merge transfers with new merge functionality #2131

Open
opened 2026-02-28 20:04:15 -06:00 by GiteaMirror · 6 comments
Owner

Originally created by @alecbakholdin on GitHub (May 16, 2025).

Verified issue does not already exist?

  • I have searched and found no existing issue

What happened?

Bug described here by another user @cesjn

I have been an Actual user for several months now and was really excited for the new Merge feature that came out in the latest release. In theory it should address this problem, but the current implementation seems to fall short. I have a similar situation where a transfer is made between two accounts but the transaction is duplicated in the receiving account. So I end up with the following three transactions:

Account A, $20 Payment, categorized as Transfer, matched to SimpleLink Import and marked as cleared
Account B, $20 Credit, categorized as Transfer, unmatched and not cleared (appears to result from a rule that Actual automatically created for me)
Account B, $20 Credit, Not Categorized, matched to import and marked as cleared
Before the merge function was introduced I would change the category of transaction https://github.com/actualbudget/actual/pull/1 to something else, delete transaction https://github.com/actualbudget/actual/pull/2 and then use the "make transfer" function to link https://github.com/actualbudget/actual/pull/1 and https://github.com/actualbudget/actual/pull/3 together, thus categorizing them both as a transfer (Actual then wants me to make a rule for this, which I try to always decline in order to avoid the same situation the next month when these transactions occur again).

With the merge function I had the expectation that I should simply be able to "Merge" transactions https://github.com/actualbudget/actual/pull/2 and https://github.com/actualbudget/actual/pull/3 and we should be good to go. Unfortunately, when I do so, the resulting transaction is NOT categorized as a transfer, but https://github.com/actualbudget/actual/pull/1 stays as a transfer. This results in me being unable to link https://github.com/actualbudget/actual/pull/1 and the https://github.com/actualbudget/actual/pull/2/3 merge.

So, I would propose that there is a Bug here, specifically in the new merge feature. I.e. that if you merge a "transfer" transaction with another transaction, that the resulting merged transaction should maintain the "transfer" category. The alternative would be to unlink the transaction linked to the transfer transaction (set it back to uncategorized) so that you can re-link the resulting transaction, but that seems far more complicated.

How can we reproduce the issue?

create a transfer, create a transaction. Attempt to merge the two transactions. It fails.

Where are you hosting Actual?

None

What browsers are you seeing the problem on?

No response

Operating System

None

Originally created by @alecbakholdin on GitHub (May 16, 2025). ### Verified issue does not already exist? - [x] I have searched and found no existing issue ### What happened? **Bug described here by another user @cesjn** I have been an Actual user for several months now and was really excited for the new Merge feature that came out in the latest release. In theory it should address this problem, but the current implementation seems to fall short. I have a similar situation where a transfer is made between two accounts but the transaction is duplicated in the receiving account. So I end up with the following three transactions: Account A, $20 Payment, categorized as Transfer, matched to SimpleLink Import and marked as cleared Account B, $20 Credit, categorized as Transfer, unmatched and not cleared (appears to result from a rule that Actual automatically created for me) Account B, $20 Credit, Not Categorized, matched to import and marked as cleared Before the merge function was introduced I would change the category of transaction https://github.com/actualbudget/actual/pull/1 to something else, delete transaction https://github.com/actualbudget/actual/pull/2 and then use the "make transfer" function to link https://github.com/actualbudget/actual/pull/1 and https://github.com/actualbudget/actual/pull/3 together, thus categorizing them both as a transfer (Actual then wants me to make a rule for this, which I try to always decline in order to avoid the same situation the next month when these transactions occur again). With the merge function I had the expectation that I should simply be able to "Merge" transactions https://github.com/actualbudget/actual/pull/2 and https://github.com/actualbudget/actual/pull/3 and we should be good to go. Unfortunately, when I do so, the resulting transaction is NOT categorized as a transfer, but https://github.com/actualbudget/actual/pull/1 stays as a transfer. This results in me being unable to link https://github.com/actualbudget/actual/pull/1 and the https://github.com/actualbudget/actual/pull/2/3 merge. So, I would propose that there is a Bug here, specifically in the new merge feature. I.e. that if you merge a "transfer" transaction with another transaction, that the resulting merged transaction should maintain the "transfer" category. The alternative would be to unlink the transaction linked to the transfer transaction (set it back to uncategorized) so that you can re-link the resulting transaction, but that seems far more complicated. ### How can we reproduce the issue? create a transfer, create a transaction. Attempt to merge the two transactions. It fails. ### Where are you hosting Actual? None ### What browsers are you seeing the problem on? _No response_ ### Operating System None
GiteaMirror added the transactionsuser interfacebug labels 2026-02-28 20:04:15 -06:00
Author
Owner

@alecbakholdin commented on GitHub (May 16, 2025):

Created as a result of discussion in #4899

@alecbakholdin commented on GitHub (May 16, 2025): Created as a result of discussion in #4899
Author
Owner

@karanj commented on GitHub (Sep 22, 2025):

Encountered this today, was very confused as to why it would always seem to pick the non-transfer as the merged entry.

If merge is broken when transfers are included in the merge set, is there a way to disable or caution the user trying to perform the action until a fix is developed?

@karanj commented on GitHub (Sep 22, 2025): Encountered this today, was very confused as to why it would always seem to pick the non-transfer as the merged entry. If merge is broken when transfers are included in the merge set, is there a way to disable or caution the user trying to perform the action until a fix is developed?
Author
Owner

@oddmaniv commented on GitHub (Feb 17, 2026):

Really struggling with this issue - has there been any progress / alternative methods?

@oddmaniv commented on GitHub (Feb 17, 2026): Really struggling with this issue - has there been any progress / alternative methods?
Author
Owner

@nicepopo86-lang commented on GitHub (Feb 17, 2026):

I’d like to work on this bounty issue. I’ll reproduce the transfer-merge bug, implement a focused fix, and open a PR with regression steps.

@nicepopo86-lang commented on GitHub (Feb 17, 2026): I’d like to work on this bounty issue. I’ll reproduce the transfer-merge bug, implement a focused fix, and open a PR with regression steps.
Author
Owner

@nicepopo86-lang commented on GitHub (Feb 17, 2026):

I opened a draft PR with a focused fix and regression test for this merge path:\n\n- PR: https://github.com/actualbudget/actual/pull/7000\n\nIt preserves/relinks when a merge keeps the imported transaction, so transfer pairing stays valid instead of pointing to a deleted transaction id.

@nicepopo86-lang commented on GitHub (Feb 17, 2026): I opened a draft PR with a focused fix and regression test for this merge path:\n\n- PR: https://github.com/actualbudget/actual/pull/7000\n\nIt preserves/relinks when a merge keeps the imported transaction, so transfer pairing stays valid instead of pointing to a deleted transaction id.
Author
Owner

@lmee commented on GitHub (Feb 17, 2026):

I reviewed "Can't merge transfers with new merge functionality" and read all comments before proposing a patch path.

Problem I see: - [x] I have searched and found no existing issue.
Root-cause hypothesis: inconsistent filter/query state between two rendering paths.
First patch plan: reproduce the issue against acceptance criteria, isolate the root cause in the relevant module, and submit a focused fix with regression tests.
If this aligns with maintainer expectations, I will post repro evidence first and then open the scoped patch.

@lmee commented on GitHub (Feb 17, 2026): I reviewed "Can't merge transfers with new merge functionality" and read all comments before proposing a patch path. Problem I see: - [x] I have searched and found no existing issue. Root-cause hypothesis: inconsistent filter/query state between two rendering paths. First patch plan: reproduce the issue against acceptance criteria, isolate the root cause in the relevant module, and submit a focused fix with regression tests. If this aligns with maintainer expectations, I will post repro evidence first and then open the scoped patch.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#2131