[PR #5730] [WIP] Enable budget planning by pay periods #13138

Closed
opened 2026-04-10 21:48:19 -05:00 by GiteaMirror · 0 comments
Owner

Original Pull Request: https://github.com/actualbudget/actual/pull/5730

State: closed
Merged: No


Pitch:
The biggest challenge with any budget is knowing you’ll have the right amount of money at the right time. Actual Budget’s envelop method does a great job of tracking this by encouraging you to plan only with the money you currently have.

A Pay Period view would allow for planning in income driven slices. Instead of an arbitrary month, a user could select whether they get paid weekly, bi-weekly, etc. and there budget view would be broken down in that time range (e.g Aug 29th - Sep 12th). This allows for planning with numbers proportional to and with the time reference of your income.

Additionally, a Pay Period view solves the Tracking Budget’s biggest issue. Since the time slices are income driven, you can be more confident you’ll have the right amount of money when you need it.

Key architecture pieces:

  • Uses month IDs YYYY-13 through YYYY-99 for pay periods (vs YYYY-01 to YYYY-12 for calendar months)
  • No database schema changes - reuses all existing month infrastructure
  • Module singleton pattern for config management (synced from preferences on both frontend/backend)
  • Pay period ID presence = proof of enablement (eliminates redundant config checks)

Completed Functionality:

Experimental Feature Flag:
image

Pay Period Configs:
image

  • This Supports Monthly, Bi-Weekly, and Weekly

Toggleable Pay Periods vs Month view
image

  • MonthPicker shows the Month and the count of how many pay periods are in that month. In this example Aug shows 3 because the pay period started on Aug 29th. September does not include that in its count
**Original Pull Request:** https://github.com/actualbudget/actual/pull/5730 **State:** closed **Merged:** No --- **Pitch:** The biggest challenge with any budget is knowing you’ll have the right amount of money at the right time. Actual Budget’s envelop method does a great job of tracking this by encouraging you to plan only with the money you currently have. A Pay Period view would allow for planning in income driven slices. Instead of an arbitrary month, a user could select whether they get paid weekly, bi-weekly, etc. and there budget view would be broken down in that time range (e.g Aug 29th - Sep 12th). This allows for planning with numbers proportional to and with the time reference of your income. Additionally, a Pay Period view solves the Tracking Budget’s biggest issue. Since the time slices are income driven, you can be more confident you’ll have the right amount of money when you need it. Key architecture pieces: - Uses month IDs YYYY-13 through YYYY-99 for pay periods (vs YYYY-01 to YYYY-12 for calendar months) - No database schema changes - reuses all existing month infrastructure - Module singleton pattern for config management (synced from preferences on both frontend/backend) - Pay period ID presence = proof of enablement (eliminates redundant config checks) **Completed Functionality:** **Experimental Feature Flag:** <img width="536" height="212" alt="image" src="https://github.com/user-attachments/assets/2e2928bd-a7ef-447d-a846-b58145482930" /> **Pay Period Configs:** <img width="537" height="123" alt="image" src="https://github.com/user-attachments/assets/6f918305-421d-4f41-a2f2-27d92bf14211" /> - This Supports Monthly, Bi-Weekly, and Weekly **Toggleable Pay Periods vs Month view** <img width="496" height="331" alt="image" src="https://github.com/user-attachments/assets/5d58ab44-fbaf-46cc-9a73-7738130eff52" /> - MonthPicker shows the Month and the count of how many pay periods are in that month. In this example Aug shows 3 because the pay period started on Aug 29th. September does not include that in its count
GiteaMirror added the pull-request label 2026-04-10 21:48:19 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#13138