7. Planned transactions
A planned transaction is a template that either automatically generates real transactions at a fixed cadence, or pre-generates planned occurrences that you confirm before they are booked.
When to use it
- The amount and category are fixed (or rarely change) → use Fixed amount mode.
- You want to be notified before each due date and decide whether to confirm, skip, or reschedule → use Planned occurrence mode.
- It's a one-time future payment you want to track → use Once scheduling mode.
Creating a planned transaction
Open the Transactions menu in the navigation bar and select Planned, then click + New planned.
Scheduling mode
| Mode | Behaviour |
|---|---|
| Simple | Repeats at the chosen frequency. Generates real transactions automatically. |
| Once | Single occurrence at the start date. No frequency needed. |
| Custom dates | Explicit list of specific dates you define. Occurrences are generated for dates within the next 60 days. |
| Custom rule | Structured rule built with a visual editor (frequency, interval, day-of-month, weekday position, yearly month/day). |
Amount mode
| Mode | Behaviour |
|---|---|
| Fixed | Every occurrence uses the template amount. |
| Variable | Amount must be entered when confirming the occurrence. |
Once mode always uses Fixed amount — the Variable option is not available for one-time entries.
Frequency (SIMPLE mode)
| Frequency | Behaviour |
|---|---|
| Daily | Every day |
| Weekly | Every 7 days |
| Biweekly | Every 14 days |
| Monthly | Same day next month (clamped to month-end if needed) |
| Quarterly | Every 3 months |
| Yearly | Same date every year |
Reminder lead days
How many days before the due date you receive a reminder email (default: 3, range: 0–30).
Other fields
- Type — Income / Expense / Transfer.
- Account (and destination account for transfers).
- Amount and description.
- Category — optional (not used for transfers).
- Tags — optional, inherited by every generated transaction.
- Start date — must be in the future (tomorrow or later). In Custom dates mode this field is hidden; the start date is automatically derived from the earliest date in the custom dates list.
- End date — optional, open-ended if blank.
- Active — toggle pause/resume without deleting the template.
Planned occurrence lifecycle
When a recurring template is active, the daily cron generates PlannedOccurrence entries 60 days ahead. Each occurrence passes through the following states:
PLANNED → READY_TO_CONFIRM (reminder email sent N days before due date)
→ EXPIRED (due date passed without action)
READY_TO_CONFIRM → EXECUTED (you confirm and book the transaction)
EXPIRED → EXECUTED | SKIPPED | RESCHEDULED (your decision in the UI)
A red badge appears on the Planned nav link and a warning banner on the dashboard whenever you have EXPIRED occurrences awaiting a decision.
How direct transactions are generated (SIMPLE mode)
A separate command (app:recurring:process) runs daily and creates real transactions directly from active SIMPLE templates whose next occurrence is today or earlier. It advances next_occurrence after each generation.
If the cron was paused, every missed occurrence is caught up in order on the next run.
List and filters
The Planned page header offers — just like the executed transactions list and the dashboard — a separate account switcher button (shown only when you have more than one account). By default the All accounts view is active, but you can pick a single account — then only planned entries whose schedule belongs to that account are shown (for transfers, the source or the target account counts too).
The Planned page has a collapsible filter bar (click the Filter button to expand it). The badge on the button shows the number of active filters.
Available filters:
- Description — partial text search with autocomplete suggestions
- Type — Income / Expense
- Scheduling mode — Simple / Once / Custom dates / Custom rule
- Amount mode — Fixed / Variable
- Tags — multi-select; an AND / OR rule can be chosen next to the field:
- All tags (AND) — default: only entries carrying every selected tag
- Any tag (OR) — entries carrying at least one selected tag
- Active — All / Active / Inactive
- Date range — filters by next occurrence date
Deletion
Deleting a template does not affect transactions or planned occurrences that were already generated — they stay untouched. Only future automatic generation is stopped.