Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
98 views24 pages

Invoice Management System Project Report

The document outlines a Mini Project titled 'Invoice Management System' developed by Yash M. Kosumbkar, Paras D. Dhande, and Nehal D. Talele, aimed at streamlining invoice generation for small and medium-sized businesses in India using Python. It features a user-friendly GUI, automated invoice numbering, tax calculations, and data logging in Excel, enhancing efficiency and accuracy in billing operations. The project addresses common challenges faced by businesses with traditional invoicing methods by providing a reliable digital solution.

Uploaded by

talelenehal1726
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
98 views24 pages

Invoice Management System Project Report

The document outlines a Mini Project titled 'Invoice Management System' developed by Yash M. Kosumbkar, Paras D. Dhande, and Nehal D. Talele, aimed at streamlining invoice generation for small and medium-sized businesses in India using Python. It features a user-friendly GUI, automated invoice numbering, tax calculations, and data logging in Excel, enhancing efficiency and accuracy in billing operations. The project addresses common challenges faced by businesses with traditional invoicing methods by providing a reliable digital solution.

Uploaded by

talelenehal1726
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 24

I

INVOICE MANAGEMENT SYSTEM


By:

Yash M. Kosumbkar 2301624


Paras D. Dhande 2301611
Nehal D. Talele 2301644

Guide
Prof. R.S.Meshram

Department of Information Technology


Konkan Gyanpeeth College of Engineering
Karjat, Raigad – 410201

University of Mumbai (AY 2024-25)


II

CERTIFICATE
This is to certify that the Mini Project entitled “INVOICE
MANAGEMENT SYSTEM” is a bonafide work of,

Yash Kosumbkar (2301624)

Paras Dhande (2301611)

Nehal Talele (2301644)

submitted to the University of Mumbai in partial fulfillment of the


requirement for the award of the degree of “Second year of
Engineering”
in “Information Technology”.

(Prof. Anup Kunte) ( Prof. R.S. Meshram )

Head of Department Guide


III

INDEX

Sr No Content Page No

1. Abstract 1

2. Acknowledgment 2

3. Introduction 3

4. Problem Statemente 4

Key Features
5. 5-6

Block DIagram
6. 7

6. Implementation 8-18

7. Output 19-20

8. Conclusion 21

9. Refrences 22
1

ABSTRACT

This project presents the development of a Python-based Invoice


Management System tailored for small and medium-sized businesses in India.
The application streamlines the process of generating and managing invoices by
providing an intuitive graphical user interface (GUI) built using Tkinter. It
enables users to enter itemized products with support for advanced unit
handling (e.g., kilograms, grams, liters, milliliters), apply automatic tax
calculations, and generate professionally formatted invoices in PDF format
using ReportLab.

A standout feature of the system is its automated invoice numbering,


which resets every financial year in accordance with Indian standards.
Additionally, the system logs all invoice data into an Excel file using OpenPyXL,
facilitating record-keeping and further analysis. For user convenience, the
system includes keyboard interaction shortcuts, such as using the Enter key
to add products and quickly submit invoices.

By combining ease of use with essential business functionalities, this


Invoice Management System offers a practical solution for organizations
seeking to digitize and simplify their billing operations without relying on
external or complex software platforms.
2

Acknowledgment

I would like to express my sincere gratitude to all those who


supported me throughout the development of this project titled
“Invoice Management System using Python.”

First and foremost, I am deeply thankful to my mentor and


guide for their constant encouragement, constructive feedback,
and invaluable suggestions that greatly enhanced the quality of
this work.

I would also like to thank my family and friends for their


unwavering support, motivation, and patience during the entire
development process.

Finally, I acknowledge the role of open-source libraries and


the Python programming community for providing accessible
tools and resources that made the successful implementation of
this project possible.

This project has been a tremendous learning experience, and


I am grateful for the opportunity to apply my programming skills
in solving a real-world business problem.
3

Introduction

In today’s fast-paced digital world, businesses—especially


small and medium enterprises (SMEs)—require efficient tools to
manage their billing and financial transactions. Traditional paper-
based invoicing systems are not only time-consuming but also
prone to errors, misplacement, and lack of scalability. This project
introduces an automated Invoice Management System
developed using Python, designed to simplify and streamline the
invoicing process with accuracy and professionalism.

