Skip to content
abdullah-tymPublic

About

Interactive Arabic invoice management dashboard built with Python, Streamlit, Pandas, and Plotly.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

πŸ“Š Invoice Management Dashboard

Interactive Arabic invoice management and analytics dashboard built with Python, Streamlit, Pandas, and Plotly.

πŸš€ Live Demo

Streamlit App

πŸ‘‰ Open the Live Dashboard


πŸ“Œ Overview

This project is an interactive invoice management and analytics dashboard designed to help businesses monitor invoice payments, outstanding balances, overdue invoices, and payment activity.

Users can upload invoice data in Excel, CSV, or TXT format, apply interactive filters, and analyze the data through KPI cards and interactive visualizations.

The dashboard supports both Arabic and English column names, making it suitable for organizations working with Arabic-language financial data.


πŸš€ Features

πŸ“ Flexible Data Upload

Upload invoice data in:

  • .xlsx
  • .xls
  • .csv
  • .txt

The application automatically detects commonly used invoice-related columns in both Arabic and English.

Supported fields include:

  • Invoice amount
  • Paid amount
  • Payment status
  • Delay days
  • Invoice date
  • Due date
  • Payment date
  • Client
  • Payment method
  • Invoice number

πŸ”„ Automated Data Preprocessing

The application automatically:

  • Detects relevant columns using predefined column-name alternatives.
  • Converts currency values such as SAR 35,830 into numerical values.
  • Converts date fields into datetime objects.
  • Calculates outstanding invoice amounts.
  • Handles missing columns without breaking the dashboard.
  • Caches processed data using Streamlit's caching functionality.

Outstanding amount is calculated as:

Outstanding Amount = Invoice Amount - Paid Amount

🎯 Interactive Filters

Users can filter the dashboard by:

  • πŸ‘€ Client
  • πŸ’³ Payment status
  • πŸ’° Payment method
  • πŸ“… Invoice date range
  • πŸ“… Due date range
  • ⏱️ Number of delay days

A Reset Filters button is also available.


πŸ“ˆ Key Performance Indicators

The dashboard provides up to six main KPIs:

KPI Description
πŸ’° Total Invoice Amount Total value of invoices
πŸ’΅ Total Paid Amount Total amount collected
πŸ”΄ Total Outstanding Remaining unpaid amount
βœ… Paid Invoices Number of fully paid invoices
⚠️ Late Invoices Number of overdue invoices
⏱️ Average Delay Average number of overdue days

The KPIs automatically adapt depending on which columns are available in the uploaded dataset.


πŸ“Š Visualizations

The dashboard contains 9 interactive visualizations:

1. Invoice Amount by Client

Compares the total invoice amount across clients.

2. Payment Status Distribution

Shows the distribution of invoices according to their payment status.

3. Invoice Amount Over Time

Tracks total invoice amounts on a monthly basis.

4. Outstanding Amount by Client

Identifies clients with the highest outstanding balances.

5. Payment Method Distribution

Shows how invoices are distributed across different payment methods.

6. Days Overdue Distribution

Analyzes the distribution of overdue days for late and partially paid invoices.

7. Invoice Count per Month

Tracks the number of invoices issued each month.

8. Monthly Paid Amount Trend

Shows how collected payments change over time.

9. Outstanding Amount by Payment Method

Compares remaining outstanding balances across payment methods.


πŸ› οΈ Tech Stack

  • Python
  • Streamlit β€” Interactive web application
  • Pandas β€” Data manipulation and preprocessing
  • Plotly Express β€” Interactive data visualization
  • HTML/CSS β€” Dashboard customization

πŸ“‚ Project Structure

invoice-dashboard/
β”‚
β”œβ”€β”€ app.py
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ README.md
└── data/
    └── sample_invoice_data.xlsx

The sample dataset is optional and can be replaced with your own invoice data.


βš™οΈ Installation

1. Clone the repository

git clone https://github.com/YOUR_USERNAME/invoice-dashboard.git
cd invoice-dashboard

2. Create a virtual environment

python -m venv venv

Activate it:

Windows:

venv\Scripts\activate

macOS/Linux:

source venv/bin/activate

3. Install dependencies

pip install -r requirements.txt

4. Run the application

streamlit run app.py

The dashboard will open in your browser.


πŸ“¦ Requirements

Create a requirements.txt file containing:

streamlit
pandas
plotly
openpyxl
xlrd

πŸ“„ Expected Data

The application is designed to work with invoice datasets containing some or all of the following fields:

Field Purpose
Invoice Amount Total invoice value
Paid Amount Amount already paid
Payment Status Current payment status
Delay Days Number of days overdue
Issue Date Invoice creation date
Due Date Payment due date
Payment Date Date payment was received
Client Customer/client name
Payment Method Payment method
Invoice Number Invoice identifier

The application does not require every column to be present. Available dashboard features automatically adjust according to the data provided.


🌐 Arabic & English Data Support

One of the key features of the application is its ability to recognize both Arabic and English column names.

For example:

Invoice Amount

can also be detected from:

Ω…Ψ¨Ω„ΨΊ الفاΨͺورة (Ψ±.Ψ³)

Similarly:

Payment Status

can be detected from:

Ψ­Ψ§Ω„Ψ© الدفع

This allows the dashboard to work with datasets using different naming conventions.


🎨 Dashboard Design

The dashboard includes:

  • Arabic user interface
  • RTL-oriented layout
  • Custom CSS styling
  • Color-coded KPI cards
  • Responsive multi-column layout
  • Interactive Plotly charts
  • Sidebar filtering
  • Raw-data inspection
  • Interactive charts and hover information

The design focuses on providing a quick overview of invoice collection and outstanding payment performance.


πŸ’Ό Business Use Cases

This dashboard can help finance and operations teams:

  • Monitor total invoiced amounts
  • Track collected payments
  • Identify outstanding balances
  • Identify overdue invoices
  • Analyze payment behavior
  • Monitor invoice volume over time
  • Compare clients by outstanding amounts
  • Analyze payment methods
  • Monitor payment trends
  • Identify potential collection issues

πŸ” Example Business Questions

The dashboard can help answer questions such as:

  • How much has been invoiced?
  • How much has been collected?
  • How much money is still outstanding?
  • Which clients have the highest outstanding balances?
  • How many invoices are overdue?
  • How long are invoices typically overdue?
  • Which payment methods are most commonly used?
  • How are invoice amounts changing month over month?
  • How much money is being collected each month?

πŸ“Œ Future Improvements

Potential improvements include:

  • Export filtered data to Excel
  • PDF dashboard export
  • Authentication and user accounts
  • Database integration
  • Automated data refresh
  • Advanced financial KPIs
  • Invoice aging analysis (0–30, 31–60, 61–90+ days)
  • Client-level drill-down analysis
  • ERP/accounting system integration
  • Additional dashboard pages

πŸ‘¨β€πŸ’» Author

Abdullah

Computer Engineering graduate focused on Data Analytics, Business Intelligence, SQL, Python, Power BI, and data-driven decision making.


⭐ If you find this project useful, consider giving the repository a star.

About

Interactive Arabic invoice management dashboard built with Python, Streamlit, Pandas, and Plotly.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages