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.