A desktop GUI application built with Python and Tkinter to automate invoice processing, tracking, and analysis. This tool helps you extract key information from PDF and Word invoices, supports multiple currencies, and stores all data in a local database.
This application is designed for freelancers, small businesses, or anyone who needs to manage multiple invoices efficiently. Instead of manually entering data into a spreadsheet, you can simply point the application to your invoice files, and it will automatically parse the necessary details.
It features multi-currency support and stores all data in an invoices.db SQLite file, ensuring your information remains private.
- 📄 Automatic Data Extraction: Parses invoice number, amount, date, and currency from PDF and DOCX files.
- 💵 Multi-Currency Support: Select, store, and track invoices in various currencies (EUR, USD, GBP, etc.).
- 🗂️ Batch Processing: Process multiple invoice files at once with a single click.
- ⚙️ Pattern Management: Create custom "patterns" to automatically associate invoice codes with specific company details, including a default currency.
- 📊 Payment Tracking Dashboard: View all invoices in a table. Invoices are color-coded by status (Overdue, Due Soon, Paid) for easy tracking.
- ✏️ Full CRUD Functionality: Manually add, edit, or delete any invoice record. Mark invoices as "Paid" to update their status.
- 📈 Statistics & Analytics: A dedicated dashboard provides key financial insights, including total revenue, unpaid amounts, top clients, and monthly revenue charts.
- 💾 Local Database: All data is stored in a local invoices.db SQLite file. No external services or internet connection is required.
Main Payment Tracking dashboard:
Statistics and Analytics dashboard:
Patterns tab:
Follow these steps to set up and run the application on your local machine.
- Python 3.8 or newer is required.
- The invoices.db file must be in the same folder as the script.
- (Optional for Linux) zenity for a native file selection dialog. If not installed, the application will use the default dialog.
-
Download Files: Download the project files, including invoices.py and the empty invoices.db, into a dedicated folder.
-
Create requirements.txt: In the project folder, create a new file named requirements.txt and paste the following lines into it:
-
Install Dependencies: Open your terminal or command prompt in the project folder and run the following commands to create a virtual environment and install the required libraries.
# Create and activate a virtual environment # On Windows: python -m venv venv venv\Scripts\activate # On macOS/Linux: python3 -m venv venv source venv/bin/activate # Install the required packages pip install -r requirements.txt
With your terminal in the project directory and the virtual environment activated, run the main script. Make sure invoices.db is in the same folder.
When you first launch the app, the included database will be empty. The invoice_config.json file will be created automatically after you process your first invoice file.
For the best experience, your first step should be to set up patterns for your clients. A pattern links a short text code (extracted from the invoice number) to a full company profile.
- Go to the Manage Patterns tab.
- Fill in the details:
- Pattern: A short, lowercase prefix from your invoice numbers (e.g., if invoice numbers are ansent-001, the pattern is ansent).
- Company Name: The full name of the client.
- Payment Method & Terms: The default payment details.
- Currency: The default currency for this client.
- Click Save Pattern.
- Go to the Process Files tab.
- Click Browse for Invoice File or Browse for Multiple Files.
- When a file is processed, a new invoice is created with the status "Sent". The results of the operation will be displayed in the text box.
- Go to the Manual Entry tab.
- Fill out the form to add an invoice. You can select the Currency from the dropdown menu.
- New manual invoices are automatically given the status "Sent".
- Go to the Payment Tracking tab to see all your invoices.
- The table now includes a Currency column.
- The table is color-coded:
- 🔴 Red: Overdue
- 🟡 Yellow: Due within the next 7 days
- 🟢 Green: Paid
- Select an invoice and use the buttons at the top to Mark as Paid, Edit, or Delete it.
- Go to the Statistics tab.
- This dashboard gives you a high-level overview of your business finances.
- Click the Refresh Statistics button to ensure you are viewing the most up-to-date information.
- Note: The overview cards currently aggregate all amounts and display them with a Euro (€) symbol, regardless of their original currency.
Please check out my other projects as well: https://thornumak.github.io/
.png)



