Rules
Rules automate changes to transactions in Actual Budget. Actual Bench gives you a full condition/action builder that shows resolved entity names instead of raw IDs, plus power tools — templates, formulas, duplicate merging, and CSV round-trip — that the native rule editor doesn’t offer. To find problems across your rule set, use the separate Rule Diagnostics linter.
Open Rules from the Data Management sidebar section.
What you get beyond Actual Budget
Section titled “What you get beyond Actual Budget”- Resolved entity names everywhere — payees, categories, and accounts show as readable chips, and search matches them by name, so you never hunt through raw IDs.
- Handlebars templates and Excel-style formulas with dedicated editor affordances.
- Bulk-merge duplicate and near-duplicate rules into one.
- CSV import and export of your entire rule set for bulk edits and backup.
- A read-only linter — Rule Diagnostics — that flags missing references, shadowed rules, duplicates, and more.
What rules do
Section titled “What rules do”A rule has conditions (when it applies) and actions (what it changes), and runs at a stage. Actual Budget applies rules when a transaction is created or imported.
Understand rule stages
Section titled “Understand rule stages”Rules run in three stages, in order: pre, default, then post. Use stages to control
which rules run before others (for example, normalize an imported payee in pre, then categorize in
default).
Create a basic rule
Section titled “Create a basic rule”- On the Rules page, create a rule to open the editor.
- A new rule starts with a guided default condition (
Payee is) and a default action row. - Set the condition field, operator, and value.
- Add an action.
- Save to stage the rule.
Validation stays neutral until you edit rows or attempt to save, then required fields are flagged, with inline warnings for risky catch-all or destructive combinations. Closing the drawer with unsaved edits prompts for confirmation.
Add conditions
Section titled “Add conditions”- Conditions support fields such as payee, imported payee, category, account, amount, and notes.
- Combine them with AND / OR logic (
conditions_op). - Operators include
is,is not,contains,matches,lt,lte,gt,gte, andoneOf, among others. Thematchesoperator shows a regex syntax hint. - Entity-reference values (payee, category, account) show as blue chips; plain string values show as green chips — so you can tell an ID reference from literal text at a glance.
Add actions
Section titled “Add actions”Common actions include set payee, set category, set account, set amount, set notes, and link schedule.
Templates
Section titled “Templates”Toggle the {} button on an action to enter template mode (Handlebars), for example
{{regex imported_payee 'foo' 'bar'}}. Templates render as an amber monospace chip in the rules table.
Formulas
Section titled “Formulas”Toggle the ƒ button on a notes or payee_name action to enter an Excel-style formula
evaluated by HyperFormula, for example =IF(ISBLANK(notes), imported_payee, notes). Formulas must
start with =. Template and formula modes are mutually exclusive per action row.
Edit, duplicate, filter, and search
Section titled “Edit, duplicate, filter, and search”- Duplicate a rule with one click.
- Filter the list by stage, payee, or category.
- Search resolves entity names — searching “Groceries” finds rules whose
oneOfcondition references that payee or category by ID. Resolved names are shown throughout (no raw IDs). - Links from the Payees and Categories pages filter the rules list to that entity automatically.
Merge rules
Section titled “Merge rules”- Select the rules to combine.
- Choose Merge to open the merge dialog (it shares the main editor’s sections and validation).
- Review the merged result; the Delete originals checkbox is pre-ticked for full duplicates and unticked for near-duplicates.
- Confirm to stage the merge.
Merging from a Rule Diagnostics finding returns you to the diagnostics report afterward so cleanup flows naturally.
Schedule-generated rules
Section titled “Schedule-generated rules”Rules created by schedules (those with a link-schedule action) are shown read-only on the Rules
page and are excluded from bulk selection and merge. Manage them from the Schedules
page.
Import and export
Section titled “Import and export”Rules import/export uses a long CSV format — one condition or action per row, grouped by a rule_id.
Key columns: rule_id, stage, conditions_op, row_type (condition/action), field, op, and
value (use | to separate multi-value oneOf values). Formula values are exported with a leading
' so spreadsheets don’t evaluate them; the prefix is stripped on re-import.
Examples
Section titled “Examples”A few practical patterns (use your own payees and categories):
- Categorize by payee — condition
Payee is "Fresh Market", actionset category "Groceries". - Normalize imported text — a
pre-stage template action onpayee_name:{{regex imported_payee 'SQ \*' ''}}. - Fall back to imported payee — a formula on
notes:=IF(ISBLANK(notes), imported_payee, notes). - Route by amount — condition
amount gt 100000, actionset category "Large Purchases".
Safety and limitations
Section titled “Safety and limitations”- Because Actual Budget runs rules on transaction create, a saved rule can change a transaction differently than you expect if other rules also apply. Use stages to order them.
Troubleshooting
Section titled “Troubleshooting”- A rule doesn’t run — check its stage and whether an earlier-stage rule already changed the field.
- AND/OR confusion — verify
conditions_op; AND requires all conditions, OR any. - A regex isn’t matching — check the
matchessyntax hint. - A template/formula won’t save — formulas must start with
=; template and formula modes are mutually exclusive per row. - A schedule-linked rule can’t be edited — manage it from the Schedules page.
Related pages
Section titled “Related pages”- Rule Diagnostics — lint your rule set for problems
- Schedules
- ActualQL
