User Guide

A practical reference for using ExMint day-to-day: connecting banks, categorizing transactions, reading reports, and keeping your data clean.

Overview

ExMint is a self-hosted personal finance dashboard. All your financial data stays on your own server. The application connects to your bank accounts using the Plaid API, pulls in transactions automatically, and gives you tools to categorize, analyze, and budget your spending.

🏦

Bank Connectivity

Link accounts at thousands of institutions via Plaid Link's guided flow.

🔄

Automatic Sync

New transactions arrive via Plaid webhooks. Trigger a manual sync any time from the dashboard.

🏷️

Custom Categories

Create color-coded categories and set rules to apply them automatically.

✂️

Transaction Splitting

Divide one transaction across multiple categories, e.g. a grocery run that includes household items.

📊

Reports & Budgets

Pivot spending by year, month, and category. Set monthly budget targets and track actuals.

🔒

Private by Design

Data never leaves your server. Plaid tokens are encrypted at rest with Fernet.

First Login

Register an Account

Navigate to your ExMint instance URL and click Create an account on the login page. Fill in your name, email address, and a password (minimum 8 characters).

Demo instance The live demo at exmint-app-stg.automatos.ca uses pre-existing test credentials. Use testuser@automatos.ca / pass_good to log in directly — no registration needed.

Approval Workflow

On instances where the admin has enabled registration approval, new accounts land in a Pending Approval state after registration. The admin receives an email with one-click approve/reject links. You will receive an email notification once your account is approved or rejected.

Registration can also be closed entirely by the admin, in which case the "Create an account" link is hidden on the login page.

Connect Your Banks

After logging in, click Connect a bank on the dashboard. This opens the Plaid Link modal — a secure, embedded flow hosted by Plaid that handles authentication with your institution directly. ExMint never sees your banking credentials.

1

Search for your institution

Type the bank name in the search box, or scroll through the list of supported institutions. Plaid supports thousands of banks, credit unions, and credit card providers.

2

Authenticate

Enter your online banking credentials in the Plaid-hosted form. Depending on the institution, you may also be prompted for a one-time code via SMS or email.

3

Select accounts

Choose which accounts (chequing, savings, credit cards) to link. You can link multiple accounts from the same institution in a single session.

4

Done

ExMint will receive your access token and immediately pull the last 30 days of transactions. The connected institution appears in your dashboard sidebar.

Supplementary cards If you have a supplementary (authorized user) credit card, Plaid may issue separate transaction IDs for the primary and supplementary card for the same charge. Use the Duplicate Transactions scanner under Maintenance to detect and clean these up.

Sandbox Credentials

If the instance is running in Plaid Sandbox mode (typical for demos and testing), use the following credentials in the Plaid Link modal to simulate a successful bank connection:

FieldValue
Usernameuser_good
Passwordpass_good
OTP / PIN (if prompted)1234

Sandbox accounts contain simulated transactions from fictional institutions (e.g. "First Platypus Bank"). No real money or real banks are involved.

Syncing Transactions

ExMint receives new transactions in two ways:

Transactions

The Transactions view is the main working area of ExMint. It displays all transactions across your connected accounts, newest first.

Filtering & Search

Use the filter bar at the top of the Transactions view to narrow the list:

FilterDescription
Date rangeSelect a start and end date to limit the view.
AccountShow transactions for one specific linked account or all accounts.
CategoryFilter to a single custom category or all uncategorized transactions.
SearchFree-text search against transaction descriptions.
New transactions Transactions that have not been viewed yet are highlighted. Opening the Transactions view marks all visible transactions as seen.

Assigning Categories

Click the category badge on any transaction row to open the category picker. Select a custom category from the dropdown. The change is saved immediately.

To remove a category assignment, click the badge and choose Uncategorized.

Splitting a Transaction

Some transactions span multiple spending categories (e.g., a grocery run that also includes a pharmacy purchase). To split a transaction:

1

Open the split dialog

Click the split icon on the transaction row (scissors icon), or open the transaction detail and click Split.

2

Add split lines

Enter an amount and category for each portion. The amounts must sum exactly to the original transaction total. Click + Add line for additional splits.

3

Save

Click Save split. The original transaction is replaced in the list by its split portions, each with its own category.

4

Remove a split (optional)

Open the split dialog on any portion and click Remove split to restore the original single transaction.

Export to CSV / Excel

