Search operators
Spendle supports search operators for finding specific transactions in the transaction list.
Note: This document describes the search operators for the transaction search screen. Action rules (automatic categorization) use different operators — see Action rule operators at the bottom of this document.
Basic search
Section titled “Basic search”Partial match (default)
Section titled “Partial match (default)”Without an operator, a partial match search is performed (case-insensitive).
Syntax: searchterm
Examples:
decl→ finds “decl”, “decl122024jansen”, “declaratie”, “mydeclaration”albert→ finds “Albert Heijn”, “albertstreet”, “Albertina”
Use: Ideal for quick, broad searches when the exact spelling is uncertain.
Advanced search operators
Section titled “Advanced search operators”1. Whole word match (~)
Section titled “1. Whole word match (~)”Search for a whole word, not as part of a larger word.
Syntax: ~searchterm
Examples:
~decl→ finds “decl” but NOT “decl122024jansen” or “declaratie”~ah→ finds “AH” but NOT “Albert Heijn” or “ahoy”~12.50→ finds exactly “12.50” but NOT ”€ 12.50” or “112.50”
Use: When searching for a specific word or code without false positives.
2. Exact match (=)
Section titled “2. Exact match (=)”The entire field must exactly match the search term.
Syntax: =searchterm
Examples:
=decl→ finds only transactions where the memo field is exactly “decl”=Albert Heijn→ finds only exactly “Albert Heijn”, not “Albert Heijn Amsterdam”=50→ finds only transactions where a field contains exactly “50” (not for amounts!)
Use: For very precise searches when the exact value is known.
Note: For amount filters use =50 (with a number); for text searches use =term (with text).
3. Starts with (^)
Section titled “3. Starts with (^)”Find transactions where a field starts with the search term.
Syntax: ^searchterm
Examples:
^albert→ finds “Albert Heijn”, “Albertstraat” but NOT “De Albert”^NL→ finds “NL12BANK0123”, “NL-Amsterdam” but NOT “SNL Bank”^2024→ finds “2024-01-15”, “20241501” but NOT “dec2024”
Use: Useful for finding transactions starting with a specific prefix, such as bank codes, years or brand names.
4. Ends with ($)
Section titled “4. Ends with ($)”Find transactions where a field ends with the search term.
Syntax: searchterm$
Examples:
jansen$→ finds “decl122024jansen”, “J.Jansen” but NOT “jansen123”BV$→ finds “Acme BV”, “Transport BV” but NOT “BV Nederland”2024$→ finds “dec2024”, “invoice-2024” but NOT “2024-01-15”
Use: Useful for finding transactions with specific suffixes such as company types (Ltd, Inc) or years at the end.
5. Exclusion / NOT (-)
Section titled “5. Exclusion / NOT (-)”Exclude transactions that match the search term.
Syntax: -searchterm
Examples:
-albert→ shows EVERYTHING except transactions containing “albert”-~decl→ shows everything except transactions containing the whole word “decl”-^AH→ shows everything except transactions starting with “AH”
Use: Filter out unwanted results from search results.
Combining: The - operator can be combined with other operators:
-~word→ exclusion of whole word-=exact→ exclusion of exact match-^start→ exclusion of starts-with
Combining multiple search terms
Section titled “Combining multiple search terms”AND logic (space)
Section titled “AND logic (space)”Multiple words separated by spaces work as AND — all words must be present.
Examples:
albert heijn→ finds transactions containing BOTH “albert” AND “heijn”decl 2024→ finds transactions containing BOTH “decl” AND “2024”~ah amsterdam→ finds transactions with the whole word “ah” AND “amsterdam”
OR logic (comma)
Section titled “OR logic (comma)”Multiple search terms separated by commas work as OR — at least one must be present.
Examples:
albert,jumbo→ finds transactions with “albert” OR “jumbo”~ah,~plus→ finds transactions with the whole word “ah” OR “plus”^NL,^BE→ finds transactions starting with “NL” OR “BE”
Amount filters
Section titled “Amount filters”In addition to text operators, filtering by amount is also supported:
Syntax:
>50→ greater than 50>=50→ greater than or equal to 50<100→ less than 100<=100→ less than or equal to 100=50→ exactly 50 (note: for amounts, not text!)
Combining with text:
albert >50→ transactions with “albert” AND amount > 50~ah >=20 <=100→ whole word “ah” AND amount between 20 and 100
Which fields are searched?
Section titled “Which fields are searched?”The search function searches the following fields:
- Memo (note)
- Description
- Counterparty account
- Relation
- Category
- Account
- Group
- Annotation
- Transaction ID
- Tag
- Amount
Practical examples
Section titled “Practical examples”Scenario 1: Find a specific supermarket
Section titled “Scenario 1: Find a specific supermarket”Problem: Searching “AH” also returns results containing “ahoy”, “sahara”, etc.
Solution: ~ah
This finds only the whole word “AH”.
Scenario 2: Filter recurring costs
Section titled “Scenario 2: Filter recurring costs”Problem: All large expenses are to be shown, except fixed costs.
Solution: >100 -rent -energy -water
This shows expenses above 100, but excludes rent, energy and water.
Scenario 3: Search for IBAN transactions
Section titled “Scenario 3: Search for IBAN transactions”Problem: Searching for Dutch IBANs.
Solution: ^NL
This finds all transactions with fields starting with “NL”.
Scenario 4: Find old expense claims
Section titled “Scenario 4: Find old expense claims”Problem: Finding expense claims from 2024.
Solution: decl 2024 or ^decl 2024$
The first finds all transactions with both words, the second is more specific.
Scenario 5: Excluding multiple stores
Section titled “Scenario 5: Excluding multiple stores”Problem: All transactions are to be shown except supermarkets.
Solution: -albert -jumbo -aldi -lidl
Or with whole words:
-~ah -~plus -~coop
Tips & tricks
Section titled “Tips & tricks”-
Start broad, then refine: Begin with a simple search term and add operators to narrow down.
-
Combine smartly: Use
^for the start and$for the end in a single search term:^decl2024$ -
Exclusion is powerful: Use
-to quickly filter out irrelevant results. -
Test operators: Try without an operator first, then with one to see the difference.
-
Case-insensitive: All searches are case-insensitive, so
AH,ahandAhreturn the same results. -
Operators work everywhere: The operators work in all fields, not just in memo.
Cheatsheet — Transaction search
Section titled “Cheatsheet — Transaction search”| Operator | Function | Example | Finds |
|---|---|---|---|
| (none) | Partial match | decl | ”decl”, “declaratie”, “decl123” |
~ | Whole word | ~decl | ”decl” (not “declaratie”) |
= | Exact | =decl | Only exactly “decl” |
^ | Starts with | ^albert | ”Albert Heijn”, “Albertstraat” |
$ | Ends with | jansen$ | ”J.Jansen”, “decl-jansen” |
- | NOT / Exclusion | -albert | Everything except “albert” |
| (space) | AND | decl 2024 | Contains “decl” AND “2024” |
, | OR | ah,plus | Contains “ah” OR “plus” |
Action rule operators
Section titled “Action rule operators”Action rules (automatic categorization) use different matching logic than the transaction search screen. Below are the operators for action rules:
How action rules combine fields
Section titled “How action rules combine fields”An action rule has multiple fields that can be filled in:
Fields in an action rule:
- Memo — note field of the transaction
- Description — description field of the transaction
- Amount Min — minimum amount (separate field, not
>50syntax) - Amount Max — maximum amount (separate field, not
<100syntax) - Account — which account
- Type — IN (income) or OUT (expenses)
How they combine:
-
Memo and Description = OR logic
- Memo only → must match the memo field
- Description only → must match the description field
- Both filled → either one must match (OR)
-
Other fields = AND logic
- Amount Min/Max, Account, Type
- These must all match together with memo/description
Practical examples:
| Memo | Description | Amount Min | Amount Max | Matches when… |
|---|---|---|---|---|
decl* | (empty) | (empty) | (empty) | Memo starts with “decl” |
| (empty) | ALBERT HEIJN | (empty) | (empty) | Description contains “ALBERT HEIJN” |
decl* | ALBERT HEIJN | (empty) | (empty) | Memo starts with “decl” OR description contains “ALBERT HEIJN” |
decl* | (empty) | 50 | (empty) | Memo starts with “decl” AND amount ≥ 50 |
decl* | ALBERT HEIJN | 50 | 200 | (Memo starts with “decl” OR description contains “ALBERT HEIJN”) AND amount between 50–200 |
decl* | (empty) | 50 | (empty) + Type: OUT | Memo starts with “decl” AND amount ≥ 50 AND expense |
Important note: In action rules, separate fields are used for amount filters (Min/Max), not the >50 or <100 syntax. That syntax only works in the transaction search screen.
Basic matching
Section titled “Basic matching”Automatic smart matching:
- Patterns >4 characters: substring match (finds anywhere in the text)
- Patterns ≤4 characters: whole word match (prevents false positives like “BP” in “subpage”)
Examples:
decl(4 chars) → finds “decl” but NOT “decl072024” (whole word)albert(6 chars) → finds “albert”, “albertheijn”, “Albertstraat” (substring)
Wildcard operator (*)
Section titled “Wildcard operator (*)”Use * as a wildcard for flexible matching.
Syntax:
pattern*→ starts with “pattern”*pattern→ ends with “pattern”*pattern*→ contains “pattern” (forces substring match)pattern*2024→ starts with “pattern” and ends with “2024”
Examples:
decl*→ finds “decl”, “decl072024Jansen”, “decl122024”, “declaratie”*2024→ finds “decl2024”, “invoice2024”, “dec-2024”*AH*→ finds “AH”, “Albert Heijn”, “AHOY” (substring)dec*2024→ finds “dec-2024”, “december2024”, “decl072024”
Use: Ideal for matching codes with variable suffixes such as “decl072024”, “decl122024”, etc.
Exact word match (=)
Section titled “Exact word match (=)”Force whole word match regardless of length.
Syntax: =pattern
Examples:
=ah→ finds “AH” but NOT “Albert Heijn” or “ahoy”=2024→ finds “2024” but NOT “dec2024” or “20241215”
Exclusion (-)
Section titled “Exclusion (-)”Exclude matches (veto).
Syntax: -pattern
Examples:
-private→ does NOT match if “private” is present-test→ excludes test transactions
Use: Prevent a rule from being applied to certain transactions.
Required (+)
Section titled “Required (+)”Match must be present (AND condition).
Syntax: +pattern
Examples:
albert,jumbo +supermarket→ matches “albert” OR “jumbo”, but ONLY if “supermarket” is also present
Use: Add an extra condition to a rule.
Combinations in action rules
Section titled “Combinations in action rules”Multiple patterns can be combined with commas (OR logic):
Examples:
decl*,declaratie→ matches everything starting with “decl” OR containing “declaratie”=ah,=plus,=coop→ matches exact words “ah”, “plus” or “coop”albert*,-test→ starts with “albert” but NOT if “test” is present*2024,*2023→ ends with “2024” or “2023”
Cheatsheet — Action rules
Section titled “Cheatsheet — Action rules”| Operator | Function | Example | Finds |
|---|---|---|---|
| (none, >4 chars) | Substring match | albert | ”albert”, “albertheijn” |
| (none, ≤4 chars) | Whole word | decl | ”decl” (not “decl2024”) |
* | Wildcard | decl* | ”decl”, “decl072024”, “declaratie” |
= | Exact word | =ah | ”ah” (not “ahoy”) |
- | Exclusion / NOT | -private | Everything except with “private” |
+ | Required / AND | +2024 | Must also contain “2024” |
, | OR | ah,plus | ”ah” OR “plus” |
Difference between transaction search and action rules
Section titled “Difference between transaction search and action rules”| Feature | Transaction search | Action rules |
|---|---|---|
| Purpose | Quickly find transactions | Automatically categorize |
| Whole word | ~decl | decl (≤4 chars) or =decl |
| Substring | decl (default) | albert (>4 chars) or *decl* |
| Wildcard | — | decl* |
| Starts with | ^decl | decl* |
| Ends with | decl$ | *decl |
| AND | space | +pattern |
| OR | comma | comma |
| NOT | -decl | -decl |
Key difference: Action rules use automatic smart matching (short patterns = whole words) and wildcards, while transaction search uses explicit operators.
Technical details
Section titled “Technical details”- Case-insensitive: All searches and rules are case-insensitive
- Multiple fields: Operators work on all searchable fields
- Backward compatible: Existing searches and rules continue to work
- Combinable: Operators can be combined for complex queries
- Performant: Efficient implementation with optimized regex for whole words and wildcards