Curl Budget
Organization

Auto-Rules

Auto-Rules let you define conditions and actions that apply to transactions automatically. Set up a rule once, and every matching transactionโ€”past and futureโ€”is handled the way you want.

Auto-rules with priority and status

Rules with category assignments, priority order, and status indicators

Why Use Auto-Rules?

Auto-Rules save time and ensure consistency:

  • Fix recurring miscategorizations - If the AI always puts your gym membership in the wrong category, create a rule to fix it
  • Automate tagging - Automatically tag business expenses, shared costs, or project spending
  • Customize descriptions - Add notes or clean up merchant names automatically
  • Control transfer detection - Explicitly mark certain transactions as transfers or non-transfers

How Rules Work

Each rule has three parts:

1. Conditions

Conditions define which transactions the rule matches. You can combine multiple conditions with AND/OR logic.

2. Actions

Actions define what happens to matching transactions. A single rule can perform multiple actions.

3. Priority

Rules are evaluated in priority order. Higher-priority rules are checked first, and some actions may prevent lower-priority rules from applying.

Creating a Rule

  1. Go to Settings โ†’ Auto-Rules
  2. Tap "Add Rule"
  3. Give the rule a descriptive name
  4. Add conditions (see below)
  5. Add actions (see below)
  6. Save

Naming Your Rule

Use descriptive names that explain what the rule does:

  • โœ… "Categorize Spotify as Subscriptions"
  • โœ… "Tag all Home Depot as Home Improvement"
  • โŒ "Rule 1"
  • โŒ "Fix stuff"

Good names make rules easier to manage as your list grows.

Quick Rule Creation from Transactions

The fastest way to create a rule is directly from a transaction that matches what you want to automate.

How to Create

  1. Find a transaction you want to create a rule for
  2. Long-press the transaction
  3. Select "Create Auto Rule"
  4. The rule editor opens with conditions pre-filled

What Gets Pre-filled

  • Merchant name - Matches the transaction's merchant
  • Description - May include relevant description patterns

You then add your desired actions (set category, add tags, etc.) and save.

When to Use

Just miscategorized something: If you notice a transaction that's consistently categorized wrong, long-press it and create a rule. It's faster than manually navigating to Settings โ†’ Auto-Rules โ†’ New Rule.

Seeing a pattern: When you spot a recurring merchant that needs specific handling (tagging, categorization), create the rule right from that transaction.

Learning from corrections: After manually fixing a transaction, consider whether future transactions from the same merchant need the same treatment.

After Creating

You'll be prompted to:

  • Apply to existing - Run the rule on all matching historical transactions
  • Future only - Only apply to new transactions going forward

Choose based on whether you want to backfill or start fresh.

Condition Types

A rule can match against any of these condition fields. String fields support contains / equals / matches-pattern operators; numeric and date fields support equals / greater-than / less-than / between; account / category / tag fields support set-membership operators.

Merchant Name

The merchant or payee name as displayed in Curl Budget (after any normalization).

  • Contains โ€” name includes the given text (e.g., "STARBUCKS")
  • Equals โ€” exact match
  • Matches pattern โ€” regular expression for complex matching

Example: Merchant contains "NETFLIX" matches "NETFLIX.COM" and "NETFLIX INC".

Description

The transaction description as displayed in Curl Budget โ€” typically the descriptive line you see on the transaction list.

  • Contains โ€” description includes text
  • Equals โ€” exact match
  • Matches pattern โ€” regular expression

Useful for transactions where the merchant name is unclear but the description is informative.

Original Description

The raw description string the bank or data provider sent before any normalization. Use this when banks send a stable raw string but the displayed description varies.

  • Same operators as Description
  • Helpful when you want a rule to keep matching even if Curl's displayed description changes

Recipient

A virtual field that is the merchant name when present, falling back to the description otherwise. Match recipient when you want the rule to fire whether the bank populated merchant or only description.

  • Same operators as Description and Merchant Name
  • Equivalent to "merchant OR description" without writing it as an OR

Receipt OCR Text

Match against text extracted from any receipt attached to the transaction (via OCR). Useful for finding line items from large purchases or matching specific store receipts.

  • Same operators as other string fields
  • Requires that a receipt was captured for the transaction

Amount

Match by transaction amount.

  • Equals โ€” exact amount (e.g., exactly $9.99)
  • Greater than โ€” above a threshold
  • Less than โ€” below a threshold
  • Between โ€” within a range
  • Sign filter โ€” restrict to expenses (negative), income (positive), or compare absolute magnitude