Click the Export button above the transaction list to download the currently filtered view. Choose CSV for plain-text export or Excel (.xlsx) for a formatted spreadsheet. The export respects all active filters (date range, account, category, search).

Custom Categories

ExMint does not impose a fixed category taxonomy. You create exactly the categories that match how you think about your spending.

Creating Categories

Navigate to Categories in the sidebar (or via My Account → Manage Categories). Click New Category and provide:

Click Save. The category is immediately available in the transaction category picker and filter bar.

Auto-Apply Rules

Rules automatically assign a category to incoming transactions whose description matches a keyword or pattern. This saves manual work for recurring merchants.

To create a rule, open a category and click Add rule. Enter a keyword (case-insensitive substring match) such as NETFLIX or STARBUCKS. Future transactions containing that string in their description will be categorized automatically.

Apply rules to existing transactions After adding a rule, click Apply rules to existing transactions on the Categories page to retroactively categorize historical data that matches your new rules.

Spending Reports

The Reports view gives a hierarchical breakdown of spending: Year → Month → Category. Each level is clickable to drill down further.

The report respects your custom categories. Uncategorized transactions appear in a separate "Uncategorized" group.

Cash Flow Chart

The Cash Flow view displays a 12-month line chart comparing total income (credits) vs. total expenses (debits) month by month. The difference between the two lines is your net cash flow for each month.

Use the Category filter above the chart to scope the chart to a specific category. This is useful for tracking a single spending area (e.g., "Dining Out") across time without other categories inflating the numbers.

Budgets

Budgets let you set a monthly spending target for each category. The Budgets page shows:

ColumnDescription
CategoryYour custom category name and color.
BudgetYour monthly target amount. Click to edit.
6-Month AvgAverage actual spending per month over the last 6 months, to help set a realistic target.
This MonthActual spending in the current calendar month.
RemainingBudget minus this month's actual. Shown in green when under budget, red when over.

To set or update a budget, click the amount in the Budget column for any category, enter a new value, and press Enter or click outside to save.

Categories with no budget set appear at the bottom of the list and can be ignored or given a target at any time.

Maintenance

Access maintenance tools from My Account → Maintenance in the top-right dropdown menu.

Duplicate Transactions

Duplicate transactions can appear when:

The duplicate scanner detects groups of transactions that share the same account, date, amount, and description (cross-account matching handles the supplementary-card scenario).

1

Download a CSV backup (recommended)

Before removing any transactions, click Download CSV Backup to export a full archive of all transactions including removed ones.

2

Scan for duplicates

Click Scan for Duplicates. ExMint will show duplicate groups with a Keep / Remove breakdown. Review the preview before proceeding.

3

Remove duplicates

Click Remove Duplicates and confirm. Flagged transactions are marked as removed (not permanently deleted). The transaction list refreshes automatically.

Which duplicate is kept? When duplicates span multiple credentials (supplementary-card scenario), ExMint keeps the transaction linked to the older credential and marks the rest for removal.

CSV Backup

The Download CSV Backup button in the Maintenance modal exports all transactions to a .csv file, including transactions that have been marked as removed. This provides a full audit trail and a safe restore point before bulk operations.

My Account

Click your username in the top-right corner to open the account dropdown. Available options:

OptionDescription
Change PasswordUpdate your login password. Requires your current password.
Manage CategoriesCreate, edit, reorder, and delete custom categories and their auto-apply rules.
MaintenanceAccess the duplicate scanner and CSV backup tools.
Admin PanelVisible only to users with the Admin role. See Admin Panel below.
Log OutEnds your session immediately.

Admin Panel

The Admin Panel at /admin is accessible only to users with role = 'Admin'. It provides:

FeatureDescription
Registration toggleOpen or close new user registration. When closed, the "Create an account" link disappears from the login page.
Pending approvalsReview newly registered users waiting for approval. Approve or reject with one click. Each action sends an email to the applicant.
User listView all registered users. Delete a user (their Plaid connections are revoked before deletion).
Login welcome messageSet a short info message that appears on the login page (e.g., test credentials for a demo). Leave blank to hide the box.
Assigning the Admin role The first admin must be set manually via SQL or the Flask shell, as there is no self-service way to become an admin:
UPDATE user SET role = 'Admin' WHERE email = 'your@email.com';
Subsequent admins can be promoted by existing admins once the panel is accessible.