Python • Jupyter Notebooks • Tableau
In fintech and financial operations, thousands of transactions flow daily between banks, payment providers, and internal accounting systems. While these systems are supposed to agree, in reality they often don't due to timing delays, missing references, duplicates, or partial settlements.
This project demonstrates an end-to-end automated reconciliation workflow that matches bank statement transactions against internal ledger records, highlights discrepancies, and produces business-ready reports and dashboards for daily operations.
The goal is not just to match numbers, but to reflect how reconciliation actually works in real fintech environments balancing automation, judgment, and clear business reporting.
Manual reconciliation processes are common, but they come with real challenges:
- They are time-consuming and repetitive
- They don't scale as transaction volumes grow
- They make it hard to spot patterns and root causes
- They delay financial reporting and increase operational risk
Build a repeatable fine-tuned reconciliation process that:
- Automates daily transaction matching
- Clearly flags and classifies discrepancies
- Produces operational KPIs that business teams can easily consume
The data includes:
-
bank_statement.csv– The bank's view of transactions- 500 transactions with realistic amounts
- Bank-formatted references (INV123456, PAY789012)
- Dates, amounts, and full transaction details
-
ledger_transactions.csv– Our internal accounting system's records
This project explores common causes of transaction discrepancies and then flags transactions based on predefined rules and checks:
- Timing differences
- Monitoring for Ledger dates that are off
- Weekend processing delays
- Amount mismatches
- Small rounding differences e.g for fees, FX rounding
- Formatting variations
- Different system conventions (e.g INV-123 vs INV123)
- Missing transactions
- Extra ledger entries
- Accruals, manual adjustments
Before attempting any matching, the data is explored to understand:
- Daily transaction volumes
- Amount distributions
- Missing or duplicated records
- General transaction behavior over time
Why this matters:
Reconciliation logic built without understanding the data often leads to false matches and noisy exceptions.
To reduce false discrepancies, the data is standardized by:
- Normalizing transaction dates
- Rounding and aligning transaction amounts
- Cleaning and standardizing transaction reference fields
- Removing formatting inconsistencies
Outcome:
Clean, consistent datasets that can be reliably compared.
Additional features are created to support flexible matching, including:
- Absolute transaction amounts
- Date differences (in days)
- Amount differences
- Normalized reference strings
- Text similarity scores for fuzzy reference matching
Why this matters:
Real reconciliation rarely relies on exact matches alone. These features allow tolerance-based and realistic matching strategies.
Transactions are matched using progressive reconciliation rules commonly used in financial operations:
-
Exact Match
- Same amount
- Same transaction date
- High reference similarity
-
Tolerance Match
- Small acceptable amount differences
- Date differences within a defined window
- Partial or fuzzy reference matches
Transactions that do not meet any matching criteria are classified as exceptions and flagged for investigation.
The reconciliation results are summarized into operational metrics, including:
- Reconciliation Rate (%)
- Matched vs Unmatched Transactions
- Exception volumes for daily review
All outputs are structured to feed directly into Tableau dashboards for business consumption.
This project delivers:
- Automated identification of matched and unmatched transactions
- Clear, investigation-ready exception reports
- Improved visibility into reconciliation performance
- A scalable framework that can grow with transaction volumes
- Reduced manual reconciliation effort
- Improved accuracy and consistency
- Faster daily and month-end reconciliation cycles
- Better audit readiness and operational transparency
- Python – pandas, numpy, rapidfuzz
- Jupyter Notebooks – analysis and documentation
- Tableau – business dashboards and reporting
- Git – version control and project organization
financial-transaction-reconciliation/
├── data/
│ ├── raw/
│ │ ├── bank_statement.csv
│ │ └── ledger_transactions.csv
│ └── processed/
├── notebooks/
├── outputs/
├── tableau/
└── README.md
Potential next steps include:
- SQL-based reconciliation for large-scale datasets
- Machine learning–based match confidence scoring
- Scheduling for daily automated reconciliation runs
- Integration with bank or payment provider APIs
-
Clone the repository
git clone https://github.com/nabigwaku/Automated-Financial-Transaction-Reconciliation.git cd Automated-Financial-Transaction-Reconciliation -
Install dependencies
pip install -r requirements.txt
-
Run the notebook:
financial_transaction_reconciliation.ipynb
-
Load outputs into Tableau or your preferred BI tool