Overview
The Rules API allows you to create automation rules that process transactions based on triggers and actions. Rules can automatically categorize transactions, set budgets, update descriptions, and perform many other actions based on conditions you define.List All Rules
GET /v1/rules
Query Parameters
Page number for pagination
Response Fields
Rule ID
ISO 8601 timestamp of creation
ISO 8601 timestamp of last update
Rule group ID
Rule group title
Rule title
Rule description
Execution order within group
Whether the rule is active
If true, all triggers must match (AND). If false, any trigger can match (OR)
Stop processing other rules after this one executes
When to trigger:
store-journal, update-journal, or manual-activationArray of trigger conditions
Array of actions to perform
Trigger Object
Trigger ID
Trigger type (e.g.,
description_contains, amount_more, source_account_is)Trigger value to match against
If true, inverts the trigger (NOT condition)
Trigger order
Whether this trigger is active
Stop processing other triggers after this one
Action Object
Action ID
Action type (e.g.,
set_category, set_budget, add_tag)Action value/parameter
Action execution order
Whether this action is active
Stop processing other actions after this one
Create Rule
POST /v1/rules
Request Body
Rule title (1-100 characters, must be unique)
Rule description (1-32,768 characters)
Rule group ID (required without rule_group_title)
Rule group title (1-255 characters, required without rule_group_id)
When to trigger:
store-journal, update-journal, or manual-activationIf true, ALL triggers must match (AND logic). If false, ANY trigger matching executes the rule (OR logic)
Stop processing remaining rules after this one executes
Whether the rule is active
Array of trigger objects (minimum 1, at least 1 must be active)
Array of action objects (minimum 1, at least 1 must be active)
Trigger Object Fields
Trigger type (see Trigger Types below)
Value to match (required for most trigger types, max 1024 characters)
Invert the trigger (NOT condition)
Whether this trigger is active
Stop processing other triggers after this one
Action Object Fields
Action type (see Action Types below)
Action value/parameter (required for most action types)
Whether this action is active
Stop processing other actions after this one
Common Trigger Types
Transaction Properties
description_contains- Description contains textdescription_starts- Description starts with textdescription_ends- Description ends with textdescription_is- Description exactly matchesamount_less- Amount less than valueamount_more- Amount more than valueamount_exactly- Amount exactly equalsdate_is- Date is specific datedate_before- Date before specific datedate_after- Date after specific date
Account Triggers
source_account_starts- Source account name starts withsource_account_ends- Source account name ends withsource_account_contains- Source account name containssource_account_is- Source account exactly matchesdestination_account_starts- Destination account starts withdestination_account_ends- Destination account ends withdestination_account_contains- Destination account containsdestination_account_is- Destination exactly matches
Other Conditions
transaction_type- Transaction type is (withdrawal/deposit/transfer)category_is- Category is specific categorybudget_is- Budget is specific budgettag_is- Has specific tagnotes_contain- Notes contain textno_category- Has no categoryno_budget- Has no budgetno_tag- Has no tagshas_attachments- Has attachmentshas_no_attachments- Has no attachments
Common Action Types
Set Properties
set_category- Set category by nameset_budget- Set budget by nameclear_category- Remove categoryclear_budget- Remove budgetadd_tag- Add tagremove_tag- Remove tagremove_all_tags- Remove all tagsset_description- Set descriptionappend_description- Append to descriptionprepend_description- Prepend to description
Account Actions
set_source_account- Change source accountset_destination_account- Change destination account
Other Actions
set_notes- Set notesappend_notes- Append to notesclear_notes- Remove noteslink_to_bill- Link to billconvert_withdrawal- Convert to withdrawalconvert_deposit- Convert to depositconvert_transfer- Convert to transfer
Trigger Timing:
- store-journal: Runs when a new transaction is created
- update-journal: Runs when a transaction is updated
- manual-activation: Only runs when manually triggered
Get Rule by ID
GET /v1/rules/{id}
Returns the same response fields as the List endpoint.
Update Rule
PUT /v1/rules/{id}
Accepts the same parameters as Create Rule. All fields are optional.
Delete Rule
DELETE /v1/rules/{id}
Deletes the rule. Does not affect transactions that were already processed.
Test Rule
GET /v1/rules/{id}/test
Tests the rule against existing transactions to see which ones would be affected.
Query Parameters
Start date for test range (YYYY-MM-DD)
End date for test range (YYYY-MM-DD)
Trigger Rule
POST /v1/rules/{id}/trigger
Manually executes the rule on existing transactions within the specified date range.
Request Body
Start date (YYYY-MM-DD)
End date (YYYY-MM-DD)
Array of account IDs to limit processing to
Validate Expression
GET /v1/rules/validate-expression
Validates a rule expression before creating a rule.
Query Parameters
Expression to validate
Best Practices
Rule Organization
- Use rule groups: Organize related rules into groups
- Order matters: Rules execute in order; place most important rules first
- Use stop_processing: Prevent unnecessary rule execution after a match
- Test before activating: Use the test endpoint to verify rule behavior
Efficient Trigger Design
- Be specific: Use exact matches when possible (
description_isvsdescription_contains) - Combine triggers: Use multiple triggers with strict=true for precise matching
- Use prohibited wisely: NOT conditions can slow down processing
- Deactivate unused triggers: Keep rules lean by removing inactive triggers
Action Best Practices
- One action per purpose: Don’t overcomplicate with too many actions
- Order actions logically: Some actions depend on others
- Avoid conflicts: Don’t create rules that contradict each other
- Use clear values: Make action values descriptive and consistent
Example: Multi-Condition Rule
- Only processes transactions over $50
- That contain “business” in the description
- That don’t already have a category
- Then sets category, adds tag, and appends a note