Remember: expenses are negative, income is positive.

  • "Amount less than -100" means "expenses over $100"
  • "Amount greater than 0" means "income"

Date

Match by the calendar date of the transaction.

  • After โ€” after a specific date
  • Before โ€” before a specific date
  • Between โ€” within a date range
  • Equals โ€” exact date match

Useful for temporary rules or historical corrections.

Day of Month

Match by the day-of-the-month (1โ€“31) the transaction posts on, regardless of the calendar month.

  • Is one of โ€” match any of a list of days (e.g., 1, 15)

Useful for recurring statement-day rules โ€” "every transaction on the 1st or 15th from this account is payroll" โ€” or for catching monthly bills that hit on the same day every month.

Account

Match transactions from specific accounts.

  • Equals โ€” from a specific account
  • Any of โ€” from any of several accounts

Useful for rules like "all transactions from my business card โ†’ Tag 'Business Expense'".

Category

Match transactions already in a category by category ID.

  • Equals โ€” specific category
  • Any of โ€” multiple categories
  • Is uncategorized โ€” no category assigned

Useful for adding tags based on existing categorization, or sweeping uncategorized transactions into a default.

Tags

Match transactions with specific tags.

  • Any of โ€” has at least one of these tags
  • All of โ€” has all of these tags
  • None of โ€” has none of these tags

Useful for rules that build on previous tagging.

Combining Conditions

AND Logic

All conditions must match:

Merchant contains "UBER" AND Amount less than -50

Matches Uber rides over $50.

OR Logic

Any condition can match:

Merchant contains "LYFT" OR Merchant contains "UBER"

Matches transactions from either rideshare service.

Complex Logic

Combine AND and OR for sophisticated matching:

(Merchant contains "AMAZON" OR Merchant contains "AMZN")
AND Amount less than -100

Matches large Amazon purchases regardless of how Amazon appears in the name.

Action Types

A single rule can configure any combination of the actions below. Tag add/remove conflicts and transfer detection/exclusion conflicts are validated at save time.

Assign Category

Assign a specific category to matching transactions, or clear the category (uncategorize).

  • Overrides AI auto-categorization
  • Overrides previous manual categorization (unless "Skip if already categorized" is set)
  • Setting null removes the category from matching transactions

Add Tags

Add one or more tags to matching transactions.

  • Adds to existing tags (does not remove anything)
  • Skips tags that are already present
  • Cannot overlap with the Remove Tags action on the same rule

Remove Tags

Remove one or more tags from matching transactions.

  • Useful for cleanup rules: "if a transaction is tagged 'review-me' and now has a category, remove the 'review-me' tag"
  • Cannot overlap with the Add Tags action on the same rule

Modify Description

Update the displayed transaction description.

  • Overwrite โ€” replace the description with the given value
  • Append โ€” add text to the end of the existing description (with optional skip-if-already-present)

Modify Merchant Name

Update the displayed merchant name.

  • Overwrite โ€” replace the merchant name with the given value
  • Append โ€” add text to the end (with optional skip-if-already-present)
  • The original bank-provided merchant name is preserved in Original Description and remains matchable

Modify Note

Update the transaction's user note field.

  • Overwrite โ€” replace the note
  • Append โ€” add to the end (with optional skip-if-already-present, useful for stamping context without duplicating)

Transfer Detection

Mark matching transactions as transfers between your own accounts. See Transfer Detection for how this affects budgets and reports. Mutually exclusive with Transfer Exclusion on the same rule.

Transfer Exclusion

Mark matching transactions as definitively NOT transfers. Useful when transfer-detection heuristics misfire on a specific merchant or pattern. Mutually exclusive with Transfer Detection on the same rule.

Mark as Reviewed

Flag matching transactions as reviewed (clears the "needs review" indicator). Useful for sweeping rules that handle a known-correct pattern at scale.

Mark as Return

Flag matching transactions as returns/refunds rather than fresh income. Curl Budget will pair them with the original purchase for accurate spending totals โ€” the refund offsets the expense rather than counting as new income. Mutually exclusive with Mark as Return Adjustment on the same rule.

Mark as Return Adjustment

Flag matching transactions as the adjustment side of a return (for example, a credit card statement adjustment that posts alongside the refund). Used when the bank splits a refund into a separate adjustment line item. Mutually exclusive with Mark as Return on the same rule.

Rule Options

Skip If Category Exists

When enabled, the rule won't change the category if one is already assigned. Useful when you want to fix only uncategorized transactions.