The system is equipped with a user-friendly Graphical User


Interface (GUI) built with Tkinter, allowing users to create
itemized invoices quickly, add client details, and include products
with varying units such as kilograms, grams, liters, and pieces. It
also supports tax calculations and generates printable PDF
invoices using the ReportLab library. All invoice records are
stored securely in an Excel file, offering easy access for future
reference and analysis.

One of the unique features of this system is the auto-


generated invoice number that follows the Indian financial year
format, resetting annually. The system also supports fast
navigation using the keyboard, improving user efficiency. With
these functionalities, the project addresses real-world challenges
faced by businesses and provides a reliable solution to maintain
organized and professional financial documentation.
4

Problem Statement

Manual invoice generation and recordkeeping methods are


still widely used by many small and medium-sized businesses.
These traditional processes are often inefficient, time-consuming,
and error-prone, especially when dealing with multiple clients,
diverse products, tax calculations, and record maintenance over
long periods. Additionally, the lack of standardized invoice formats,
inconsistent numbering, and improper storage of transaction
history can lead to financial discrepancies and compliance issues.

There is a need for a simple, reliable, and user-friendly digital


solution that can automate invoice generation, support various
units and pricing formats, maintain financial year-based invoice
numbering, and ensure accurate storage of all billing data. This
project aims to address these challenges by developing a Python-
based Invoice Management System that streamlines invoicing
operations, enhances data accuracy, and ensures easy access to
historical records for future business analysis and reporting.
5

Key Features

✅ Graphical User Interface (GUI)


Clean, minimalistic Tkinter-based interface.
All major actions available as buttons.
Real-time input with auto-updating item list.

✅ Invoice Number Automation


Follows the format: INV-YYYY-XXXX
Automatically resets every April 1st based on Indian financial year.
Invoice number is non-editable by the user.

✅ Itemized Product Entry


Description, Quantity, Price, and Unit per item.
Unit options: pcs, kg, gm, ltr, ml
Automatically converts gm → kg and ml → ltr.
Allows decimal quantities.

✅ Enter Key Workflow


Press Enter once → Adds item to cart.
Press Enter twice quickly → Submits invoice.

✅ PDF Invoice Generator


Saves invoices as printable PDFs using ReportLab.
Includes: Client name, Date, Auto-generated invoice number, Item
list, Subtotal, 10% Tax, Grand Total.

✅ Excel Record Maintenance


Logs every invoice in invoices.xlsx with complete breakdown of
each line item and totals.

✅ Persistent Invoice Counter


Uses a .json file to store the latest invoice number per financial
year.
6
Objective:
To design and implement a desktop application using Python
that allows users to create professional invoices, save them as PDF
files, and log all records into an Excel file with the following
features:
- Invoice auto-numbering (reset every Indian financial year)
- Support for itemized entries with unit conversion
- Tax and total calculation
- Keyboard-friendly interaction (Enter key navigation)

Technology Stack:
Component Technology Used
Programming Python
GUI Framework Tkinter
PDF Generation ReportLab
Data Storage Excel (OpenPyXL), JSON
File Format .pdf, .xlsx, .json

Files Generated:
File Name Description
INV-YYYY-XXXX.pdf PDF invoice for each
transaction
invoices.xlsx Excel workbook with all
invoice data
invoice_counter.json Stores invoice counters by
FY

Future Scope (Suggestions):


- Add a company logo and GST info in the PDF.
- Implement client contact saving and auto-fill.
- Create a dashboard to search, filter, and sort past invoices.
- Integrate a print button or PDF preview.
- Add authentication for multi-user access (Admin/Staff).
- Include inventory tracking and payment status.
7

Block DIagram

GUI Initialization

(Tkinter Window Setup)

Excel Initialization

(Create "invoices.xlsx" if not exists)

Generate Invoice Number

(Based on Financial Year using JSON


file)

User Inputs Client and Item


Information

Add Item Logic

 Description, Qty, Price

 Convert Units if needed

Clear Form Field


