A comprehensive suite of tools for managing and analyzing financial transactions with a beautiful dark-themed GUI.
- Overview
- Features
- Quick Start
- Applications
- Installation
- Usage Guide
- File Structure
- Troubleshooting
- Advanced Features
This project provides a comprehensive financial transaction management application:
Transaction Manager: Full-featured database system with categorization, filtering, analytics, and built-in export capabilities
The application features a modern dark theme with easy toggle support.
- 🗄️ SQLite Database: Persistent storage with automatic duplicate detection
- 🏷️ Smart Categorization: Pattern-based auto-categorization with regex support
- 📊 Visual Analytics: Summary views with drill-down capabilities
- 📅 Date Filtering: Quick filters (30/60/90 days, This Year, All Time)
- 📥 Multi-Format Import: Import CSV, OFX, QFX, and QBO files
- 📂 Bulk Import: Import single or multiple files at once
- 🔍 Transaction Deletion: Selective deletion by category and date range
- 📊 ODS Export: Export filtered data to formatted spreadsheets with color coding
- 🌙 Dark Theme: Eye-friendly interface with toggle support
Transaction Manager:
launch_transaction_manager.bat
Transaction Manager:
python transaction_manager_gui.pyExport Summary Generator:
python export_summary_gui.pyBuild Executable (Windows):
build_exe.batThe main application for comprehensive transaction management with built-in export capabilities.
📥 Import Data Tab
- Select transaction files to import (CSV, OFX, QFX, QBO)
- Configure import settings for CSV files (skip lines, duplicate detection)
- Auto-detection of file format
- View import log and statistics
- Bulk import from folder (supports mixed file types)
📊 Summary Tab
- View transactions grouped by category
- Filter by date range and category
- Sort by any column
- Double-click to drill down into transactions
- Delete transactions by category/date
- Export filtered data to ODS format with color coding
🏷️ Manage Categories Tab
- Create/edit/delete categories
- Configure pattern matching rules
- Pattern types:
contains,startswith,endswith,exact,regex - Recategorize all transactions with one click
Name: Amazon Purchases
Pattern: AMAZON MKTPL
Type: contains
→ Matches: "AMAZON MKTPL*XYZ123", "POS AMAZON MKTPL"
Name: Gas Stations
Pattern: ^(ARCO|SHELL|76)
Type: regex
→ Matches: "ARCO #1234", "SHELL GAS", "76 STATION"
Simplified interface for generating transaction summaries.
- Select a CSV file (Export.csv, download.CSV, or browse)
- Generate summary using SQL aggregation
- View results with automatic color formatting
- Open directly in LibreOffice Calc
ExportSummary-YYYYMMDD.csv- Raw dataExportSummary-YYYYMMDD.ods- Formatted with colors (requiresodfpy)
- Python 3.6+ - Download
- q command (CSV processor) - Auto-installed
- ofxparse (OFX/QFX/QBO support) - Auto-installed
- LibreOffice/OpenOffice (optional, for best viewing) - Download
setup.batThis will:
- Check Python installation
- Install required packages
- Verify setup
- Launch the application
# Install dependencies
pip install -r requirements.txt
# Build executable (optional)
pip install pyinstaller
pyinstaller transaction_manager.specq-text-as-data # CSV processing with SQL
odfpy # ODS file formatting (optional)
pyinstaller # Executable building (optional)
Built-in modules: tkinter, sqlite3, csv, hashlib, re, datetime
The Transaction Manager automatically:
- Creates the database (
transactions.db) - Initializes default categories
- Shows a welcome message
Supported File Formats:
- CSV - Comma-separated values from bank exports
- OFX - Open Financial Exchange (standard format)
- QFX - Quicken Financial Exchange
- QBO - QuickBooks Online format
Single File Import:
- Go to "Import Data" tab
- Click "Select File (CSV/OFX/QFX/QBO)"
- For CSV:
- Configure skip lines (if needed)
- Review auto-detected column mapping
- Adjust mappings if needed (drag-drop selection)
- Preview data
- Import
- For OFX/QFX/QBO: Automatic import (no configuration needed)
- Transactions imported with duplicate detection
Bulk Import:
- Click "Import All Files in Folder"
- Select directory containing transaction files
- Supports mixed file types (CSV + OFX)
- Configure settings (applies to CSV files)
- Confirm import
Flexible Column Mapping:
- ✨ NEW: Works with ANY CSV format from any bank!
- Auto-detects common column names (Date, Amount, Description, etc.)
- Manual mapping for custom column names
- Supports both separate Debit/Credit columns OR single Amount column
- Mappings are automatically saved for future imports
CSV Column Requirements:
- Required: Date field, Description field
- Amount: Either one "Amount" column OR both "Debit" and "Credit" columns
- Optional: Balance, Memo, Transaction Number, Check Number, Fees
Supported CSV Formats:
- Chase, Bank of America, Wells Fargo, Capital One, Discover
- PayPal, Venmo, Cash App
- Credit card statements
- Investment account exports
- ...and any other CSV format!
OFX/QFX/QBO Files:
- Automatically parsed with no configuration needed
- Extracts date, description, amount, payee, memo, and check number
- Supports multiple accounts in a single file
Transactions are hashed using the entire CSV line for accurate duplicate detection:
- Same transaction from different files → Skipped
- Any field differs → Imported as new
- Import log shows: "Imported: X, Skipped: Y duplicates"
Creating Categories:
- Go to "Manage Categories" tab
- Click "New Category"
- Enter name, pattern, and pattern type
- Click "Save Category"
- Choose "Recategorize All" to apply
Finding Uncategorized Transactions:
- Go to "Summary" tab
- Look for individual transaction descriptions (not categories)
- Right-click → "Create New Category from This"
- Adjust pattern as needed
Quick Filters:
- Last 30 Days
- Last 60 Days
- Last 90 Days
- This Year
- All Time
Custom Range:
- Enter dates in
YYYY-MM-DDformat - Click "Refresh" to apply
From Summary View:
- Select one or more categories (Ctrl+Click)
- Right-click → "Delete Selected Transactions"
- Confirm deletion (shows affected count)
From Transaction Details:
- Double-click category to open details
- Select transactions to delete
- Click "Delete Selected" or right-click
- Confirm deletion
- Launch Export Summary Generator
- Select or browse to CSV file
- Click "Generate Export Summary"
- Wait for processing
- Click "Open in Calc" or "Open Folder"
The summary includes:
- Description grouping
- Total Debit/Credit
- Count, Average, Min, Max
- Date range per category
transaction_manager_gui.py # Main GUI application
transaction_db.py # Database operations
transaction_importer.py # CSV import logic
export_summary_gui.py # Export summary generator
theme.py # Dark/light theme support
import_settings.py # Import configuration manager
launch_transaction_manager.bat # Transaction Manager launcher
launch_gui.bat # Export Summary launcher
build_exe.bat # Build executable
reset_database.bat # Reset database
import_settings.json # Saved import configurations
transactions.db # SQLite database (auto-created)
ExportSummary.sql # SQL template for summaries
README.md # This file (main documentation)
BUILD_EXE_INSTRUCTIONS.md # Executable building guide
IMPORT_SETTINGS_GUIDE.md # Import configuration details
requirements.txt # Python dependencies
build/ # PyInstaller build artifacts
dist/TransactionManager/ # Standalone executable
dist/TransactionManager.zip # Portable distribution
"q command not found"
pip install q-text-as-data
# Restart terminal/Command Prompt after installImport shows "0 imported, all skipped"
- Transactions already exist in database (duplicate detection working)
- Delete
transactions.dbto start fresh (CAUTION: removes all data)
No color formatting in ODS files
pip install odfpyCan't open results automatically
- Install LibreOffice/OpenOffice
- Or click "Open Folder" and open manually
Database errors
# Reset database (CAUTION: deletes all data)
del transactions.db # Windows
rm transactions.db # Linux/Mac
# Or use the reset script
reset_database.bat # WindowsCSV import errors
- Check CSV has Date and Description columns
- Verify date format (MM/DD/YYYY)
- Check for extra header rows (use skip lines)
- Look at import log for specific errors
Theme not applying correctly
- Click "Toggle Theme" twice to refresh
- Some widgets require restarting the application
Enable verbose logging in CSV import dialog:
- Check "Show hash details for first 3 rows"
- View import log for hash calculations
- Helps diagnose duplicate detection issues
Edit ExportSummary.sql to customize:
- Grouping logic
- Column calculations
- Date filters
- Description mappings
| Type | Description | Example |
|---|---|---|
contains |
Pattern anywhere in description | AMAZON → matches "AMAZON MKTPL*123" |
startswith |
Description starts with pattern | POS → matches "POS AMAZON" |
endswith |
Description ends with pattern | INC → matches "ACME INC" |
exact |
Exact match (case-insensitive) | PAYCHECK → matches only "PAYCHECK" |
regex |
Regular expression | ^(SHELL|ARCO) → matches gas stations |
transactions table:
id: Primary keytransaction_hash: SHA-256 for duplicate detectiondate,description,memo: Transaction detailsamount_debit,amount_credit,balance: Financial datacategory_id: Foreign key to categoriesimported_at: Import timestamp
categories table:
id: Primary keyname: Display namepattern: Match patternpattern_type: Pattern matching modedescription,color: Metadatacreated_at,updated_at: Timestamps
Quick Build:
build_exe.batManual Build:
pyinstaller transaction_manager.specOutput:
dist/TransactionManager/TransactionManager.exe- Standalone executabledist/TransactionManager.zip- Portable package
Distribution:
- Copy entire
dist/TransactionManager/folder - No Python installation required on target machine
- Database and settings travel with executable
Summary View:
Ctrl+Click- Multi-select categoriesShift+Click- Range selectDouble-Click- Drill downRight-Click- Context menu
Transaction Details:
Ctrl+A- Select allRight-Click- Delete options
- Indexed Queries: Database uses indexes on date, category, and hash
- Bulk Operations: Use bulk import for multiple files
- Date Ranges: Narrow date ranges load faster
- Categorization: Run "Recategorize All" after editing multiple categories
All GUIs support dark theme:
- Toggle: Click "🌙 Toggle Theme" button
- Default: Dark mode enabled by default
- Consistent: All widgets properly themed
- Persistent: Theme choice maintained during session
Theme colors:
- Background:
#1e1e1e - Text:
#d4d4d4 - Accent:
#0e639c - Success:
#4ec9b0 - Error:
#f48771
transaction_db.py: All database operationstransaction_importer.py: CSV parsing and importtheme.py: Theme managementimport_settings.py: Configuration persistence- GUI files: Tkinter-based interfaces
- Database changes: Modify
transaction_db.pyschema - Import logic: Update
transaction_importer.py - GUI elements: Edit GUI files, apply theme
- New tools: Follow existing patterns
This project uses standard open-source tools and libraries.
Built with:
- Python 3 + tkinter (GUI framework)
- SQLite (database)
- q-text-as-data (CSV/SQL processing)
- odfpy (ODS file formatting)
- PyInstaller (executable building)
Ready to get started? Double-click launch_transaction_manager.bat or launch_gui.bat!
For questions or issues, review this README or examine the code comments.
Version: 2.0 | Updated: October 2024