> ## Documentation Index
> Fetch the complete documentation index at: https://docs.finta.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Custom Transaction Categories with Rules

> Override auto-assigned categories on transactions using the Rules engine. Assign your own category labels to any transaction based on merchant name, amount, or description.

Finta automatically assigns categories to your transactions based on what your bank reports. If you want to use your own category names instead — or assign categories that match your personal budget system — the **Rules** engine lets you do exactly that.

## How it works

A Rule has two parts:

* **Conditions** — the criteria a transaction must match (e.g., merchant name contains "Whole Foods")
* **Outcome** — what happens when a transaction matches (e.g., set Category to "Groceries")

When you run a rule, Finta looks at every transaction in your destination, applies the conditions, and updates any matching transactions.

## Setting up a rule

Go to your destination in Finta, then click **Rules** in the sidebar. Click **Create Rule** to start.

### Step 1: Add a condition

Choose one or more conditions to identify the transactions you want to categorize:

| Condition                | What it matches                                   |
| ------------------------ | ------------------------------------------------- |
| **Merchant Name**        | The merchant name (e.g., "Whole Foods", "Amazon") |
| **Summary**              | The transaction description                       |
| **Original Description** | The raw description from your bank                |
| **Amount**               | The transaction amount (inflow or outflow)        |
| **Account**              | A specific account                                |
| **Transaction Day**      | Day of the month (1–31)                           |

Each condition supports operators like **contains**, **equals**, **starts with**, **greater than**, **regex**, and more. Multiple conditions are combined with AND logic.

**Example:** To match all grocery store visits at Whole Foods:

* Condition: **Merchant Name** → **contains** → `Whole Foods`

### Step 2: Set the outcome

Click **Next** to move to outcomes. Click **Add Outcome** and select **Update Category**.

A dropdown appears showing all categories currently in your destination's Categories table. Select the category you want to assign.

**Don't see the category you need?** Type it in the search box and click **Create \[Name] Category**. Finta will add it to your Categories table in real time and use it for this rule.

### Step 3: Run the rule

Click **Create Rule**. On the next screen, click **Run Rule** to apply it immediately to all existing transactions in your destination. Any transaction that matches your conditions will have its category updated.

New transactions that sync in the future will also have the rule applied automatically.

## Does the category need to exist first?

**When you have a Categories table configured:** the dropdown shows only categories that already exist in your destination. You can create new ones on the fly by typing the name — Finta creates the category entry and assigns it in one step.

**When you don't have a Categories table configured:** the outcome shows a plain text input. You can type any string, but since there's no Categories table to link to, the value won't connect to a category record.

For the best experience — especially in Notion and Airtable where Category is a relation field — make sure your destination has a Categories table set up.

## Worked example

**Goal:** Stop using Plaid's auto-category for grocery transactions and assign a custom "Groceries" label instead.

1. Go to your destination → **Rules** → **Create Rule**
2. Add condition: **Merchant Name** contains `Whole Foods`
3. Click **Next** → **Add Outcome** → **Update Category**
4. Type `Groceries` in the search box, then click **Create Groceries Category**
5. Click **Create Rule**, then **Run Rule**

Result: all existing Whole Foods transactions get "Groceries" as their category, and new ones will too.

## Tips

**Use multiple conditions for precision.** If a merchant name matches transactions you don't want to recategorize, add a second condition (like an amount range) to narrow the match.

**Rules run in priority order.** If a transaction matches multiple rules, the highest-priority rule wins. You can reorder rules from the Rules page.

**Rules apply at sync time.** After your initial run, rules automatically apply to new transactions as they come in — you don't need to re-run manually.

## Two kinds of rules

Finta has two rule layers that work together:

* **Transaction rules** apply to your data *stored in Finta*. They run when transactions sync into Finta and shape what every consumer sees: the API, the [MCP](/mcp/overview), and **every** destination. Manage them via the API (`/api/v2/rules`) or the MCP (`create_rule`, `run_rules`). They can set a category, set a merchant name, or hide a transaction. A transaction you've categorized by hand is never recategorized by a rule.
* **Destination rules** (the ones on this page) apply *when Finta writes to one specific destination*. They layer on top of transaction rules, so you can customize a single destination. For example, mapping to a different category name in Airtable, or filling a custom field that only exists in that table.

If you only use a destination, you only need destination rules. If you use the API or MCP (with [Storage Mode](/getting-started/storage-mode) on), transaction rules give you categorization that follows your data everywhere.