Apply to Existing Transactions

When creating or editing a rule:

  • Apply now - Immediately apply to all matching transactions
  • Future only - Only apply to new transactions going forward

Dry Run Preview

Before applying a rule, you can preview:

  • How many transactions match
  • Sample matching transactions
  • What changes would be made

This helps catch overly broad rules before they cause problems.

Rule Priority

Rules are evaluated in order. You can drag rules to reorder them.

Why Priority Matters

If multiple rules could match a transaction:

  • Higher-priority rules are evaluated first
  • Some actions (like "Set Category") may only apply from the first matching rule
  • Other actions (like "Add Tag") can apply from multiple rules

Example Priority

  1. "All transactions from Business Card โ†’ Tag 'Business'" (specific account rule)
  2. "Uber over $50 โ†’ Tag 'Large Expense'" (specific merchant + amount)
  3. "All Uber โ†’ Category: Transportation" (general merchant rule)

A $75 Uber charge on your business card would:

  • Get tag "Business" (rule 1)
  • Get tag "Large Expense" (rule 2)
  • Get category "Transportation" (rule 3)

Managing Rules

Viewing All Rules

Settings โ†’ Auto-Rules shows:

  • All rules in priority order
  • Enable/disable toggle for each
  • Match count (how many transactions currently match)

Editing a Rule

Tap any rule to:

  • Modify conditions or actions
  • Re-apply to existing transactions
  • Test with dry run

Disabling a Rule

Toggle a rule off to:

  • Stop it from applying to new transactions
  • Keep the rule for later without deleting it
  • Troubleshoot rule conflicts

Deleting a Rule

Swipe or tap delete to remove a rule. This doesn't undo changes already made to transactions.

Running Rules Manually

Rules automatically apply to new transactions as they sync. You can also manually run rules on demand.

Running a Single Rule

Apply one specific rule to all matching transactions:

  1. Go to Settings โ†’ Auto-Rules
  2. Long-press the rule you want to run
  3. Select "Run Rule"
  4. The rule applies to all matching transactions
  5. A notification shows how many transactions were affected

When to use:

  • You just created or edited a rule and want immediate results
  • You're testing a rule to see what it matches
  • You want to apply a specific rule without running all rules

Apply All Rules

Run all active rules in priority order:

  1. Go to Settings โ†’ Auto-Rules
  2. Tap the menu icon (โ‹ฎ)
  3. Select "Apply All Rules"
  4. All enabled rules run in priority order
  5. A summary shows total changes made

When to use:

  • After importing historical transactions
  • Periodic cleanup to catch anything missed
  • After re-enabling multiple rules you had disabled

How Rules Apply

When you run rules manually:

  • Rules execute in priority order (highest first)
  • Each transaction is evaluated against all matching rules
  • Category actions apply from the first matching rule (unless "Skip if category exists" is set)
  • Tag actions can apply from multiple rules
  • Manual overrides you've made are respected

Common Rule Patterns

Fix Miscategorization

Problem: AI keeps putting gym membership in "Health" instead of "Fitness"

Rule:

  • Condition: Merchant contains "PLANET FITNESS"
  • Action: Set category "Fitness"

Tag Business Expenses

Problem: Need to track business spending across categories

Rule:

  • Condition: Account equals "Business Credit Card"
  • Action: Add tag "Business Expense"

Clean Up Merchant Names

Problem: Merchant shows as "SQ *COFFEE SHOP NYC"

Rule:

  • Condition: Merchant contains "SQ *COFFEE SHOP"
  • Action: Append " (Square)" to merchant name

Control Transfers

Problem: Rent payment to property manager looks like a transfer

Rule:

  • Condition: Merchant contains "PROPERTY MGMT"
  • Action: Mark as not transfer

Track Project Spending

Problem: Home renovation purchases are spread across categories

Rule:

  • Condition: Merchant contains "HOME DEPOT" OR Merchant contains "LOWES"
  • Action: Add tag "Home Renovation"

Tips for Effective Rules

Start Specific

Begin with narrow conditions. It's easier to broaden a rule than to fix one that's too broad.

Use Dry Run

Always preview before applying to existing transactions. Check the match count and sample transactions.

Name Clearly

Descriptive names make rules easier to manage. Future you will thank present you.

Review Periodically

Check your rules occasionally:

  • Are they still needed?
  • Are match counts as expected?
  • Are there conflicts or redundancies?

Don't Over-Engineer

Only create rules for recurring patterns. One-off corrections can be done manually.

On this page