Bank Rules
Bank rules auto-categorize your transactions so you never categorize the same kind of activity twice. Each rule is a set of conditions (merchant, amount, description, direction, or source account) plus the actions to apply when it matches — a ledger, vendor, customer, tags, or memo. Rules run in priority order with a first-match-wins engine, fire automatically on new activity, and can be bulk-applied to history. AI can even mine your past categorizations and propose rules for you.
Key capabilities
- Multi-condition matching with all (every condition) or any (at least one) logic
- Match on description, counterparty/merchant, amount, transaction type (inflow/outflow), or source bank account
- Operators: contains, starts with, ends with, equals, regex, greater than, less than, between — plus smart word overlap for messy bank descriptors
- Actions: assign a ledger, vendor, customer, registry link, tags, a memo, or mark personal
- Priority ordering with first-match-wins; drag to reorder, and pin rules above learned bands
- Direction guard that stops an expense rule from re-booking a deposit (and vice versa), with a per-rule opt-out
- Preview any condition set against real transactions before saving
- Bulk apply to existing transactions with dry-run, date filters, and uncategorized-only scoping
- "Create rule from transaction" to turn a correctly categorized txn into a reusable rule
- AI rule suggestions from your history, surfaced as a proactive banner you can accept or skip
- Per-rule stats (lifetime matches, last matched) and a full audit panel with health and override signals
- Enable/disable without deleting; rules and matches are stamped onto each transaction for traceability
How it works
Each transaction is checked against your enabled rules in priority order (lowest number first). The first rule whose conditions match — and which passes the direction guard — wins, applies its actions, and is recorded on the transaction. Anything unmatched falls back to AI suggestion or manual categorization.
flowchart TD
txn["New transaction"] --> sort["Enabled rules sorted by priority"]
sort --> match{"Conditions match?"}
match -->|"No"| next["Try next rule"]
next --> match
match -->|"Yes"| guard{"Direction guard ok?"}
guard -->|"Blocked"| next
guard -->|"Pass"| apply["Apply actions + tag transaction"]
match -->|"None left"| fallback["AI suggestion / manual"]How to use it
- Go to Bank Rules (under Books) and click New Rule.
- Add one or more conditions — e.g. counterparty contains "Amazon" and amount less than 100.
- Pick the match logic: all (every condition) or any (at least one).
- Choose the actions: target ledger, vendor/customer, tags, memo, or mark personal.
- Click Preview to see the count and a sample of matching transactions, then Save.
- Set the priority (lower = evaluated first) or drag rules to reorder; the first matching rule wins.
- Use Apply / bulk apply to backfill history — run with dry run first, then apply to uncategorized transactions or a date range.
- Toggle rules on/off anytime, and check the Audit tab for health and override signals.
Pro tips
- Always Preview before saving — it shows exactly what a rule would match and prevents an over-broad rule from miscategorizing dozens of transactions.
- Use word overlap instead of contains for messy ACH/wire descriptors; it ignores corporate suffixes and bank boilerplate so "Wilson" no longer matches "Wilson Tennis".
- Create rules for your top 10 recurring vendors first — that typically auto-categorizes the majority of routine activity.
- Put specific rules above general ones; because the first match wins, a narrow amount-between rule should sit above a broad merchant rule.
- Let the direction guard do its job — an expense rule won't book an inflow. Only enable cross-direction for legitimate cases like refunds posted back to the original expense ledger.
- Review the Audit tab periodically: high override rates or never-matched rules are signals to rewrite or disable.
In-depth guide
Condition fields
| Field | Matches against |
|---|---|
| Description | Raw transaction description |
| Counterparty | Clean merchant name (registry name when linked) |
| Amount | Transaction amount |
| Transaction type | Inflow or outflow |
| Bank account | Source ledger or its display name |
Actions, ordering, and direction guard
Actions include ledger (category), vendor/customer, registry link, tags, memo, mark personal, and allow cross-direction. Priority runs 1–10,000 (lower first); typical bands are user-pinned (1–99), user-created (100–199), learned (200–299), AI-suggested (300–499), and merchant defaults (500+).
- An expense ledger rule won't fire on an inflow; a revenue rule won't fire on an outflow.
- Asset, liability, and equity ledgers are direction-agnostic.
- Enable allow cross-direction only for refunds and similar edge cases. Rules cannot target a bank/source account as the category ledger.
Audit panel statuses
The Audit tab triages every rule over a rolling window (default 30 days):
| Status | Meaning |
|---|---|
| Healthy | Matching as expected with a low override rate |
| Stale | Hasn't matched in ~90+ days |
| Noisy | Over-broad conditions |
| High override | Users frequently re-categorize its matches (> 25%) |
| Never matched | Has never matched a transaction |
The panel also shows per-counterparty drift, a "which rules would match?" debugger, and the transactions each rule owns.
AI suggestions
Suggest analyzes categorized transactions and returns counterparty patterns with a ready-to-create rule and confidence. A nightly refresh and on-demand Refresh drive a proactive banner. Accept materializes a real rule; Skip dismisses it.
Bulk apply and limits
Use date filters to process large histories in batches. Disabled rules are skipped during bulk apply. Rules and stats are scoped per business.