Features
Bank Sync

Bank Sync

Budget connects to financial institutions via Plaid (opens in a new tab) to import transactions automatically. See Bank Connections for setup.

Linking a Bank

  1. Go to Settings → Bank Connections
  2. Click Connect a Bank
  3. Complete the Plaid Link flow — search your institution, authenticate, and select accounts
  4. A confirmation dialog shows the linked accounts and their balances

Each linked institution is called a Plaid Item. One item can have multiple accounts (e.g., checking + savings at the same bank).

Opening Balance Detection

When you first link a bank account, Budget captures the current balance from Plaid at link time. After your first sync, Budget computes a Starting Balance transaction:

Starting Balance = account balance at link time − sum of all synced transactions

This transaction is inserted before the oldest imported transaction, so your running balance is anchored correctly from day one — no manual adjustment needed.

The starting balance is created once and only once per account, after the first sync.

Syncing

Budget syncs your transactions automatically. When your bank has new transactions, Plaid sends a notification (webhook) and Budget imports them in the background. You don't need to do anything — new transactions appear the next time you open the app.

A "Synced X ago" timestamp on each account page shows when data was last pulled.

You can also sync manually:

  • Click Sync on any linked account's transaction page to pull immediately
  • A full re-sync (cursor reset) can be triggered from Settings → Bank Connections → Re-sync All if transactions appear to be missing

Budget uses Plaid's incremental cursor-based sync — only transactions since the last sync are fetched. This is fast and avoids duplicates.

Connection Health

If your bank credentials expire or your login needs updating, Budget shows an amber reconnect banner at the top of the affected account page. Go to Settings → Bank Connections to re-authenticate.

This happens occasionally when banks require periodic re-login (typically every 90 days for some institutions).

What Gets Imported

Plaid returns both pending and posted transactions. Budget imports posted transactions as uncleared. Pending transactions are not imported.

Each transaction arrives with:

  • Date, payee name, amount
  • Plaid Personal Finance Category (PFC) — a standardized category code
  • Merchant name (when available)

Auto-Categorization

Budget attempts to assign a category to every imported transaction using two methods, in order:

1. Payee Learning (Priority)

If you've previously confirmed a transaction from this payee, Budget applies the saved payee → category rule automatically. The transaction is imported as confirmed and does not appear in the Review Inbox.

Rules are stored in the payee_category_rules table. Payee names are normalized before matching (lowercased, punctuation stripped) so minor variations still match.

2. Plaid PFC Fuzzy Match

If no payee rule exists, Budget fuzzy-matches the Plaid PFC code against your category names. For example, FOOD_AND_DRINK_RESTAURANTS will match a category named "Restaurants" or "Dining Out".

Review Inbox

Transactions that couldn't be auto-categorized land in the Review Inbox — amber-highlighted rows in the transaction register.

From the Review Inbox:

  • Sort by Date, Payee, Category, or Amount
  • Filter by payee name
  • Assign a category and Confirm — saves the payee rule for next time
  • Flag items you want to revisit
  • Select all + bulk confirm for quick processing

Confirming Teaches the App

Every time you confirm a transaction, Budget saves a payee → category rule. The next transaction from that payee is categorized and confirmed automatically — no inbox appearance. Over time, the inbox gets shorter as the app learns your patterns.

Payee Rules

View and manage learned rules in Settings → Data & Learning:

  • See how many rules are saved
  • Clear all rules to reset learning (useful after reorganizing categories)

Scheduled Transaction Matching

If you have a scheduled transaction for a recurring bill, Budget will auto-match incoming Plaid transactions to it:

ConditionTolerance
Payee nameExact normalized match
AmountWithin 10%
DateWithin 5 days

A matched transaction is auto-confirmed (skips inbox) and the scheduled item advances to its next occurrence. This prevents the same bill appearing as both a scheduled item and an unreviewed import.

Removing a Connection

Settings → Bank Connections → Remove unlinks the Plaid item. Existing transactions in Budget are not deleted. You can re-link the institution at any time.