mirror of
https://github.com/actualbudget/actual.git
synced 2026-07-11 10:02:07 -05:00
[Bug]: Schedule template budget calculation incorrect for multiple non-monthly scheduled transactions #2752
Open
opened 2026-02-28 20:26:42 -06:00 by GiteaMirror
·
13 comments
No Branch/Tag Specified
master
enforce-append-only-migrations-ci
delay-initial-sync-until-loaded
jfdoming/mobile-app-build
claude/error-codes-worker-boundary-26i5uu
jfdoming/api-tokens-part-1
jfdoming/api-tokens-part-2
jfdoming/api-tokens-part-3
jfdoming/mobile-app-updates
ai/simplify-categories-get-api
api-browser-custom-data-dir
claude/budget-version-migration-compat-151jlr
claude/worker-error-serialization-9iqtl7
claude/react-table-library-research-afx83z
claude/issue-8401-regression-test-9nw9l3
jfdoming/mobile-app-foundation-part-1
jfdoming/mobile-app-scaffold
release
ai-fix-cleanup-def-8290
claude/relaxed-shannon-jusywa
claude/fervent-keller-s6f2fq
claude/determined-feynman-st1y9z
claude/wizardly-einstein-vi2wce
claude/sweet-albattani-7nseio
feat/bank-sync-per-budget-file
claude/affectionate-cannon-y0kc82
claude/dependabot-findings-m9pgmb
claude/mac-app-ios-publish-zjs1lz
claude/vigilant-tesla-aiiyos
depot-migrate-secrets-1781296330308
claude/quirky-cerf-v5qck7
claude/animation-removal-alternative-2etfh1
claude/netlify-preview-comments-consolidate-9XPYa
osc/7391-error-boundaries-reports
claude/pensive-dijkstra-7DYui
claude/server-app-version-mismatch-HTCGv
claude/pr-8027-review-feedback-mELuO
claude/zealous-wozniak-e5pO0
claude/intelligent-heisenberg-BSHJq
claude/translation-download-refactor-jFRsO
claude/mobile-performance-ideas-G9PAO
claude/github-issue-7988-5A5ly
blacksmith-migration-ff70d2d
claude/great-mayer-KRvOk
claude/react-native-ios-compilation-fcJh5
claude/serene-goldberg-58xv0
claude/kind-euler-LVG3K
release-automation/edge-nightly
7710-bundle-migrations
claude/fix-docker-build-error-WMfed
claude/llm-compatible-release-notes-t20Nr
7710-tests-tdd
cursor/transaction-table-rewrite-f077
claude/plan-ci-secure-context-OtEe1
claude/fix-issue-7667-DPXi3
cursor/resolve-pr-7449-ee11
claude/fix-typescript-build-error-JPtZ5
copilot/add-repository-configs-to-packages
worktree-compressed-drifting-ritchie
claude/api-consumer-verification-kfz1K
pr-7454
claude/fix-issue-7410-LLLQ4
revert-7281-generate-icons
react-query-useSchedules
copilot/sub-pr-6140
package-upgrades
v26.7.0
v26.6.0
v26.5.2
v26.5.1
v26.5.0
v26.4.0
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
tech-support
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#2752
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 @johnallison0 on GitHub (Dec 30, 2025).
Verified issue does not already exist?
What happened?
If you create multiple annual schedules with different end dates and add them as part of a template schedule to a single category the budget calculation is incorrect.
How can we reproduce the issue?
Steps to reproduce
Schedule Template Bug.zip
Create two annual scheduled transactions (bug exists with the 'Repeats' checkbox in either state):
In December, budget £50 towards Bill A and £30 towards Bill B (total: £80 in the Test Bills category)
In January, add both schedule templates to the Test Bills category:
Expected behaviour
Actual behaviour
The template under-budgets in every month where funds are needed, with the shortfall increasing as the due dates approach.
I've attached a simple file that demonstrates the above.
Workaround
Each schedule template works correctly when:
The bug only occurs when multiple schedules with different due dates are combined in the same category.
Where are you hosting Actual?
Desktop App (Electron)
What browsers are you seeing the problem on?
Desktop App (Electron)
Operating System
Linux
@vfhykrmh4k-dot commented on GitHub (Jan 9, 2026):
Bug Report: #template schedule ignores deadline after first month
I am experiencing a similar issue where the template engine loses track of deadlines once a category has an existing balance. I believe these are related to the logic issues discussed in #6513.
Issue: #template schedule reverts to 1/12th math
Template:
#template schedule Cellphone($210 due 03/13/2026)Despite a specific schedule date in March 2026, the engine ignores the deadline once a balance exists
The template engine calculates the first month correctly but then drops to a default 1/12th calculation for the remaining months, failing to hit the goal by the schedule date.
The Error: The engine correctly identifies the "Months Remaining" in the first month, but once a balance exists in the category, it loses track of the deadline and reverts to a standard annual division.
@youngcw commented on GitHub (Jan 9, 2026):
The core issue seems to be that these aren't repeating schedules, so calculating how much is needed per month gets weird when they are stacked.
@vfhykrmh4k-dot commented on GitHub (Jan 9, 2026):
Unfortunately the calculations are also a mess with repeating schedules
Issue 3: Staggered "By Date" templates causing over-budgeting (Front-loading)
When multiple
#template [amount] by [date]lines are used in one category with staggered deadlines, the engine fails to silo the balance for each line.The Setup:
#template 203.18 by 2026-03 repeat every year#template 129.50 by 2026-05 repeat every year#template 1550.00 by 2026-05 repeat every year#template 1500.00 by 2026-12 repeat every yearJanuary 2026 Math Breakdown:
The Error:
The engine is over-budgeting by $133.63 in January. Instead of performing four independent "siloed" calculations, the logic "front-loads" future obligations (specifically from the December Road Maintenance goal) into the current month. This occurs because the engine cannot distinguish between the multiple staggered deadlines and attempts to over-collect early to "protect" the March deadline.
The Impact:
This creates an unstable budget flow. By over-collecting now, the engine will eventually "dip" the suggested amounts significantly below the required monthly averages once the early-year goals are spent, making the template appear unreliable for level-funding.
@youngcw commented on GitHub (Jan 9, 2026):
We have never found a good way to do that without storing gobs of information between months.
@vipergts450 commented on GitHub (Jan 9, 2026):
If you took the starting balance for the month for the category and then ran each template line independently, would any data need to be stored between months?
@vfhykrmh4k-dot commented on GitHub (Jan 9, 2026):
Appreciate this, would it be easier to fix the bug in #template schedule as mentioned here? I would rather then use and stack #template schedules.
@youngcw commented on GitHub (Jan 9, 2026):
So this does work properly if you spend the $100 for schedule A in February. March budgets $35 so there is $90 for schedule B.NVM, my other PR partially fixes this. Thats what I get for working on two issues at once.@youngcw commented on GitHub (Jan 9, 2026):
So PR #6610 partially fixes this. It budgets exactly whats needed if you do charge schedule A before March. If you don't it budgets too much. Better than not enough I guess. The reason it budgets too much is that since it can tell that schedule A wasn't paid out yet, it tries to budget what is needed on a per month basis for schedule B. The problem is that schedule B doesn't have a calculable per month amount since it doesn't repeat, and we dont have the information about when the schedule was created to use.
Ill keep thinking about if there is anything else I can use
@vfhykrmh4k-dot commented on GitHub (Jan 10, 2026):
Hi I have used https://deploy-preview-6610.demo.actualbudget.org/ and it fixes my issue.
Eg #template schedule Cellphone ($210 due 03/13/2026)
Jan = $70, Feb = $70, Mar = $70 Total $210
After updating to the latest Edge Docker image (Jan 10 at 7:04) and having cleared my browser cache/local storage I am still having the old issue.
Eg #template schedule Cellphone ($210 due 03/13/2026)
Jan = $70, Feb = $17.50, Mar = $17.50 Total $105
Am I correct in assuming that this Edge build should have applied the fix?
@youngcw commented on GitHub (Jan 10, 2026):
@vfhykrmh4k-dot that looks like a totally different issue than the one presented here. Please open a separate ticket
@vfhykrmh4k-dot commented on GitHub (Jan 10, 2026):
I was going to post it in https://github.com/actualbudget/actual/issues/6562 but it's closed and resolved and it's very much the same issue I am experiencing. Eg my issue is resolved in https://deploy-preview-6610.demo.actualbudget.org/ seems like you have already done the work in that demo preview and the corrected code was suppose to have been uploaded with the Edge build last night?
Do you still want me to open a separate ticket? I'm new to Github and am still learning how the work-flow works.
@youngcw commented on GitHub (Jan 10, 2026):
Add steps to recreate your issue on the other ticket then if that one is the same problem. Don't hijack unrelated tickets.
@vfhykrmh4k-dot commented on GitHub (Jan 10, 2026):
Will do, though my issue is also technically related to 6562 and 6513. Was not wanting to duplicate support tickets but in future I will create a separate ticket if my issue is not exactly as described. Apologies.