Data Automation & Cleaning
Intermediate
Detect Duplicate Charges, Hidden Fees & Recurring Subscriptions in Bank CSVs
Audit bank and credit card transaction CSVs in Python to flag double-billed merchant charges, recurring subscription drains, and micro-fee anomalies.
#pandas#numpy
Problem Statement
Duplicate merchant debits and forgotten SaaS/OTT subscriptions silently drain personal and corporate accounts. This script scans transaction logs to flag same-day double charges and recurring patterns.
Formula / Core Logic
Groups transactions by normalized Merchant Name and Amount; flags rows where Date delta == 0 days (double charge) or ~30 days (subscription).
Installation
pip install pandas numpy
detect-duplicate-charges-financial-csv-python.py
import pandas as pd
def audit_financial_leakage(df, date_col='Date', desc_col='Description', amt_col='Amount'):
df = df.copy()
df[date_col] = pd.to_datetime(df[date_col])
df['Clean_Merchant'] = df[desc_col].astype(str).str.upper().str.replace(r'[^A-Z ]', '', regex=True).str.strip()
# 1. Exact Same-Day Duplicate Charges
dups = df[df.duplicated(subset=[date_col, 'Clean_Merchant', amt_col], keep=False)]
# 2. Recurring Monthly Subscriptions (Same amount >= 2 times)
sub_counts = df.groupby(['Clean_Merchant', amt_col]).size()
recurring_keys = sub_counts[sub_counts >= 2].index
recurring = df[df.set_index(['Clean_Merchant', amt_col]).index.isin(recurring_keys)]
return {'duplicate_charges': dups, 'recurring_drains': recurring}
Get the Complete 100+ Python Quant & Automation Bundle
Instant lifetime access to all production-ready scripts, valuation models, and trading bots ($19).
Buy Full Bundle on Gumroad ($19) →Frequently Asked Questions
Q: Is transaction data processed entirely in RAM?
Yes, Pandas processes the DataFrame strictly in memory without requiring external database storage.