Display Item in Listbox
for Next Invoice

Generate Invoice Save Data to Excel


Validate field (Each item with full info
Create PDF using including totals & tax)
8

Implementation
9

import tkinter as tk

from tkinter import messagebox

from reportlab.lib.pagesizes import letter

from reportlab.pdfgen import canvas

from datetime import datetime

import openpyxl

import os

import time

import json

invoice_items = []

last_enter_time = 0

# --- Financial Year & Invoice Number ---

def get_financial_year():

today = datetime.today()

year = today.year

if today.month < 4:

return year - 1

return year

def generate_invoice_number():

fy = get_financial_year()

filename = "invoice_counter.json"
10

if os.path.exists(filename):

with open(filename, "r") as f:

data = json.load(f)

else:

data = {}

str_fy = str(fy)

if str_fy not in data:

data[str_fy] = 1

else:

data[str_fy] += 1

with open(filename, "w") as f:

json.dump(data, f)

return f"INV-{str_fy}-{data[str_fy]:04d}"

# --- Excel Setup ---

def init_excel():

if not os.path.exists("invoices.xlsx"):

wb = openpyxl.Workbook()

sheet = wb.active

sheet.title = "Invoices"
11
headers = ["Invoice No", "Date", "Client", "Item", "Qty",
"Price", "Line Total", "Tax", "Total"]

sheet.append(headers)

wb.save("invoices.xlsx")

# --- Unit Conversion ---

def convert_to_base(qty, unit):

if unit == "gm":

return qty / 1000, "kg"

elif unit == "ml":

return qty / 1000, "ltr"

else:

return qty, unit

# --- Add Item ---

def add_item(event=None):

desc = desc_entry.get()

qty = qty_entry.get()

price = price_entry.get()

unit = unit_var.get()

if not desc or not qty or not price:

messagebox.showerror("Error", "All item fields are required.")

return
12
try:

qty = float(qty)

price = float(price)

except ValueError:

messagebox.showerror("Error", "Quantity must be a number.")

return

base_qty, base_unit = convert_to_base(qty, unit)

invoice_items.append((desc, base_qty, price, base_unit))

