Interactive Arabic invoice management and analytics dashboard built with Python, Streamlit, Pandas, and Plotly.
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.
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
The application automatically:
- Detects relevant columns using predefined column-name alternatives.
- Converts currency values such as
SAR 35,830into 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
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.
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 |
| 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.
The dashboard contains 9 interactive visualizations:
Compares the total invoice amount across clients.
Shows the distribution of invoices according to their payment status.
Tracks total invoice amounts on a monthly basis.
Identifies clients with the highest outstanding balances.
Shows how invoices are distributed across different payment methods.
Analyzes the distribution of overdue days for late and partially paid invoices.
Tracks the number of invoices issued each month.
Shows how collected payments change over time.
Compares remaining outstanding balances across payment methods.
- Python
- Streamlit β Interactive web application
- Pandas β Data manipulation and preprocessing
- Plotly Express β Interactive data visualization
- HTML/CSS β Dashboard customization
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.
git clone https://github.com/YOUR_USERNAME/invoice-dashboard.git
cd invoice-dashboardpython -m venv venvActivate it:
Windows:
venv\Scripts\activatemacOS/Linux:
source venv/bin/activatepip install -r requirements.txtstreamlit run app.pyThe dashboard will open in your browser.
Create a requirements.txt file containing:
streamlit
pandas
plotly
openpyxl
xlrd
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.
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.
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.
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
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?
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
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.