Understand Breadbox’s two-level category hierarchy, how categories are assigned, and how to override, manage, and import categories via the API.
Breadbox uses a two-level category hierarchy to classify every transaction. Categories come from your bank provider by default, but you can override them manually or have rules assign them automatically. This page explains how the system works and how to manage categories through the admin dashboard and REST API.
A transaction’s category can be set by three sources, in increasing order of precedence:
Provider-assigned — Plaid and Teller classify transactions automatically during sync using their own enrichment pipelines. These values populate category_primary and category_detailed on initial import.
Manually overridden — You can set a category directly on any transaction from the dashboard or via the API. Manual overrides take the highest precedence and are protected from being overwritten by rules.
When you manually set a transaction’s category, Breadbox marks it with category_override = true. This flag signals to the rules engine that the transaction has a deliberate human assignment and should not be touched.
Rules that would otherwise reassign the category are skipped for any transaction where category_override = true. Tags and comments from rules still apply — only set_category actions are suppressed.
To clear a manual override and return to the provider default, call DELETE /api/v1/transactions/{id}/category. This removes the override and re-enables rule-based categorization on the next sync.
You can export your entire category tree as a tab-separated values file, edit it externally, and re-import it. This is useful for bulk setup or migrating a category structure from another system.