item_list.insert(tk.END, f"{desc} | Qty: {base_qty:.3f}


{base_unit} | Price: ₹{price:.2f}")

desc_entry.delete(0, tk.END)

qty_entry.delete(0, tk.END)

price_entry.delete(0, tk.END)

desc_entry.focus()

# --- Generate Invoice ---

def generate_invoice(event=None):

client = client_entry.get()

invoice_num = invoice_number.get()

date = date_entry.get()

if not client or not date:

messagebox.showerror("Error", "Client and Date are


required.")
13
return

if not invoice_items:

messagebox.showerror("Error", "Add at least one item.")

return

filename = f"{invoice_num}.pdf"

c = canvas.Canvas(filename, pagesize=letter)

c.setFont("Helvetica", 12)

c.drawString(50, 750, f"Invoice #: {invoice_num}")

c.drawString(50, 735, f"Date: {date}")

c.drawString(50, 720, f"Client: {client}")

c.drawString(50, 700, "Items:")

y = 680

total = 0

for desc, qty, price, unit in invoice_items:

line_total = qty * price

total += line_total

c.drawString(60, y, f"{desc} - Qty: {qty:.3f} {unit} - Price: ₹


{price:.2f} - Total: ₹{line_total:.2f}")

y -= 20

tax = total * 0.1


14
grand_total = total + tax

c.drawString(50, y - 20, f"Subtotal: ₹{total:.2f}")

c.drawString(50, y - 40, f"Tax (10%): ₹{tax:.2f}")

c.drawString(50, y - 60, f"Total: ₹{grand_total:.2f}")

c.save()

save_to_excel(invoice_num, date, client, tax, grand_total)

messagebox.showinfo("Success", f"Invoice saved as {filename}


and Excel updated.")

clear_form()

# --- Save to Excel ---

def save_to_excel(invoice_num, date, client, tax, grand_total):

wb = openpyxl.load_workbook("invoices.xlsx")

sheet = wb["Invoices"]

for desc, qty, price, unit in invoice_items:

line_total = qty * price

sheet.append([invoice_num, date, client, f"{desc} ({unit})",


qty, price, line_total, tax, grand_total])

wb.save("invoices.xlsx")

# --- Clear Form ---

def clear_form():

client_entry.delete(0, tk.END)
15
invoice_number.set(generate_invoice_number())

date_entry.delete(0, tk.END)

date_entry.insert(0, datetime.today().strftime('%Y-%m-%d'))

item_list.delete(0, tk.END)

invoice_items.clear()

# --- Enter Key Logic ---

def on_enter_press(event):

global last_enter_time

now = time.time()

if now - last_enter_time < 1: # Double press

generate_invoice()

else:

add_item()

last_enter_time = now

# --- GUI Setup ---

root = tk.Tk()

root.title("Invoice Management System (INR)")

root.geometry("600x650")

init_excel()

tk.Label(root, text="Client Name").pack()


16
client_entry = tk.Entry(root)

client_entry.pack()

tk.Label(root, text="Invoice Number").pack()

invoice_number = tk.StringVar()

invoice_number.set(generate_invoice_number())

invoice_entry = tk.Entry(root, textvariable=invoice_number,


state='readonly')

invoice_entry.pack()

tk.Label(root, text="Date (YYYY-MM-DD)").pack()

date_entry = tk.Entry(root)

date_entry.insert(0, datetime.today().strftime('%Y-%m-%d'))

date_entry.pack()

# Item Section

tk.Label(root, text="Add Item").pack()

desc_entry = tk.Entry(root)

desc_entry.pack()

desc_entry.insert(0, "Description")

qty_entry = tk.Entry(root)

qty_entry.pack()

qty_entry.insert(0, "Quantity")
17

price_entry = tk.Entry(root)

price_entry.pack()

price_entry.insert(0, "Unit Price")

tk.Label(root, text="Unit").pack()

unit_var = tk.StringVar(value="pcs")

unit_options = ["pcs", "kg", "gm", "ltr", "ml"]

unit_dropdown = tk.OptionMenu(root, unit_var, *unit_options)

unit_dropdown.pack()

desc_entry.bind("<Return>", on_enter_press)

qty_entry.bind("<Return>", on_enter_press)

price_entry.bind("<Return>", on_enter_press)

item_list = tk.Listbox(root, width=60)

item_list.pack(pady=10)

tk.Button(root, text="Add Item (Enter)",


command=add_item).pack(pady=5)

tk.Button(root, text="Generate Invoice PDF (Double Enter)",


command=generate_invoice).pack(pady=10)

root.mainloop()
18

OUTPUT
19
20

Conclusion

The Invoice Management System developed in this project


offers a comprehensive and efficient solution for managing billing
operations in small to medium-sized businesses. By integrating key
functionalities such as itemized billing, tax calculations, advanced
unit handling, and financial year-based invoice numbering, the
system simplifies the complex process of invoice generation and
recordkeeping.

Through the use of Python and libraries like Tkinter,


ReportLab, and OpenPyXL, the application ensures a smooth user
experience while maintaining the accuracy and professionalism
expected in business documentation. The ability to export invoices
in PDF format and maintain an Excel-based transaction log
enhances both usability and scalability.

Overall, this project not only demonstrates the practical


application of Python in solving real-world problems but also
emphasizes the importance of automating repetitive business tasks
to improve productivity, reduce human error, and maintain proper
financial tracking.
21

REFERENCES :

Python Programming Language: https://www.python.org/

Tkinter GUI

Documentation: https://docs.python.org/3/library/tkinter.html

ReportLab PDF Library: https://www.reportlab.com/

Openpyxl Excel Library: https://openpyxl.readthedocs.io/

Python datetime Module: https://docs.python.org/3/library/datetime.

html

JSON Data Handling: https://docs.python.org/3/library/json.html

Unit Conversion Tool: https://www.unitconverters.net/

Financial Year

(India): https://en.wikipedia.org/wiki/Fiscal_year#India

GeeksforGeeks Python

Tutorials: https://www.geeksforgeeks.org/python/

W3Schools Python Basics: https://www.w3schools.com/python/

You might also like