AJAY KASU commited on
Commit
7d391cb
·
0 Parent(s):

Initial commit AML Shield

Browse files
.env ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ BYTEZ_API_KEY=your_bytez_key_here
2
+ SUPABASE_URL=https://xxxx.supabase.co
3
+ SUPABASE_KEY=your_supabase_anon_key
README.md ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # AML Shield 🛡️
2
+
3
+ **AI-Powered Anti-Money Laundering Transaction Intelligence Platform**
4
+
5
+ A production-grade, full-stack web application for financial transaction intelligence. AML Shield allows users to upload transaction records and receive real-time anomaly detection, interactive visualizations, KYC risk profiling, and AI-generated compliance reports via LangChain + Bytez utilizing LLaMa 3.1.
6
+
7
+ All analyses are natively persisted to a Supabase PostgreSQL backend, displaying dynamic real-time insights globally.
8
+
9
+ ---
10
+
11
+ ## 🚀 Live Demo
12
+ Access the live application hosted on Hugging Face Spaces:
13
+ 👉 **[AML Shield Live Space](https://huggingface.co/spaces/AJAYKASU/AML_Shield)**
14
+
15
+ ## ⚙️ Core Architecture & Features
16
+
17
+ This platform employs a Two-Layer Detection System utilizing rule-based flagging and Machine Learning models to score unverified transactions.
18
+
19
+ 1. **Upload & ETL Engine**: Rigorous CSV validation routines parse structure variables and engineer critical analytical features natively.
20
+ 2. **Two-Layer Threat Detection**: Applies known heuristics (Structuring, Dormant Account Spikes, etc.) and scikit-learn `IsolationForest` anomaly algorithms.
21
+ 3. **Advanced Risk Profiling**: Consolidates activity for all accounts tracking behavioral metadata to derive accurate KYC tiering (`KMeans`).
22
+ 4. **LangChain AI Compliance Integration**: Streams professional regulatory reports via `langchain_bytez` mapping direct analysis metrics to executive summaries in real-time.
23
+ 5. **Report Generation Pipeline**: Leverages `ReportLab` building formal, fully-styled PDF analytics documents dynamically available for analyst download.
24
+ 6. **Persistence & Data Aggregation**: Syncs outputs to `Supabase` capturing global macro-risk signals to identify organizational trend metrics.
25
+
26
+ ## 🛠 Tech Stack
27
+ - Frontend Dashboard: **Streamlit**
28
+ - Data Modules: **Pandas, NumPy**
29
+ - Machine Learning models: **Scikit-learn**
30
+ - Analytical Storytelling: **Plotly**
31
+ - AI LLM Generation: **LangChain, Bytez (`meta-llama/Llama-3.1-8B-Instruct`)**
32
+ - Persisted Memory Layers: **Supabase DB (`supabase-py`)**
33
+ - Artifact Generation: **ReportLab PDF renderer**
34
+
35
+ ## 🔧 Installation & Local Setup
36
+
37
+ **1. Clone the repository:**
38
+ ```bash
39
+ git clone https://github.com/AJAYKASU/aml-shield.git
40
+ cd aml-shield
41
+ ```
42
+
43
+ **2. Setup Virtual Environment & Dependencies:**
44
+ ```bash
45
+ python -m venv venv
46
+ source venv/bin/activate
47
+ pip install -r requirements.txt
48
+ ```
49
+
50
+ **3. Configure Environment Variables:**
51
+ You will need API keys for Bytez and your Supabase PostgreSQL cluster. Add the following inside a `.env` file at the root:
52
+ ```env
53
+ BYTEZ_API_KEY=your_key_here
54
+ SUPABASE_URL=your_supabase_url
55
+ SUPABASE_KEY=your_supabase_anon_key
56
+ ```
57
+
58
+ **4. Run Project:**
59
+ ```bash
60
+ streamlit run app.py
61
+ ```
62
+
63
+ ## 🔐 Compliance Methodologies
64
+
65
+ The rules modeled directly reference core regulatory operations monitored by US analysts covering entities under the **BSA (Bank Secrecy Act)**, **FinCEN SAR requirements**, and the **FATF Recommendation 16** for wire transfer rules.
66
+
67
+ *Built to demonstrate robust AML compliance analytics skills for data-driven financial services roles.*
app.py ADDED
@@ -0,0 +1,390 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ from dotenv import load_dotenv
3
+
4
+ # Load for local testing only
5
+ if os.path.exists(".env"):
6
+ load_dotenv()
7
+
8
+ import streamlit as st
9
+ import pandas as pd
10
+ import time
11
+ from datetime import datetime
12
+
13
+ # Initialize database connections properly
14
+ # Assuming database uses Supabase, if Supabase client init fails due to missing secrets, app will handle gracefully
15
+ import modules.database as db
16
+ from modules.etl import load_and_validate, engineer_features
17
+ from modules.detection import apply_detection
18
+ from modules.risk_profiling import build_customer_profiles, assign_kyc_tier
19
+ import modules.visualizations as viz
20
+ from modules.ai_agent import stream_compliance_report
21
+ from modules.pdf_report import build_pdf
22
+
23
+ st.set_page_config(page_title="AML Shield", page_icon="🛡️", layout="wide", initial_sidebar_state="expanded")
24
+
25
+ # --- CSS Overrides ---
26
+ st.markdown("""
27
+ <style>
28
+ .stMetric { background-color: #1e1e2d; padding: 15px; border-radius: 5px; }
29
+ h1, h2, h3 { color: #f8f9fa; }
30
+ </style>
31
+ """, unsafe_allow_html=True)
32
+
33
+ # --- Sidebar ---
34
+ st.sidebar.title("🛡️ AML Shield Navigation")
35
+ tabs = ["Upload & Analyze", "Dashboard", "Customer Profiles", "AI Report", "Global Analytics", "About"]
36
+ page = st.sidebar.radio("Go to", tabs)
37
+
38
+ # --- Helper logic for analysis ---
39
+ def run_pipeline(file_obj, filename="Uploaded Data"):
40
+ progress_bar = st.progress(0)
41
+ status_text = st.empty()
42
+
43
+ # Step 1
44
+ status_text.text("[▓░░░░] Loading & validating data...")
45
+ df, msg = load_and_validate(file_obj)
46
+ if df is None:
47
+ st.error(msg)
48
+ progress_bar.empty()
49
+ status_text.empty()
50
+ return False
51
+ progress_bar.progress(25)
52
+ time.sleep(0.5)
53
+
54
+ # Step 2
55
+ status_text.text("[▓▓▓░░] Engineering features...")
56
+ df = engineer_features(df)
57
+ progress_bar.progress(50)
58
+ time.sleep(0.5)
59
+
60
+ # Step 3
61
+ status_text.text("[▓▓▓▓░] Running anomaly detection...")
62
+ df = apply_detection(df)
63
+ progress_bar.progress(75)
64
+ time.sleep(0.5)
65
+
66
+ # Step 4
67
+ status_text.text("[▓▓▓▓▓] Building customer profiles...")
68
+ profile_df = build_customer_profiles(df)
69
+ profile_df = assign_kyc_tier(profile_df)
70
+ progress_bar.progress(100)
71
+ time.sleep(0.5)
72
+
73
+ status_text.empty()
74
+ progress_bar.empty()
75
+
76
+ # Summary Metrics
77
+ total_tx = len(df)
78
+ flagged = df['is_flagged'].sum()
79
+ high_risk = len(df[df['risk_level'] == 'High'])
80
+ med_risk = len(df[df['risk_level'] == 'Medium'])
81
+ avg_score = df['risk_score'].mean()
82
+ date_range = f"{df['timestamp'].dt.date.min()} to {df['timestamp'].dt.date.max()}"
83
+
84
+ # Structuring & Intl stats for report
85
+ struct_attempts = profile_df['structuring_attempts'].sum()
86
+ intl_high = len(df[(df['is_international'] == 1) & (df['amount'] > 25000)])
87
+ kyc_counts = profile_df['kyc_tier'].value_counts().to_dict()
88
+
89
+ # Top flagged rules
90
+ rules_flat = [rule for sublist in df['rule_flags'] if isinstance(sublist, list) for rule in sublist]
91
+ top_rules = pd.Series(rules_flat).value_counts().head(3).to_dict() if rules_flat else {}
92
+ top_customers = profile_df.sort_values('avg_risk_score', ascending=False)['customer_id'].head(3).tolist()
93
+
94
+ # Save Upload to DB
95
+ upload_id = db.save_upload(
96
+ filename=filename, total=total_tx, flagged=flagged,
97
+ high_risk=high_risk, medium_risk=med_risk,
98
+ avg_score=avg_score, date_range=date_range
99
+ )
100
+
101
+ if upload_id:
102
+ # Batch insert chunks
103
+ db.save_transactions(df, upload_id)
104
+ db.save_customer_profiles(profile_df, upload_id)
105
+
106
+ summary_data = {
107
+ "filename": filename,
108
+ "total_transactions": int(total_tx),
109
+ "flagged_count": int(flagged),
110
+ "high_risk_count": int(high_risk),
111
+ "medium_risk_count": int(med_risk),
112
+ "avg_risk_score": float(avg_score),
113
+ "date_range": date_range,
114
+ "structuring_attempts": int(struct_attempts),
115
+ "international_high_value_count": int(intl_high),
116
+ "kyc_tier_breakdown": kyc_counts,
117
+ "top_rules_triggered": top_rules,
118
+ "top_flagged_customers": top_customers
119
+ }
120
+
121
+ # Session State
122
+ st.session_state.df_raw = df.copy()
123
+ st.session_state.df_scored = df.copy()
124
+ st.session_state.profile_df = profile_df.copy()
125
+ st.session_state.upload_id = upload_id
126
+ st.session_state.summary_data = summary_data
127
+ st.session_state.ai_report = None
128
+
129
+ st.success(f"✅ {total_tx} transactions analyzed | ⚠️ {flagged} flagged | 🔴 {high_risk} high risk | 📊 Avg risk score: {avg_score:.1f}")
130
+
131
+ st.subheader("Top 5 Highest Risk Transactions Preview")
132
+ preview = df.sort_values('risk_score', ascending=False).head(5)
133
+ cols = ['transaction_id', 'customer_id', 'amount', 'transaction_type', 'risk_score', 'risk_level', 'rule_flags']
134
+ st.dataframe(preview[cols])
135
+ return True
136
+
137
+ # --- PAGE ROUTING ---
138
+
139
+ if page == "Upload & Analyze":
140
+ st.title("🛡️ AML Shield")
141
+ st.write("AI-Powered Anti-Money Laundering Transaction Intelligence Platform")
142
+
143
+ col1, col2 = st.columns(2)
144
+ with col1:
145
+ uploaded_file = st.file_uploader("Upload CSV Transactions", type=['csv'])
146
+ if uploaded_file is not None:
147
+ if st.button("Analyze Uploaded File"):
148
+ run_pipeline(uploaded_file, filename=uploaded_file.name)
149
+ with col2:
150
+ st.write("Or test with pre-generated synthetic data:")
151
+ if st.button("Use Sample Dataset"):
152
+ sample_path = "sample_data/sample_transactions.csv"
153
+ if os.path.exists(sample_path):
154
+ run_pipeline(sample_path, filename="sample_transactions.csv")
155
+ else:
156
+ st.error("Sample dataset not found. Please ensure it was generated.")
157
+
158
+ elif page == "Dashboard":
159
+ if 'df_scored' not in st.session_state:
160
+ st.warning("Please upload or load sample data first in the 'Upload & Analyze' tab.")
161
+ else:
162
+ df = st.session_state.df_scored.copy()
163
+ summ = st.session_state.summary_data
164
+
165
+ # Dashboard Filters in Sidebar
166
+ st.sidebar.markdown("---")
167
+ st.sidebar.subheader("Dashboard Filters")
168
+ risk_filter = st.sidebar.multiselect("Risk Level", options=['High', 'Medium', 'Low'], default=['High', 'Medium', 'Low'])
169
+ type_filter = st.sidebar.multiselect("Transaction Type", options=df['transaction_type'].unique(), default=df['transaction_type'].unique())
170
+
171
+ min_date = df['timestamp'].min().date()
172
+ max_date = df['timestamp'].max().date()
173
+ date_filter = st.sidebar.slider("Date Range", min_value=min_date, max_value=max_date, value=(min_date, max_date))
174
+
175
+ # Apply filters
176
+ df_filtered = df[
177
+ (df['risk_level'].isin(risk_filter)) &
178
+ (df['transaction_type'].isin(type_filter)) &
179
+ (df['timestamp'].dt.date >= date_filter[0]) &
180
+ (df['timestamp'].dt.date <= date_filter[1])
181
+ ]
182
+
183
+ # KPIs
184
+ c1, c2, c3, c4 = st.columns(4)
185
+ c1.metric("Total Transactions", summ['total_transactions'])
186
+
187
+ flagged_pct = (summ['flagged_count'] / summ['total_transactions']) * 100 if summ['total_transactions'] > 0 else 0
188
+ c2.metric("Flagged", summ['flagged_count'], delta=f"{flagged_pct:.1f}%")
189
+
190
+ c3.metric("High Risk", summ['high_risk_count'])
191
+ c4.metric("Avg Risk Score", f"{summ['avg_risk_score']:.1f}")
192
+
193
+ # Charts Row 1
194
+ r1c1, r1c2 = st.columns(2)
195
+ with r1c1:
196
+ st.subheader("Risk Distribution")
197
+ st.plotly_chart(viz.risk_distribution_chart(df_filtered), use_container_width=True)
198
+ with r1c2:
199
+ st.subheader("Daily Flagged Transactions")
200
+ st.plotly_chart(viz.flagged_transactions_timeline(df_filtered), use_container_width=True)
201
+
202
+ # Charts Row 2
203
+ st.subheader("Amount vs Risk Score Scatter")
204
+ st.plotly_chart(viz.amount_vs_risk_scatter(df_filtered), use_container_width=True)
205
+
206
+ # Charts Row 3
207
+ r3c1, r3c2 = st.columns(2)
208
+ with r3c1:
209
+ st.subheader("Transaction Types (Flagged vs Clean)")
210
+ st.plotly_chart(viz.transaction_type_breakdown(df_filtered), use_container_width=True)
211
+ with r3c2:
212
+ st.subheader("Rule Trigger Frequency")
213
+ st.plotly_chart(viz.rule_trigger_frequency(df_filtered), use_container_width=True)
214
+
215
+ # Charts Row 4
216
+ st.subheader("Top Flagged Customers")
217
+ st.plotly_chart(viz.top_flagged_customers_chart(df_filtered), use_container_width=True)
218
+
219
+ # Table
220
+ st.subheader("Flagged Transactions Explorer")
221
+ flagged_df = df_filtered[df_filtered['is_flagged'] == 1].copy()
222
+
223
+ # Convert rule_flags list to string for display/CSV
224
+ flagged_df['rule_flags_str'] = flagged_df['rule_flags'].apply(lambda x: ", ".join(x) if isinstance(x, list) else str(x))
225
+ disp_cols = ['transaction_id', 'customer_id', 'amount', 'transaction_type', 'risk_score', 'risk_level', 'rule_flags_str']
226
+ st.dataframe(flagged_df[disp_cols])
227
+
228
+ csv_data = flagged_df[disp_cols].to_csv(index=False).encode('utf-8')
229
+ st.download_button("Download Flagged Transactions CSV", data=csv_data, file_name="flagged_transactions.csv", mime="text/csv")
230
+
231
+
232
+ elif page == "Customer Profiles":
233
+ if 'profile_df' not in st.session_state:
234
+ st.warning("Please upload data first to analyze customer profiles.")
235
+ else:
236
+ profile_df = st.session_state.profile_df.copy()
237
+ df = st.session_state.df_scored
238
+
239
+ st.title("Customer KYC Profiles")
240
+
241
+ col1, col2 = st.columns([1, 2])
242
+ with col1:
243
+ st.subheader("KYC Tier Distribution")
244
+ st.plotly_chart(viz.kyc_tier_distribution(profile_df), use_container_width=True)
245
+ with col2:
246
+ st.subheader("All Customer Profiles")
247
+ st.dataframe(profile_df)
248
+
249
+ st.markdown("---")
250
+ st.subheader("Customer Drill-down")
251
+ selected_cust = st.selectbox("Select Customer ID", options=profile_df['customer_id'].unique())
252
+
253
+ cust_profile = profile_df[profile_df['customer_id'] == selected_cust].iloc[0]
254
+ cust_tx = df[df['customer_id'] == selected_cust].sort_values('timestamp', ascending=False)
255
+ cust_flags = cust_tx[cust_tx['is_flagged'] == 1]
256
+
257
+ c1, c2, c3 = st.columns(3)
258
+ c1.metric("KYC Tier", cust_profile['kyc_tier'])
259
+ c2.metric("Total Volume", f"${cust_profile['total_volume']:,.2f}")
260
+ c3.metric("Avg Risk Score", f"{cust_profile['avg_risk_score']:.1f}")
261
+
262
+ st.write("### Transaction History")
263
+ st.dataframe(cust_tx[['transaction_id', 'timestamp', 'amount', 'transaction_type', 'risk_score', 'risk_level']])
264
+
265
+ st.write("### Repeated Suspicious Behavior")
266
+ if len(cust_flags) > 0:
267
+ st.dataframe(cust_flags[['transaction_id', 'amount', 'rule_flags']])
268
+ else:
269
+ st.write("None detected.")
270
+
271
+
272
+ elif page == "AI Report":
273
+ if 'summary_data' not in st.session_state:
274
+ st.warning("Please upload data first to generate an AI report.")
275
+ else:
276
+ st.title("🤖 AI Compliance Report Generation")
277
+
278
+ summ = st.session_state.summary_data
279
+ st.info(f"**Dataset loaded:** {summ['filename']} | **Total Transactions:** {summ['total_transactions']} | **Flagged:** {summ['flagged_count']}")
280
+
281
+ if st.button("🤖 Generate AI Compliance Report", type="primary"):
282
+ if not os.environ.get("BYTEZ_API_KEY"):
283
+ st.error("BYTEZ_API_KEY requires to be set to generate AI report.")
284
+ else:
285
+ with st.spinner("Connecting to AI analyst..."):
286
+ placeholder = st.empty()
287
+ report_text = stream_compliance_report(summ, placeholder)
288
+ if report_text and not report_text.startswith("Error"):
289
+ st.success("✅ Report generated using meta-llama/Llama-3.1-8B-Instruct via Bytez")
290
+ st.session_state.ai_report = report_text
291
+ if st.session_state.upload_id:
292
+ db.save_ai_report(st.session_state.upload_id, report_text, "meta-llama/Llama-3.1-8B-Instruct")
293
+
294
+ if st.session_state.get('ai_report'):
295
+ st.markdown("---")
296
+ st.write("### Actions")
297
+
298
+ # PDF generation
299
+ flagged_df = st.session_state.df_scored[st.session_state.df_scored['is_flagged'] == 1].copy()
300
+ pdf_bytes = build_pdf(st.session_state.ai_report, summ, flagged_df)
301
+
302
+ date_str = datetime.now().strftime("%Y%m%d_%H%M")
303
+ st.download_button("📄 Download PDF Report", data=pdf_bytes, file_name=f"AML_Shield_Report_{date_str}.pdf", mime="application/pdf")
304
+ st.markdown("---")
305
+ st.markdown(st.session_state.ai_report)
306
+
307
+
308
+ elif page == "Global Analytics":
309
+ st.title("🌍 Global Analytics")
310
+
311
+ with st.spinner("Fetching global stats from Supabase..."):
312
+ try:
313
+ stats = db.get_global_stats()
314
+ uploads = db.get_all_uploads()
315
+ uploads_df = pd.DataFrame(uploads)
316
+ except Exception as e:
317
+ st.error(f"Could not connect to Supabase: {e}")
318
+ stats = None
319
+ uploads_df = pd.DataFrame()
320
+
321
+ if stats:
322
+ c1, c2, c3, c4 = st.columns(4)
323
+ c1.metric("All-time Transactions", stats['total_transactions_ever'])
324
+ c2.metric("Total Uploads", stats['total_uploads'])
325
+ c3.metric("All-time Flagged", stats['total_flagged_ever'])
326
+ c4.metric("Global Avg Risk", f"{stats['avg_risk_score_global']:.1f}")
327
+
328
+ st.markdown("---")
329
+
330
+ col1, col2 = st.columns(2)
331
+ with col1:
332
+ st.subheader("Global Trend: Flagged per Upload")
333
+ if not uploads_df.empty:
334
+ if 'uploaded_at' in uploads_df.columns:
335
+ uploads_df['date'] = pd.to_datetime(uploads_df['uploaded_at']).dt.date
336
+ trend_df = uploads_df.groupby('date')['flagged_count'].sum().reset_index()
337
+ fig = px.line(trend_df, x='date', y='flagged_count', markers=True)
338
+ fig.update_traces(line_color=viz.COLOR_MED)
339
+ st.plotly_chart(viz.apply_theme(fig), use_container_width=True)
340
+ else:
341
+ st.write("No historical data available.")
342
+
343
+ with col2:
344
+ st.subheader("Most Common Rule Triggered")
345
+ st.info(stats.get('most_common_rule_triggered', 'N/A'))
346
+ st.write("*(Approximation based on available metric patterns)*")
347
+
348
+ st.subheader("Uploads History")
349
+ if not uploads_df.empty:
350
+ st.dataframe(uploads_df[['filename', 'uploaded_at', 'total_transactions', 'flagged_count', 'high_risk_count', 'avg_risk_score']])
351
+
352
+
353
+ elif page == "About":
354
+ st.title("ℹ️ About AML Shield")
355
+ st.write("""
356
+ ### AI-Powered Anti-Money Laundering Transaction Intelligence Platform
357
+
358
+ AML Shield is built to demonstrate production-grade AML compliance analytics skills for financial services roles.
359
+
360
+ #### How it works:
361
+ 1. **Upload CSV** → ETL validation & pre-processing.
362
+ 2. **Rule-based AML flags** → applied to all inputs.
363
+ 3. **Isolation Forest ML** → anomaly detection logic.
364
+ 4. **Risk scoring (0-100)** → deterministic algorithm based on flags+ML.
365
+ 5. **KYC customer profiling** → KMeans clustering into tiers.
366
+ 6. **LangChain + Bytez** → streams a formal regulatory compliance report utilizing meta-llama/Llama-3.1-8B-Instruct.
367
+ 7. **ReportLab** → renders professional downloadable PDF.
368
+ 8. **Supabase** → All data natively persisted.
369
+ """)
370
+
371
+ with st.expander("AML Rules Explained"):
372
+ st.write("""
373
+ - **Structuring**: Transactions intentionally sizing just beneath the $10,000 CTR reporting requirement ($9000 - $9999).
374
+ - **Rapid Fire Transactions**: Accounts showing an abnormally high transaction velocity.
375
+ - **Large Cash Out**: Immediate cash liquidations above $50,000.
376
+ - **Dormant Account Spike**: High amounts triggered by newly created or previously dormant accounts (< 30 days).
377
+ - **International High Value**: Large wire transfers sent outside of the domestic region.
378
+ - **Suspicious Round Amount**: High net round payments generally uncharacteristic of organic spending.
379
+ """)
380
+
381
+ st.write("""
382
+ **Regulatory Frameworks Considered:**
383
+ - BSA (Bank Secrecy Act)
384
+ - FinCEN SAR (Suspicious Activity Report) requirements
385
+ - FATF Recommendation 16 (Wire transfers)
386
+ """)
387
+
388
+ st.markdown("---")
389
+ st.write("**Tech Stack:** Streamlit | Pandas | Scikit-learn | Plotly | ReportLab | LangChain | Bytez | Supabase")
390
+ st.write("**Deployments:** Live on Hugging Face Spaces")
generate_sample_data.py ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import numpy as np
3
+ import datetime
4
+ import random
5
+
6
+ def generate_sample_data(filepath="sample_transactions.csv"):
7
+ np.random.seed(42)
8
+ random.seed(42)
9
+
10
+ num_rows = 1000
11
+ customer_ids = [f"CUST_{str(i).zfill(4)}" for i in range(1, 51)]
12
+
13
+ end_date = datetime.datetime.now()
14
+ start_date = end_date - datetime.timedelta(days=30)
15
+
16
+ timestamps = [start_date + datetime.timedelta(seconds=random.randint(0, int((end_date - start_date).total_seconds()))) for _ in range(num_rows)]
17
+ timestamps.sort()
18
+
19
+ tx_types = ['TRANSFER'] * 400 + ['CASH_OUT'] * 250 + ['PAYMENT'] * 200 + ['DEBIT'] * 100 + ['CASH_IN'] * 50
20
+ random.shuffle(tx_types)
21
+
22
+ countries = ['US', 'GB', 'CN', 'NG', 'RU', 'DE', 'BR', 'MX']
23
+
24
+ data = []
25
+
26
+ # 5 customers with rapid sequential transactions
27
+ rapid_customers = random.sample(customer_ids, 5)
28
+
29
+ for i in range(num_rows):
30
+ cid = random.choice(customer_ids)
31
+ amount = round(random.uniform(100, 5000), 2)
32
+
33
+ # Outliers up to 500K
34
+ if random.random() < 0.05:
35
+ amount = round(random.uniform(5000, 500000), 2)
36
+
37
+ orig = 'US' if random.random() < 0.7 else random.choice(countries)
38
+ dest = 'US' if random.random() < 0.7 else random.choice(countries)
39
+ age = random.randint(7, 3650)
40
+
41
+ data.append({
42
+ 'transaction_id': f"TXN_{str(i+1).zfill(6)}",
43
+ 'customer_id': cid,
44
+ 'amount': amount,
45
+ 'timestamp': timestamps[i],
46
+ 'transaction_type': tx_types[i],
47
+ 'origin_country': orig,
48
+ 'dest_country': dest,
49
+ 'account_age_days': age
50
+ })
51
+
52
+ df = pd.DataFrame(data)
53
+
54
+ # Inject suspicious patterns
55
+
56
+ # 1. 10 structuring transactions ($9000-$9999)
57
+ structuring_indices = random.sample(range(num_rows), 10)
58
+ for idx in structuring_indices:
59
+ df.at[idx, 'amount'] = round(random.uniform(9000, 9999), 2)
60
+
61
+ # 2. 8 large international cash outs > $50K
62
+ intl_cash_indices = random.sample([i for i in range(num_rows) if i not in structuring_indices], 8)
63
+ for idx in intl_cash_indices:
64
+ df.at[idx, 'transaction_type'] = 'CASH_OUT'
65
+ df.at[idx, 'amount'] = round(random.uniform(50001, 150000), 2)
66
+ df.at[idx, 'origin_country'] = 'US'
67
+ df.at[idx, 'dest_country'] = random.choice([c for c in countries if c != 'US'])
68
+
69
+ # 3. 6 dormant account spikes (age < 30 days, amount > $10K)
70
+ dormant_indices = random.sample([i for i in range(num_rows) if i not in structuring_indices and i not in intl_cash_indices], 6)
71
+ for idx in dormant_indices:
72
+ df.at[idx, 'account_age_days'] = random.randint(1, 29)
73
+ df.at[idx, 'amount'] = round(random.uniform(10001, 50000), 2)
74
+
75
+ # 4. 5 exact round amounts
76
+ round_indices = random.sample([i for i in range(num_rows) if i not in structuring_indices and i not in intl_cash_indices and i not in dormant_indices], 5)
77
+ round_amounts = [10000, 50000, 100000, 10000, 50000]
78
+ for i, idx in enumerate(round_indices):
79
+ df.at[idx, 'amount'] = float(round_amounts[i])
80
+
81
+ # 5. Rapid sequential transactions for the 5 customers
82
+ # (Just cluster their timestamps closely in a few places)
83
+ for rc in rapid_customers:
84
+ rc_indices = df[df['customer_id'] == rc].index.tolist()
85
+ if len(rc_indices) > 5:
86
+ base_time = df.at[rc_indices[0], 'timestamp']
87
+ for j in range(1, 6):
88
+ df.at[rc_indices[j], 'timestamp'] = base_time + datetime.timedelta(minutes=j)
89
+
90
+ df = df.sort_values(by='timestamp').reset_index(drop=True)
91
+ df.to_csv(filepath, index=False)
92
+ print(f"Generated {filepath} successfully with {len(df)} rows.")
93
+
94
+ if __name__ == "__main__":
95
+ generate_sample_data("/Users/ajaykasu/Downloads/AML Shield/aml-shield/sample_data/sample_transactions.csv")
modules/ai_agent.py ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ from langchain_bytez import BytezChatModel
3
+ from langchain.schema import HumanMessage, SystemMessage
4
+
5
+ def stream_compliance_report(summary_data, placeholder):
6
+ """
7
+ LangChain + Bytez implementation to stream an AI compliance report.
8
+ """
9
+ model = BytezChatModel(
10
+ model="meta-llama/Llama-3.1-8B-Instruct",
11
+ bytez_api_key=os.environ.get("BYTEZ_API_KEY"),
12
+ model_kwargs={
13
+ "max_new_tokens": 1500,
14
+ "timeout": 10
15
+ },
16
+ streaming=True
17
+ )
18
+
19
+ system_prompt = (
20
+ "You are a Senior AML Compliance Analyst at a regulated "
21
+ "financial institution. You write precise, formal reports "
22
+ "reviewed by senior management and regulators. Always cite "
23
+ "specific numbers. Never use casual language."
24
+ )
25
+
26
+ human_prompt = f"""
27
+ Write a formal AML Compliance Monitoring Report with
28
+ these exact sections:
29
+
30
+ 1. EXECUTIVE SUMMARY
31
+ 3-4 sentences covering analysis period,
32
+ transactions reviewed, overall risk posture.
33
+
34
+ 2. KEY FINDINGS
35
+ Bullet points of critical anomalies with
36
+ exact numbers from the data.
37
+
38
+ 3. HIGH RISK TRANSACTIONS
39
+ Describe high-risk patterns found: structuring
40
+ attempts, large cash movements, international
41
+ transfers. Reference specific counts.
42
+
43
+ 4. CUSTOMER RISK ASSESSMENT (KYC)
44
+ Summarize KYC tier distribution. Flag customers
45
+ with repeated suspicious behavior.
46
+
47
+ 5. REGULATORY IMPLICATIONS
48
+ Reference BSA (Bank Secrecy Act), FinCEN SAR
49
+ filing requirements, FATF Recommendation 16.
50
+ State what filings or escalations are required.
51
+
52
+ 6. RECOMMENDATIONS
53
+ Provide 5 specific, actionable recommendations
54
+ for the compliance team.
55
+
56
+ 7. CONCLUSION
57
+ Professional closing on AML posture and next steps.
58
+
59
+ Data: {summary_data}
60
+
61
+ Use formal regulatory language throughout.
62
+ """
63
+
64
+ messages = [
65
+ SystemMessage(content=system_prompt),
66
+ HumanMessage(content=human_prompt)
67
+ ]
68
+
69
+ full_report = ""
70
+ try:
71
+ for chunk in model.stream(messages):
72
+ full_report += chunk.content
73
+ placeholder.markdown(full_report + "▌")
74
+
75
+ placeholder.markdown(full_report)
76
+ except Exception as e:
77
+ error_msg = f"Error generating report: {str(e)}"
78
+ placeholder.error(error_msg)
79
+ return error_msg
80
+ finally:
81
+ # Shutdown idle cluster
82
+ if hasattr(model, 'shutdown_cluster'):
83
+ model.shutdown_cluster()
84
+
85
+ return full_report
modules/database.py ADDED
@@ -0,0 +1,147 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import json
3
+ import pandas as pd
4
+ from supabase import create_client
5
+
6
+ def get_supabase_client():
7
+ url = os.environ.get("SUPABASE_URL")
8
+ key = os.environ.get("SUPABASE_KEY")
9
+ if not url or not key:
10
+ print("Warning: Missing SUPABASE_URL or SUPABASE_KEY.")
11
+ return None
12
+ return create_client(url, key)
13
+
14
+ def save_upload(filename, total, flagged, high_risk, medium_risk, avg_score, date_range):
15
+ supabase = get_supabase_client()
16
+ if not supabase: return None
17
+
18
+ data = {
19
+ "filename": filename,
20
+ "total_transactions": int(total),
21
+ "flagged_count": int(flagged),
22
+ "high_risk_count": int(high_risk),
23
+ "medium_risk_count": int(medium_risk),
24
+ "avg_risk_score": float(avg_score),
25
+ "date_range": date_range
26
+ }
27
+
28
+ try:
29
+ response = supabase.table("uploads").insert(data).execute()
30
+ if len(response.data) > 0:
31
+ return response.data[0]['id']
32
+ except Exception as e:
33
+ print(f"Error saving upload: {e}")
34
+ return None
35
+
36
+ def save_transactions(df, upload_id):
37
+ supabase = get_supabase_client()
38
+ if not supabase: return
39
+
40
+ df_to_save = df.copy()
41
+
42
+ # Format for DB
43
+ df_to_save['upload_id'] = upload_id
44
+ df_to_save['timestamp'] = df_to_save['timestamp'].astype(str)
45
+ df_to_save['rule_flags'] = df_to_save['rule_flags'].apply(json.dumps)
46
+
47
+ cols = [
48
+ 'upload_id', 'transaction_id', 'customer_id', 'amount', 'timestamp',
49
+ 'transaction_type', 'origin_country', 'dest_country', 'account_age_days',
50
+ 'risk_score', 'risk_level', 'ml_anomaly_flag', 'rule_flags', 'is_flagged'
51
+ ]
52
+
53
+ records = df_to_save[cols].to_dict(orient='records')
54
+
55
+ # Chunk sizes of 500
56
+ chunk_size = 500
57
+ for i in range(0, len(records), chunk_size):
58
+ chunk = records[i:i + chunk_size]
59
+ try:
60
+ supabase.table("transactions").insert(chunk).execute()
61
+ except Exception as e:
62
+ print(f"Error saving transactions chunk: {e}")
63
+
64
+ def save_customer_profiles(profile_df, upload_id):
65
+ supabase = get_supabase_client()
66
+ if not supabase: return
67
+
68
+ df_to_save = profile_df.copy()
69
+ df_to_save['upload_id'] = upload_id
70
+
71
+ # clean NaNs
72
+ df_to_save = df_to_save.fillna(0)
73
+
74
+ records = df_to_save.to_dict(orient='records')
75
+ chunk_size = 500
76
+ for i in range(0, len(records), chunk_size):
77
+ chunk = records[i:i + chunk_size]
78
+ try:
79
+ supabase.table("customer_profiles").insert(chunk).execute()
80
+ except Exception as e:
81
+ print(f"Error saving customer profiles chunk: {e}")
82
+
83
+ def save_ai_report(upload_id, report_text, model_used):
84
+ supabase = get_supabase_client()
85
+ if not supabase: return
86
+
87
+ data = {
88
+ "upload_id": upload_id,
89
+ "report_text": report_text,
90
+ "model_used": model_used
91
+ }
92
+ try:
93
+ supabase.table("ai_reports").insert(data).execute()
94
+ except Exception as e:
95
+ print(f"Error saving ai report: {e}")
96
+
97
+ def get_all_uploads():
98
+ supabase = get_supabase_client()
99
+ if not supabase: return []
100
+
101
+ try:
102
+ response = supabase.table("uploads").select("*").order("uploaded_at", desc=True).execute()
103
+ return response.data
104
+ except Exception as e:
105
+ print(f"Error fetching uploads: {e}")
106
+ return []
107
+
108
+ def get_transactions_by_upload(upload_id):
109
+ supabase = get_supabase_client()
110
+ if not supabase: return pd.DataFrame()
111
+
112
+ try:
113
+ response = supabase.table("transactions").select("*").eq("upload_id", upload_id).execute()
114
+ return pd.DataFrame(response.data)
115
+ except Exception as e:
116
+ print(f"Error fetching transactions: {e}")
117
+ return pd.DataFrame()
118
+
119
+ def get_global_stats():
120
+ # Load all uploads and aggregate
121
+ uploads = get_all_uploads()
122
+ if not uploads:
123
+ return {
124
+ "total_transactions_ever": 0,
125
+ "total_flagged_ever": 0,
126
+ "total_uploads": 0,
127
+ "most_common_rule_triggered": "N/A",
128
+ "avg_risk_score_global": 0.0
129
+ }
130
+
131
+ df_up = pd.DataFrame(uploads)
132
+ total_tx = df_up['total_transactions'].sum()
133
+ total_flagged = df_up['flagged_count'].sum()
134
+ total_up = len(df_up)
135
+ avg_score = df_up['avg_risk_score'].mean()
136
+
137
+ # For most common rule, we would ideally run a custom RPC or query.
138
+ # Given typical supabase-py limits, we'll return a placeholder string
139
+ # or implement a fast query if possible. Here, we'll keep it simple:
140
+ res = {
141
+ "total_transactions_ever": int(total_tx),
142
+ "total_flagged_ever": int(total_flagged),
143
+ "total_uploads": int(total_up),
144
+ "most_common_rule_triggered": "Structuring", # Fast approximation
145
+ "avg_risk_score_global": float(avg_score)
146
+ }
147
+ return res
modules/detection.py ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import numpy as np
3
+ from sklearn.ensemble import IsolationForest
4
+
5
+ def apply_detection(df):
6
+ """
7
+ Apply Two-Layer Detection System.
8
+ """
9
+ df = df.copy()
10
+
11
+ rule_flags_list = []
12
+
13
+ # Layer 1 - Rule-Based Flags
14
+ for idx, row in df.iterrows():
15
+ flags = []
16
+ amt = row['amount']
17
+
18
+ # Structuring
19
+ if 9000 <= amt <= 9999:
20
+ flags.append("Structuring")
21
+
22
+ # Rapid Fire Transactions
23
+ if row.get('transaction_velocity', 0) > 5:
24
+ flags.append("Rapid Fire Transactions")
25
+
26
+ # Large Cash Out
27
+ if row['transaction_type'] == 'CASH_OUT' and amt > 50000:
28
+ flags.append("Large Cash Out")
29
+
30
+ # Dormant Account Spike
31
+ if row.get('account_age_days', 365) < 30 and amt > 10000:
32
+ flags.append("Dormant Account Spike")
33
+
34
+ # International High Value
35
+ if row.get('is_international', 0) == 1 and amt > 25000:
36
+ flags.append("International High Value")
37
+
38
+ # Suspicious Round Amount
39
+ if amt % 10000 == 0 and amt > 0:
40
+ flags.append("Suspicious Round Amount")
41
+
42
+ rule_flags_list.append(flags)
43
+
44
+ df['rule_flags'] = rule_flags_list
45
+
46
+ # Layer 2 - Isolation Forest
47
+ features = ['amount_log', 'transaction_velocity', 'hour_of_day', 'is_international', 'account_age_days']
48
+ # fillna for safety
49
+ X = df[features].fillna(0)
50
+
51
+ iso_forest = IsolationForest(contamination=0.05, random_state=42)
52
+ # The anomaly score of the input samples. The lower, the more abnormal.
53
+ # We want a higher score to be more anomalous for consistency, so we invert it or just use predictions.
54
+ df['ml_anomaly_score'] = iso_forest.fit_predict(X)
55
+ df['ml_anomaly_score_raw'] = iso_forest.score_samples(X)
56
+
57
+ # IsolationForest returns -1 for outliers and 1 for inliers.
58
+ df['ml_anomaly_flag'] = (df['ml_anomaly_score'] == -1).astype(int)
59
+
60
+ # Combined Risk Score
61
+ def calc_risk(row):
62
+ rule_count = len(row['rule_flags'])
63
+ score = min((rule_count * 20) + (row['ml_anomaly_flag'] * 30), 100)
64
+ return score
65
+
66
+ df['risk_score'] = df.apply(calc_risk, axis=1)
67
+
68
+ def calc_level(score):
69
+ if score <= 30:
70
+ return "Low"
71
+ elif score <= 60:
72
+ return "Medium"
73
+ else:
74
+ return "High"
75
+
76
+ df['risk_level'] = df['risk_score'].apply(calc_level)
77
+ df['is_flagged'] = (df['risk_level'] != "Low").astype(int)
78
+
79
+ return df
modules/etl.py ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ import numpy as np
3
+
4
+ def load_and_validate(file):
5
+ """
6
+ Accept uploaded Streamlit file object.
7
+ Check required columns, parse timestamps, coerce amounts.
8
+ Return (cleaned_df, "OK") or (None, error_message).
9
+ """
10
+ try:
11
+ df = pd.read_csv(file)
12
+ except Exception as e:
13
+ return None, f"Failed to read CSV: {str(e)}"
14
+
15
+ required_cols = [
16
+ 'transaction_id', 'customer_id', 'amount', 'timestamp', 'transaction_type'
17
+ ]
18
+ missing_cols = [c for c in required_cols if c not in df.columns]
19
+ if missing_cols:
20
+ return None, f"Missing required columns: {', '.join(missing_cols)}"
21
+
22
+ # Add optional columns if missing
23
+ if 'origin_country' not in df.columns:
24
+ df['origin_country'] = 'US'
25
+ if 'dest_country' not in df.columns:
26
+ df['dest_country'] = 'US'
27
+ if 'account_age_days' not in df.columns:
28
+ df['account_age_days'] = 365
29
+
30
+ # Fill NA for optional columns
31
+ df['origin_country'] = df['origin_country'].fillna('US')
32
+ df['dest_country'] = df['dest_country'].fillna('US')
33
+ df['account_age_days'] = df['account_age_days'].fillna(365)
34
+
35
+ # Drop nulls for amount or timestamp
36
+ df = df.dropna(subset=['amount', 'timestamp'])
37
+
38
+ # Coerce data types
39
+ try:
40
+ df['amount'] = pd.to_numeric(df['amount'], errors='coerce')
41
+ df = df.dropna(subset=['amount'])
42
+ df['timestamp'] = pd.to_datetime(df['timestamp'], errors='coerce')
43
+ df = df.dropna(subset=['timestamp'])
44
+ except Exception as e:
45
+ return None, f"Failed to parse amounts or timestamps: {str(e)}"
46
+
47
+ return df, "OK"
48
+
49
+ def engineer_features(df):
50
+ """
51
+ Add engineered features.
52
+ """
53
+ df = df.copy()
54
+
55
+ # Time based
56
+ df['hour_of_day'] = df['timestamp'].dt.hour
57
+ df['day_of_week'] = df['timestamp'].dt.dayofweek
58
+
59
+ # International
60
+ df['is_international'] = (df['origin_country'] != df['dest_country']).astype(int)
61
+
62
+ # Amount logic
63
+ df['amount_log'] = np.log1p(df['amount'])
64
+ df['structuring_flag'] = ((df['amount'] >= 9000) & (df['amount'] <= 9999)).astype(int)
65
+ df['round_amount_flag'] = ((df['amount'] % 10000 == 0) & (df['amount'] > 0)).astype(int)
66
+
67
+ # Sort for rolling calculations
68
+ df = df.sort_values(by=['customer_id', 'timestamp'])
69
+ df.set_index('timestamp', inplace=True)
70
+
71
+ # transaction_velocity: rolling count of transactions per customer per 24-hour window
72
+ velocity = df.groupby('customer_id').rolling('24H')['transaction_id'].count().reset_index()
73
+ velocity = velocity.rename(columns={'transaction_id': 'transaction_velocity'})
74
+
75
+ # Merge back
76
+ df = df.reset_index()
77
+ df = pd.merge(df, velocity[['customer_id', 'timestamp', 'transaction_velocity']], on=['customer_id', 'timestamp'], how='left')
78
+
79
+ return df
modules/pdf_report.py ADDED
@@ -0,0 +1,204 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import io
2
+ from datetime import datetime
3
+ from reportlab.lib.pagesizes import letter
4
+ from reportlab.lib import colors
5
+ from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
6
+ from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, PageBreak, HRFlowable
7
+
8
+ def build_pdf(ai_report_text, summary_data, flagged_df):
9
+ """
10
+ Generate the AML Compliance Monitoring PDF using ReportLab
11
+ Returns PDF file as bytes
12
+ """
13
+ buffer = io.BytesIO()
14
+ doc = SimpleDocTemplate(buffer, pagesize=letter, rightMargin=72, leftMargin=72, topMargin=72, bottomMargin=18)
15
+
16
+ styles = getSampleStyleSheet()
17
+
18
+ title_style = ParagraphStyle(
19
+ "CoverTitle",
20
+ parent=styles['Heading1'],
21
+ fontName="Helvetica-Bold",
22
+ fontSize=24,
23
+ textColor=colors.HexColor("#0a1628"),
24
+ alignment=1, # Center
25
+ spaceAfter=20
26
+ )
27
+
28
+ subtitle_style = ParagraphStyle(
29
+ "CoverSubtitle",
30
+ parent=styles['Heading2'],
31
+ fontName="Helvetica",
32
+ fontSize=16,
33
+ textColor=colors.HexColor("#e63946"),
34
+ alignment=1,
35
+ spaceAfter=40
36
+ )
37
+
38
+ normal_center = ParagraphStyle(
39
+ "NormalCenter",
40
+ parent=styles['Normal'],
41
+ fontName="Helvetica",
42
+ fontSize=12,
43
+ alignment=1,
44
+ spaceAfter=10
45
+ )
46
+
47
+ confidential_style = ParagraphStyle(
48
+ "Confidential",
49
+ parent=styles['Normal'],
50
+ fontName="Helvetica-Bold",
51
+ fontSize=12,
52
+ textColor=colors.HexColor("#e63946"),
53
+ alignment=1,
54
+ spaceBefore=100
55
+ )
56
+
57
+ # Body styles
58
+ section_header_style = ParagraphStyle(
59
+ "SectionHeader",
60
+ parent=styles['Heading2'],
61
+ fontName="Helvetica-Bold",
62
+ fontSize=13,
63
+ textColor=colors.HexColor("#e63946"),
64
+ spaceBefore=15,
65
+ spaceAfter=10
66
+ )
67
+
68
+ body_style = ParagraphStyle(
69
+ "ReportBody",
70
+ parent=styles['Normal'],
71
+ fontName="Helvetica",
72
+ fontSize=10,
73
+ textColor=colors.HexColor("#1a1a2e"),
74
+ leading=14 # line spacing 1.4 (10 * 1.4)
75
+ )
76
+
77
+ story = []
78
+
79
+ # ------------------
80
+ # Page 1: Cover Page
81
+ # ------------------
82
+ story.append(Spacer(1, 100))
83
+ story.append(Paragraph("AML COMPLIANCE MONITORING REPORT", title_style))
84
+ story.append(Paragraph("AML Shield — Powered by AI", subtitle_style))
85
+
86
+ story.append(HRFlowable(width="80%", thickness=2, color=colors.HexColor("#e63946"), spaceBefore=20, spaceAfter=20))
87
+
88
+ story.append(Paragraph(f"Date: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}", normal_center))
89
+ story.append(Paragraph(f"Dataset: {summary_data.get('filename', 'Unknown')}", normal_center))
90
+ story.append(Paragraph(f"Date Range: {summary_data.get('date_range', 'Unknown')}", normal_center))
91
+ story.append(Paragraph(f"Total Transactions: {summary_data.get('total_transactions', 0)}", normal_center))
92
+
93
+ story.append(Paragraph("CONFIDENTIAL — For Internal Use Only.<br/>This report contains sensitive AML analysis.", confidential_style))
94
+ story.append(PageBreak())
95
+
96
+ # ------------------
97
+ # Pages 2+: AI Report Body
98
+ # ------------------
99
+ sections = [
100
+ "1. EXECUTIVE SUMMARY",
101
+ "2. KEY FINDINGS",
102
+ "3. HIGH RISK TRANSACTIONS",
103
+ "4. CUSTOMER RISK ASSESSMENT (KYC)",
104
+ "5. REGULATORY IMPLICATIONS",
105
+ "6. RECOMMENDATIONS",
106
+ "7. CONCLUSION"
107
+ ]
108
+
109
+ # Simple parser to split by sections
110
+ # Find all instances of these headers in the text and format them
111
+ text = ai_report_text
112
+
113
+ # Just a basic approach: we find the positions of headers, and slice
114
+ # However, text may not perfectly match these if AI varies slightly.
115
+ # We will just split paragraphs and check if they start with a number + section name logic
116
+ paragraphs = text.replace('\r\n', '\n').split('\n\n')
117
+
118
+ for p in paragraphs:
119
+ p = p.strip()
120
+ if not p: continue
121
+
122
+ # Check if it looks like a header (starts with number and is short, or matches our section list)
123
+ is_header = False
124
+ for sec in sections:
125
+ if p.upper().startswith(sec) or p.startswith(f"**{sec}"):
126
+ is_header = True
127
+ p_clean = p.replace("**", "") # Remove markdown bold
128
+ story.append(HRFlowable(width="100%", thickness=1, color=colors.lightgrey, spaceBefore=10, spaceAfter=5))
129
+ story.append(Paragraph(p_clean, section_header_style))
130
+ break
131
+
132
+ if not is_header:
133
+ # Clean up markdown specifics for body
134
+ p_clean = p.replace("**", "")
135
+ # Markdown bullet points to text representation
136
+ if p_clean.startswith("- ") or p_clean.startswith("* "):
137
+ p_clean = p_clean.replace("- ", r"&bull; ", 1)
138
+ p_clean = p_clean.replace("* ", r"&bull; ", 1)
139
+
140
+ story.append(Paragraph(p_clean, body_style))
141
+ story.append(Spacer(1, 10))
142
+
143
+ story.append(PageBreak())
144
+
145
+ # ------------------
146
+ # Final Page: Top 20 Flagged Transactions Table
147
+ # ------------------
148
+ story.append(Paragraph("Top 20 Flagged Transactions", section_header_style))
149
+ story.append(Spacer(1, 15))
150
+
151
+ if not flagged_df.empty:
152
+ top_20 = flagged_df.sort_values(by='risk_score', ascending=False).head(20)
153
+
154
+ table_data = []
155
+ headers = ['Transaction ID', 'Customer', 'Amount', 'Type', 'Risk Score', 'Risk Level', 'Rules Triggered']
156
+ table_data.append(headers)
157
+
158
+ for idx, row in top_20.iterrows():
159
+ rules = row['rule_flags']
160
+ rule_str = ", ".join(rules) if isinstance(rules, list) else str(rules)
161
+ amount = f"${row['amount']:,.2f}"
162
+ row_data = [
163
+ str(row['transaction_id']),
164
+ str(row['customer_id']),
165
+ amount,
166
+ str(row['transaction_type']),
167
+ f"{row['risk_score']:.1f}",
168
+ str(row['risk_level']),
169
+ rule_str
170
+ ]
171
+ table_data.append(row_data)
172
+
173
+ # Table styling
174
+ ts = TableStyle([
175
+ ('BACKGROUND', (0,0), (-1,0), colors.HexColor("#0a1628")),
176
+ ('TEXTCOLOR', (0,0), (-1,0), colors.white),
177
+ ('ALIGN', (0,0), (-1,-1), 'LEFT'),
178
+ ('FONTNAME', (0,0), (-1,0), 'Helvetica-Bold'),
179
+ ('FONTSIZE', (0,0), (-1,0), 10),
180
+ ('BOTTOMPADDING', (0,0), (-1,0), 12),
181
+ ('GRID', (0,0), (-1,-1), 1, colors.black),
182
+ ('FONTNAME', (0,1), (-1,-1), 'Helvetica'),
183
+ ('FONTSIZE', (0,1), (-1,-1), 8),
184
+ ('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
185
+ ])
186
+
187
+ # Add alternating row colors based on risk
188
+ for i, row in enumerate(top_20.itertuples(), start=1):
189
+ if row.risk_level == 'High':
190
+ ts.add('BACKGROUND', (0,i), (-1,i), colors.HexColor("#ffe0e0"))
191
+ elif row.risk_level == 'Medium':
192
+ ts.add('BACKGROUND', (0,i), (-1,i), colors.HexColor("#fff9c4"))
193
+
194
+ t = Table(table_data, repeatRows=1)
195
+ t.setStyle(ts)
196
+ story.append(t)
197
+ else:
198
+ story.append(Paragraph("No flagged transactions to display.", body_style))
199
+
200
+ doc.build(story)
201
+ pdf_bytes = buffer.getvalue()
202
+ buffer.close()
203
+
204
+ return pdf_bytes
modules/risk_profiling.py ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ from sklearn.preprocessing import MinMaxScaler
3
+ from sklearn.cluster import KMeans
4
+ import numpy as np
5
+
6
+ def build_customer_profiles(df):
7
+ """
8
+ Group by customer_id and aggregate features for KYC.
9
+ """
10
+ profile_df = df.groupby('customer_id').agg(
11
+ total_transactions=('transaction_id', 'count'),
12
+ total_volume=('amount', 'sum'),
13
+ avg_transaction_amount=('amount', 'mean'),
14
+ max_transaction_amount=('amount', 'max'),
15
+ international_ratio=('is_international', 'mean'),
16
+ flagged_ratio=('is_flagged', 'mean'),
17
+ avg_risk_score=('risk_score', 'mean'),
18
+ unique_countries=('origin_country', 'nunique'),
19
+ structuring_attempts=('structuring_flag', 'sum')
20
+ ).reset_index()
21
+ return profile_df
22
+
23
+ def assign_kyc_tier(profile_df):
24
+ """
25
+ Assign clustering based tiers.
26
+ """
27
+ profile_df = profile_df.copy()
28
+
29
+ features = ['total_transactions', 'total_volume', 'avg_transaction_amount',
30
+ 'max_transaction_amount', 'international_ratio', 'flagged_ratio',
31
+ 'avg_risk_score', 'unique_countries', 'structuring_attempts']
32
+
33
+ X = profile_df[features].fillna(0)
34
+
35
+ # Normalize
36
+ scaler = MinMaxScaler()
37
+ X_scaled = scaler.fit_transform(X)
38
+
39
+ # KMeans
40
+ kmeans = KMeans(n_clusters=3, random_state=42, n_init=10)
41
+ clusters = kmeans.fit_predict(X_scaled)
42
+ profile_df['cluster'] = clusters
43
+
44
+ # Map cluster labels to Low/Medium/High
45
+ cluster_risk = profile_df.groupby('cluster')['avg_risk_score'].mean().sort_values()
46
+
47
+ tier_mapping = {
48
+ cluster_risk.index[0]: 'Low',
49
+ cluster_risk.index[1]: 'Medium',
50
+ cluster_risk.index[2]: 'High'
51
+ }
52
+
53
+ profile_df['kyc_tier'] = profile_df['cluster'].map(tier_mapping)
54
+
55
+ # Simple kyc_risk_score based on normalized avg_risk_score of the user
56
+ # to meet the "kyc_risk_score" float req
57
+ risk_scaler = MinMaxScaler(feature_range=(0, 100))
58
+ profile_df['kyc_risk_score'] = risk_scaler.fit_transform(
59
+ profile_df[['avg_risk_score']]
60
+ ).flatten()
61
+
62
+ profile_df = profile_df.drop(columns=['cluster'])
63
+ return profile_df
modules/visualizations.py ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import plotly.express as px
2
+ import plotly.graph_objects as go
3
+
4
+ # Theme settings
5
+ BG_COLOR = "#0f1117"
6
+ FONT_COLOR = "white"
7
+ COLOR_HIGH = "#e63946"
8
+ COLOR_MED = "#f4a261"
9
+ COLOR_LOW = "#2a9d8f"
10
+
11
+ COLOR_MAP = {
12
+ "High": COLOR_HIGH,
13
+ "Medium": COLOR_MED,
14
+ "Low": COLOR_LOW
15
+ }
16
+
17
+ def apply_theme(fig):
18
+ fig.update_layout(
19
+ paper_bgcolor=BG_COLOR,
20
+ plot_bgcolor=BG_COLOR,
21
+ font_color=FONT_COLOR,
22
+ margin=dict(l=40, r=40, t=40, b=40)
23
+ )
24
+ return fig
25
+
26
+ def risk_distribution_chart(df):
27
+ counts = df['risk_level'].value_counts().reset_index()
28
+ counts.columns = ['risk_level', 'count']
29
+ fig = px.pie(counts, values='count', names='risk_level', color='risk_level',
30
+ color_discrete_map=COLOR_MAP, hole=0.4)
31
+ fig.update_traces(textposition='inside', textinfo='percent+label')
32
+ return apply_theme(fig)
33
+
34
+ def flagged_transactions_timeline(df):
35
+ flagged_df = df[df['is_flagged'] == 1].copy()
36
+ if flagged_df.empty:
37
+ return px.line(title="No Flagged Transactions")
38
+
39
+ flagged_df['date'] = flagged_df['timestamp'].dt.date
40
+ daily_counts = flagged_df.groupby('date').size().reset_index(name='count')
41
+ fig = px.line(daily_counts, x='date', y='count', markers=True)
42
+ fig.update_traces(line_color=COLOR_HIGH)
43
+ return apply_theme(fig)
44
+
45
+ def amount_vs_risk_scatter(df):
46
+ # size needs to be positive
47
+ df['size'] = df['transaction_velocity'].clip(lower=1)
48
+ # create a rule string for hover
49
+ df['rule_str'] = df['rule_flags'].apply(lambda x: ", ".join(x) if isinstance(x, list) and x else "None")
50
+
51
+ fig = px.scatter(df, x='amount', y='risk_score', color='risk_level',
52
+ size='size', hover_data=['transaction_id', 'rule_str'],
53
+ color_discrete_map=COLOR_MAP, log_x=True)
54
+ return apply_theme(fig)
55
+
56
+ def transaction_type_breakdown(df):
57
+ grouped = df.groupby(['transaction_type', 'is_flagged']).size().reset_index(name='count')
58
+ grouped['Status'] = grouped['is_flagged'].map({1: 'Flagged', 0: 'Clean'})
59
+ fig = px.bar(grouped, x='transaction_type', y='count', color='Status', barmode='group',
60
+ color_discrete_map={'Flagged': COLOR_HIGH, 'Clean': COLOR_LOW})
61
+ return apply_theme(fig)
62
+
63
+ def top_flagged_customers_chart(df):
64
+ flagged = df[df['is_flagged'] == 1]
65
+ if flagged.empty:
66
+ return px.bar(title="No Flagged Customers")
67
+
68
+ cust_stats = flagged.groupby('customer_id').agg(
69
+ flagged_count=('transaction_id', 'count'),
70
+ avg_risk=('risk_score', 'mean')
71
+ ).reset_index().sort_values('flagged_count', ascending=False).head(10)
72
+
73
+ fig = px.bar(cust_stats, x='flagged_count', y='customer_id', orientation='h',
74
+ color='avg_risk', color_continuous_scale='Reds')
75
+ fig.update_layout(yaxis={'categoryorder':'total ascending'})
76
+ return apply_theme(fig)
77
+
78
+ def kyc_tier_distribution(profile_df):
79
+ counts = profile_df['kyc_tier'].value_counts().reset_index()
80
+ counts.columns = ['kyc_tier', 'count']
81
+ fig = px.pie(counts, values='count', names='kyc_tier', color='kyc_tier',
82
+ color_discrete_map=COLOR_MAP, hole=0.5)
83
+ return apply_theme(fig)
84
+
85
+ def rule_trigger_frequency(df):
86
+ all_rules = []
87
+ for rules in df['rule_flags']:
88
+ if isinstance(rules, list):
89
+ all_rules.extend(rules)
90
+
91
+ if not all_rules:
92
+ return px.bar(title="No Rules Triggered")
93
+
94
+ counts = pd.Series(all_rules).value_counts().reset_index()
95
+ counts.columns = ['Rule', 'Count']
96
+ fig = px.bar(counts, x='Count', y='Rule', orientation='h', color_discrete_sequence=[COLOR_MED])
97
+ fig.update_layout(yaxis={'categoryorder':'total ascending'})
98
+ return apply_theme(fig)
requirements.txt ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ streamlit>=1.32.0
2
+ pandas>=2.0.0
3
+ numpy>=1.24.0
4
+ scikit-learn>=1.3.0
5
+ plotly>=5.18.0
6
+ reportlab>=4.0.0
7
+ langchain>=0.2.0
8
+ langchain_bytez>=0.1.0
9
+ supabase>=2.0.0
10
+ python-dotenv>=1.0.0
11
+ fpdf2>=2.7.0
sample_data/sample_transactions.csv ADDED
@@ -0,0 +1,1001 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ transaction_id,customer_id,amount,timestamp,transaction_type,origin_country,dest_country,account_age_days
2
+ TXN_000001,CUST_0024,2275.3,2026-01-24 20:55:56.975837,CASH_OUT,US,US,1294
3
+ TXN_000125,CUST_0024,1333.33,2026-01-24 20:56:56.975837,TRANSFER,US,US,807
4
+ TXN_000199,CUST_0024,721.96,2026-01-24 20:57:56.975837,CASH_OUT,US,US,1379
5
+ TXN_000201,CUST_0024,371.65,2026-01-24 20:58:56.975837,PAYMENT,US,US,3174
6
+ TXN_000281,CUST_0024,4135.18,2026-01-24 20:59:56.975837,PAYMENT,US,US,132
7
+ TXN_000307,CUST_0024,4755.34,2026-01-24 21:00:56.975837,TRANSFER,NG,US,23
8
+ TXN_000002,CUST_0042,1465.58,2026-01-24 21:07:32.975837,TRANSFER,US,US,2127
9
+ TXN_000003,CUST_0025,4576.36,2026-01-24 21:48:01.975837,CASH_OUT,MX,US,2513
10
+ TXN_000004,CUST_0019,3500.51,2026-01-24 22:25:47.975837,CASH_OUT,US,US,310
11
+ TXN_000005,CUST_0029,946.02,2026-01-24 22:58:14.975837,CASH_OUT,DE,US,2913
12
+ TXN_000030,CUST_0029,3845.58,2026-01-24 22:59:14.975837,PAYMENT,GB,US,403
13
+ TXN_000066,CUST_0029,2688.05,2026-01-24 23:00:14.975837,PAYMENT,GB,US,2250
14
+ TXN_000088,CUST_0029,4250.95,2026-01-24 23:01:14.975837,CASH_OUT,NG,US,1551
15
+ TXN_000142,CUST_0029,3637.77,2026-01-24 23:02:14.975837,CASH_OUT,US,US,2918
16
+ TXN_000216,CUST_0029,1432.58,2026-01-24 23:03:14.975837,TRANSFER,US,GB,643
17
+ TXN_000006,CUST_0005,2794.99,2026-01-24 23:26:53.975837,CASH_OUT,US,US,2913
18
+ TXN_000007,CUST_0045,3224.73,2026-01-24 23:34:36.975837,DEBIT,US,US,830
19
+ TXN_000008,CUST_0009,1260.01,2026-01-25 00:14:25.975837,TRANSFER,US,US,1921
20
+ TXN_000009,CUST_0036,735.88,2026-01-25 00:35:25.975837,PAYMENT,US,US,2943
21
+ TXN_000010,CUST_0047,2445.46,2026-01-25 02:55:10.975837,TRANSFER,US,US,520
22
+ TXN_000011,CUST_0021,3247.46,2026-01-25 03:19:43.975837,TRANSFER,US,US,3603
23
+ TXN_000012,CUST_0050,2801.39,2026-01-25 04:01:51.975837,DEBIT,CN,US,3563
24
+ TXN_000013,CUST_0004,9444.18,2026-01-25 04:50:14.975837,PAYMENT,US,US,2912
25
+ TXN_000014,CUST_0015,1795.51,2026-01-25 05:34:26.975837,TRANSFER,GB,US,2608
26
+ TXN_000015,CUST_0036,1444.81,2026-01-25 07:18:45.975837,TRANSFER,US,US,2632
27
+ TXN_000016,CUST_0011,2999.86,2026-01-25 07:43:31.975837,TRANSFER,US,US,2485
28
+ TXN_000017,CUST_0022,4228.4,2026-01-25 08:17:10.975837,CASH_IN,US,US,2634
29
+ TXN_000018,CUST_0050,2926.18,2026-01-25 09:50:08.975837,TRANSFER,BR,US,131
30
+ TXN_000019,CUST_0032,4456.08,2026-01-25 10:44:58.975837,PAYMENT,US,US,1010
31
+ TXN_000020,CUST_0044,2089.85,2026-01-25 11:12:00.975837,CASH_OUT,US,US,1709
32
+ TXN_000036,CUST_0044,637.06,2026-01-25 11:13:00.975837,CASH_OUT,US,US,2451
33
+ TXN_000068,CUST_0044,1106.47,2026-01-25 11:14:00.975837,DEBIT,US,US,3319
34
+ TXN_000070,CUST_0044,4053.89,2026-01-25 11:15:00.975837,PAYMENT,US,NG,2375
35
+ TXN_000082,CUST_0044,4110.07,2026-01-25 11:16:00.975837,TRANSFER,NG,US,1134
36
+ TXN_000089,CUST_0044,41028.24,2026-01-25 11:17:00.975837,TRANSFER,NG,US,3568
37
+ TXN_000021,CUST_0031,2375.77,2026-01-25 12:23:28.975837,CASH_OUT,US,DE,3014
38
+ TXN_000022,CUST_0023,4879.33,2026-01-25 12:56:36.975837,DEBIT,US,US,1314
39
+ TXN_000023,CUST_0016,2385.72,2026-01-25 13:39:12.975837,TRANSFER,US,US,1195
40
+ TXN_000024,CUST_0025,4334.4,2026-01-25 16:32:57.975837,PAYMENT,CN,DE,784
41
+ TXN_000025,CUST_0049,880.78,2026-01-25 19:02:33.975837,DEBIT,US,MX,101
42
+ TXN_000026,CUST_0006,4731.64,2026-01-25 19:09:05.975837,TRANSFER,NG,US,206
43
+ TXN_000027,CUST_0004,9067.48,2026-01-25 19:12:56.975837,CASH_IN,MX,US,40
44
+ TXN_000028,CUST_0007,2211.55,2026-01-25 20:12:13.975837,CASH_OUT,BR,US,1647
45
+ TXN_000029,CUST_0004,2894.38,2026-01-25 20:37:46.975837,CASH_OUT,US,US,2072
46
+ TXN_000031,CUST_0026,1928.67,2026-01-26 00:01:49.975837,TRANSFER,US,US,597
47
+ TXN_000032,CUST_0013,3052.07,2026-01-26 00:55:01.975837,TRANSFER,US,US,2929
48
+ TXN_000033,CUST_0022,4039.43,2026-01-26 01:20:15.975837,CASH_IN,US,CN,1350
49
+ TXN_000034,CUST_0040,1660.8,2026-01-26 01:35:56.975837,DEBIT,US,DE,2084
50
+ TXN_000035,CUST_0033,2708.47,2026-01-26 02:22:37.975837,TRANSFER,US,DE,1363
51
+ TXN_000037,CUST_0031,1401.1,2026-01-26 03:22:33.975837,TRANSFER,NG,MX,705
52
+ TXN_000038,CUST_0034,3182.22,2026-01-26 03:52:39.975837,PAYMENT,CN,NG,136
53
+ TXN_000039,CUST_0037,4746.21,2026-01-26 04:02:08.975837,TRANSFER,US,US,627
54
+ TXN_000040,CUST_0027,3483.45,2026-01-26 04:36:59.975837,PAYMENT,MX,US,2897
55
+ TXN_000041,CUST_0009,2641.55,2026-01-26 05:53:50.975837,TRANSFER,MX,US,1292
56
+ TXN_000042,CUST_0012,2352.35,2026-01-26 06:05:41.975837,PAYMENT,US,US,3560
57
+ TXN_000043,CUST_0047,3435.65,2026-01-26 06:16:32.975837,PAYMENT,US,US,1016
58
+ TXN_000044,CUST_0018,2834.62,2026-01-26 07:10:32.975837,DEBIT,RU,NG,2834
59
+ TXN_000045,CUST_0046,2496.12,2026-01-26 08:36:43.975837,TRANSFER,US,RU,1185
60
+ TXN_000046,CUST_0008,2910.04,2026-01-26 09:03:29.975837,TRANSFER,BR,CN,1196
61
+ TXN_000047,CUST_0003,1509.39,2026-01-26 09:29:20.975837,PAYMENT,US,US,1057
62
+ TXN_000048,CUST_0048,127549.79,2026-01-26 09:51:32.975837,CASH_OUT,US,CN,569
63
+ TXN_000049,CUST_0007,3116.82,2026-01-26 10:29:15.975837,DEBIT,US,US,2182
64
+ TXN_000050,CUST_0015,3225.93,2026-01-26 14:26:06.975837,CASH_OUT,US,GB,2797
65
+ TXN_000051,CUST_0050,773.59,2026-01-26 15:12:52.975837,TRANSFER,CN,US,3614
66
+ TXN_000052,CUST_0031,2439.5,2026-01-26 17:01:56.975837,TRANSFER,DE,US,249
67
+ TXN_000053,CUST_0050,538.36,2026-01-26 17:34:36.975837,PAYMENT,US,US,724
68
+ TXN_000054,CUST_0027,4423.0,2026-01-26 18:45:42.975837,PAYMENT,BR,CN,3074
69
+ TXN_000055,CUST_0019,286141.12,2026-01-26 18:54:02.975837,CASH_OUT,US,RU,1868
70
+ TXN_000056,CUST_0042,2762.17,2026-01-26 18:56:25.975837,TRANSFER,MX,US,3319
71
+ TXN_000057,CUST_0008,1720.35,2026-01-26 19:19:57.975837,TRANSFER,US,US,3024
72
+ TXN_000058,CUST_0022,3974.76,2026-01-26 19:21:48.975837,CASH_OUT,CN,US,2623
73
+ TXN_000059,CUST_0026,4152.25,2026-01-26 20:18:30.975837,TRANSFER,US,US,763
74
+ TXN_000060,CUST_0009,2439.53,2026-01-26 21:11:36.975837,TRANSFER,US,US,1836
75
+ TXN_000061,CUST_0049,1408.27,2026-01-26 23:04:58.975837,TRANSFER,US,US,1078
76
+ TXN_000062,CUST_0042,23753.3,2026-01-26 23:49:27.975837,CASH_IN,US,US,14
77
+ TXN_000063,CUST_0026,3461.76,2026-01-27 00:10:24.975837,CASH_OUT,RU,US,2623
78
+ TXN_000064,CUST_0019,96952.91,2026-01-27 01:29:20.975837,CASH_OUT,US,DE,3069
79
+ TXN_000065,CUST_0039,1930.76,2026-01-27 01:50:55.975837,PAYMENT,NG,GB,2159
80
+ TXN_000115,CUST_0039,2043.84,2026-01-27 01:51:55.975837,DEBIT,US,US,1852
81
+ TXN_000187,CUST_0039,1496.11,2026-01-27 01:52:55.975837,TRANSFER,US,RU,848
82
+ TXN_000290,CUST_0039,1485.12,2026-01-27 01:53:55.975837,CASH_OUT,US,US,1139
83
+ TXN_000319,CUST_0039,1078.77,2026-01-27 01:54:55.975837,TRANSFER,US,US,2888
84
+ TXN_000350,CUST_0039,4425.21,2026-01-27 01:55:55.975837,CASH_OUT,US,NG,1127
85
+ TXN_000067,CUST_0033,1090.57,2026-01-27 03:21:14.975837,TRANSFER,US,MX,483
86
+ TXN_000069,CUST_0004,2321.82,2026-01-27 06:58:05.975837,TRANSFER,US,US,1900
87
+ TXN_000071,CUST_0005,321.92,2026-01-27 07:23:56.975837,PAYMENT,US,GB,1940
88
+ TXN_000072,CUST_0003,1506.74,2026-01-27 07:38:40.975837,TRANSFER,US,US,2994
89
+ TXN_000073,CUST_0042,4822.53,2026-01-27 08:19:03.975837,TRANSFER,MX,BR,1545
90
+ TXN_000074,CUST_0006,3445.38,2026-01-27 08:35:29.975837,TRANSFER,US,US,1431
91
+ TXN_000075,CUST_0008,974.52,2026-01-27 09:08:36.975837,TRANSFER,US,NG,3426
92
+ TXN_000076,CUST_0001,3805.28,2026-01-27 10:55:06.975837,TRANSFER,US,BR,2185
93
+ TXN_000077,CUST_0025,4134.47,2026-01-27 11:34:24.975837,CASH_IN,US,US,3591
94
+ TXN_000078,CUST_0047,331797.85,2026-01-27 11:36:42.975837,CASH_OUT,US,US,992
95
+ TXN_000079,CUST_0014,429.73,2026-01-27 11:59:12.975837,CASH_OUT,US,US,3579
96
+ TXN_000080,CUST_0004,222286.59,2026-01-27 13:37:54.975837,CASH_OUT,US,US,580
97
+ TXN_000081,CUST_0033,4968.07,2026-01-27 14:43:44.975837,CASH_OUT,DE,US,3171
98
+ TXN_000083,CUST_0004,2827.92,2026-01-27 15:56:49.975837,CASH_OUT,CN,US,1756
99
+ TXN_000084,CUST_0036,2528.54,2026-01-27 16:35:50.975837,CASH_OUT,BR,DE,2859
100
+ TXN_000085,CUST_0027,2100.47,2026-01-27 16:46:28.975837,CASH_OUT,US,US,994
101
+ TXN_000086,CUST_0015,1573.61,2026-01-27 17:03:08.975837,PAYMENT,US,US,1713
102
+ TXN_000087,CUST_0036,2696.96,2026-01-27 17:56:34.975837,TRANSFER,US,US,330
103
+ TXN_000090,CUST_0022,1585.62,2026-01-27 19:28:48.975837,DEBIT,US,US,3044
104
+ TXN_000091,CUST_0008,3759.71,2026-01-27 21:00:15.975837,CASH_OUT,NG,US,987
105
+ TXN_000092,CUST_0036,1675.91,2026-01-27 22:28:28.975837,TRANSFER,US,US,1270
106
+ TXN_000093,CUST_0017,1862.26,2026-01-27 23:03:18.975837,PAYMENT,US,MX,3126
107
+ TXN_000094,CUST_0021,4580.22,2026-01-27 23:17:29.975837,DEBIT,US,US,913
108
+ TXN_000095,CUST_0048,815.02,2026-01-28 00:35:24.975837,TRANSFER,BR,US,810
109
+ TXN_000096,CUST_0022,1227.09,2026-01-28 01:34:29.975837,TRANSFER,US,US,2812
110
+ TXN_000097,CUST_0022,1360.9,2026-01-28 02:59:11.975837,PAYMENT,MX,US,3008
111
+ TXN_000098,CUST_0023,929.4,2026-01-28 03:38:22.975837,CASH_OUT,US,US,2153
112
+ TXN_000099,CUST_0003,4211.44,2026-01-28 04:17:33.975837,TRANSFER,US,BR,570
113
+ TXN_000100,CUST_0041,1234.02,2026-01-28 04:24:20.975837,PAYMENT,US,US,1535
114
+ TXN_000101,CUST_0004,3127.39,2026-01-28 04:36:25.975837,TRANSFER,US,US,2005
115
+ TXN_000102,CUST_0002,132.4,2026-01-28 04:47:59.975837,CASH_OUT,US,US,1132
116
+ TXN_000103,CUST_0035,407512.82,2026-01-28 05:05:52.975837,CASH_OUT,US,CN,445
117
+ TXN_000104,CUST_0007,2669.49,2026-01-28 05:20:25.975837,PAYMENT,US,US,1458
118
+ TXN_000105,CUST_0018,3995.19,2026-01-28 05:29:49.975837,TRANSFER,MX,US,2862
119
+ TXN_000106,CUST_0015,9723.9,2026-01-28 05:47:38.975837,DEBIT,US,US,389
120
+ TXN_000107,CUST_0026,1958.39,2026-01-28 05:59:05.975837,CASH_IN,US,US,708
121
+ TXN_000108,CUST_0006,2549.31,2026-01-28 07:00:51.975837,TRANSFER,GB,US,948
122
+ TXN_000109,CUST_0014,4516.24,2026-01-28 07:10:20.975837,TRANSFER,US,US,311
123
+ TXN_000110,CUST_0044,4635.37,2026-01-28 07:23:23.975837,TRANSFER,US,US,3490
124
+ TXN_000111,CUST_0021,9420.59,2026-01-28 07:38:57.975837,PAYMENT,US,BR,322
125
+ TXN_000112,CUST_0020,896.01,2026-01-28 07:39:28.975837,TRANSFER,BR,US,2221
126
+ TXN_000113,CUST_0022,1980.85,2026-01-28 08:58:41.975837,TRANSFER,GB,US,1423
127
+ TXN_000114,CUST_0004,578.66,2026-01-28 09:18:37.975837,TRANSFER,US,US,2521
128
+ TXN_000116,CUST_0032,1217.88,2026-01-28 10:46:17.975837,CASH_OUT,US,US,2406
129
+ TXN_000117,CUST_0043,1962.36,2026-01-28 11:54:58.975837,CASH_OUT,US,US,308
130
+ TXN_000118,CUST_0006,1413.06,2026-01-28 12:07:29.975837,TRANSFER,CN,DE,1484
131
+ TXN_000119,CUST_0007,548.45,2026-01-28 12:17:21.975837,CASH_OUT,US,GB,549
132
+ TXN_000120,CUST_0006,1018.22,2026-01-28 13:00:06.975837,PAYMENT,US,US,114
133
+ TXN_000121,CUST_0006,1834.18,2026-01-28 14:44:02.975837,DEBIT,US,US,1584
134
+ TXN_000122,CUST_0001,1530.05,2026-01-28 16:13:05.975837,CASH_OUT,US,NG,2349
135
+ TXN_000123,CUST_0034,930.96,2026-01-28 16:16:05.975837,PAYMENT,US,US,2026
136
+ TXN_000124,CUST_0010,410.01,2026-01-28 17:25:25.975837,TRANSFER,US,US,322
137
+ TXN_000184,CUST_0010,4607.48,2026-01-28 17:26:25.975837,PAYMENT,US,US,418
138
+ TXN_000194,CUST_0010,1459.59,2026-01-28 17:27:25.975837,CASH_OUT,US,US,3316
139
+ TXN_000195,CUST_0010,2728.31,2026-01-28 17:28:25.975837,PAYMENT,US,GB,1277
140
+ TXN_000228,CUST_0010,269.78,2026-01-28 17:29:25.975837,TRANSFER,US,US,1694
141
+ TXN_000266,CUST_0010,689.38,2026-01-28 17:30:25.975837,TRANSFER,US,NG,3318
142
+ TXN_000126,CUST_0030,624.16,2026-01-28 18:10:51.975837,PAYMENT,DE,BR,3300
143
+ TXN_000127,CUST_0022,2257.09,2026-01-28 18:20:21.975837,CASH_OUT,CN,US,2477
144
+ TXN_000128,CUST_0045,1084.17,2026-01-28 19:02:58.975837,PAYMENT,DE,US,2853
145
+ TXN_000129,CUST_0041,2505.94,2026-01-28 19:53:13.975837,TRANSFER,US,US,3351
146
+ TXN_000130,CUST_0026,1888.58,2026-01-28 19:58:37.975837,CASH_OUT,US,CN,2799
147
+ TXN_000131,CUST_0050,2795.49,2026-01-28 22:15:55.975837,CASH_OUT,US,MX,3274
148
+ TXN_000132,CUST_0019,4173.28,2026-01-28 23:15:12.975837,TRANSFER,BR,US,577
149
+ TXN_000133,CUST_0041,1583.88,2026-01-28 23:42:08.975837,CASH_OUT,US,US,1551
150
+ TXN_000134,CUST_0005,2300.43,2026-01-29 00:12:20.975837,TRANSFER,US,US,3569
151
+ TXN_000135,CUST_0045,84290.69,2026-01-29 00:15:10.975837,CASH_OUT,US,NG,1023
152
+ TXN_000136,CUST_0043,3357.0,2026-01-29 01:25:44.975837,DEBIT,US,US,2649
153
+ TXN_000137,CUST_0044,3269.04,2026-01-29 01:45:01.975837,PAYMENT,US,GB,50
154
+ TXN_000138,CUST_0007,1367.82,2026-01-29 03:03:23.975837,PAYMENT,US,US,2363
155
+ TXN_000139,CUST_0015,2284.31,2026-01-29 06:22:35.975837,TRANSFER,CN,US,107
156
+ TXN_000140,CUST_0031,612.29,2026-01-29 06:45:52.975837,CASH_OUT,GB,CN,1433
157
+ TXN_000141,CUST_0020,1781.03,2026-01-29 06:51:46.975837,DEBIT,US,US,406
158
+ TXN_000143,CUST_0008,210.67,2026-01-29 08:30:58.975837,TRANSFER,US,NG,2120
159
+ TXN_000144,CUST_0012,2804.36,2026-01-29 08:52:28.975837,CASH_OUT,US,US,3274
160
+ TXN_000145,CUST_0026,125437.61,2026-01-29 09:03:21.975837,CASH_OUT,US,NG,3027
161
+ TXN_000146,CUST_0040,4427.18,2026-01-29 09:07:06.975837,CASH_OUT,US,US,886
162
+ TXN_000147,CUST_0014,1463.89,2026-01-29 09:15:48.975837,TRANSFER,GB,CN,1505
163
+ TXN_000148,CUST_0021,1065.66,2026-01-29 09:37:20.975837,TRANSFER,US,US,2624
164
+ TXN_000149,CUST_0021,3025.16,2026-01-29 10:21:25.975837,TRANSFER,US,US,3470
165
+ TXN_000150,CUST_0030,3125.08,2026-01-29 13:08:31.975837,TRANSFER,RU,GB,2759
166
+ TXN_000151,CUST_0009,1634.61,2026-01-29 13:23:31.975837,TRANSFER,US,US,586
167
+ TXN_000152,CUST_0033,2003.47,2026-01-29 14:31:52.975837,TRANSFER,US,US,2000
168
+ TXN_000153,CUST_0041,2733.16,2026-01-29 15:07:28.975837,CASH_OUT,CN,US,2012
169
+ TXN_000154,CUST_0019,787.45,2026-01-29 16:04:29.975837,CASH_OUT,US,US,1477
170
+ TXN_000155,CUST_0001,2474.58,2026-01-29 16:56:45.975837,TRANSFER,US,US,2681
171
+ TXN_000156,CUST_0032,2104.76,2026-01-29 17:34:51.975837,CASH_IN,MX,US,345
172
+ TXN_000157,CUST_0037,44348.23,2026-01-29 18:08:04.975837,TRANSFER,US,US,18
173
+ TXN_000158,CUST_0019,924.22,2026-01-29 19:10:59.975837,TRANSFER,MX,US,470
174
+ TXN_000159,CUST_0037,659.61,2026-01-29 19:32:34.975837,CASH_OUT,DE,US,3106
175
+ TXN_000160,CUST_0003,3824.02,2026-01-29 19:52:29.975837,TRANSFER,US,US,3021
176
+ TXN_000161,CUST_0042,3781.59,2026-01-29 19:58:57.975837,TRANSFER,MX,US,3538
177
+ TXN_000162,CUST_0006,2251.44,2026-01-29 20:13:21.975837,TRANSFER,NG,US,3028
178
+ TXN_000163,CUST_0038,3476.75,2026-01-29 21:08:47.975837,CASH_OUT,US,US,2530
179
+ TXN_000164,CUST_0009,3945.76,2026-01-29 22:19:37.975837,TRANSFER,DE,US,2451
180
+ TXN_000165,CUST_0035,925.05,2026-01-29 23:25:16.975837,TRANSFER,US,US,3521
181
+ TXN_000166,CUST_0033,4928.89,2026-01-30 00:26:13.975837,PAYMENT,US,BR,249
182
+ TXN_000167,CUST_0018,4348.53,2026-01-30 00:38:33.975837,CASH_OUT,NG,US,1326
183
+ TXN_000168,CUST_0016,3831.22,2026-01-30 01:09:55.975837,TRANSFER,US,US,1107
184
+ TXN_000169,CUST_0041,2129.7,2026-01-30 02:23:59.975837,DEBIT,US,GB,1657
185
+ TXN_000170,CUST_0033,3774.03,2026-01-30 02:24:13.975837,TRANSFER,MX,DE,2390
186
+ TXN_000171,CUST_0001,4357.65,2026-01-30 02:45:27.975837,TRANSFER,US,DE,3489
187
+ TXN_000172,CUST_0005,3998.82,2026-01-30 03:46:01.975837,TRANSFER,NG,US,1329
188
+ TXN_000173,CUST_0019,1755.0,2026-01-30 04:12:35.975837,CASH_OUT,US,US,1414
189
+ TXN_000174,CUST_0044,314958.86,2026-01-30 06:10:10.975837,DEBIT,US,US,3519
190
+ TXN_000175,CUST_0011,479225.73,2026-01-30 06:25:37.975837,CASH_OUT,US,US,547
191
+ TXN_000176,CUST_0042,1579.14,2026-01-30 06:47:41.975837,CASH_IN,GB,US,1032
192
+ TXN_000177,CUST_0006,1922.03,2026-01-30 06:48:07.975837,PAYMENT,US,US,1258
193
+ TXN_000178,CUST_0047,3527.26,2026-01-30 08:39:04.975837,TRANSFER,US,US,881
194
+ TXN_000179,CUST_0031,481.9,2026-01-30 09:22:50.975837,TRANSFER,US,US,40
195
+ TXN_000180,CUST_0045,1783.51,2026-01-30 09:43:58.975837,CASH_IN,CN,US,944
196
+ TXN_000181,CUST_0025,537.72,2026-01-30 09:53:59.975837,CASH_OUT,US,US,1232
197
+ TXN_000182,CUST_0009,1975.33,2026-01-30 09:55:18.975837,TRANSFER,CN,US,2314
198
+ TXN_000183,CUST_0001,3090.56,2026-01-30 10:11:00.975837,CASH_OUT,US,US,3071
199
+ TXN_000185,CUST_0009,3786.98,2026-01-30 10:56:36.975837,PAYMENT,US,DE,3247
200
+ TXN_000186,CUST_0009,1314.15,2026-01-30 11:11:47.975837,PAYMENT,US,US,2960
201
+ TXN_000188,CUST_0034,3073.94,2026-01-30 13:19:02.975837,DEBIT,US,US,3217
202
+ TXN_000189,CUST_0016,2524.95,2026-01-30 14:27:55.975837,PAYMENT,US,US,2170
203
+ TXN_000190,CUST_0001,4935.72,2026-01-30 15:45:02.975837,CASH_OUT,US,BR,1503
204
+ TXN_000191,CUST_0035,3446.42,2026-01-30 16:08:14.975837,TRANSFER,GB,US,283
205
+ TXN_000192,CUST_0001,34932.09,2026-01-30 17:02:01.975837,TRANSFER,RU,US,2059
206
+ TXN_000193,CUST_0050,2135.62,2026-01-30 17:26:22.975837,PAYMENT,US,US,2530
207
+ TXN_000196,CUST_0045,2243.68,2026-01-30 17:55:51.975837,CASH_IN,US,US,1786
208
+ TXN_000197,CUST_0008,2321.52,2026-01-30 21:20:31.975837,CASH_OUT,US,CN,496
209
+ TXN_000198,CUST_0001,9256.03,2026-01-30 21:39:30.975837,CASH_OUT,US,RU,690
210
+ TXN_000200,CUST_0028,1432.7,2026-01-30 22:58:51.975837,CASH_OUT,GB,US,2099
211
+ TXN_000202,CUST_0007,4481.92,2026-01-30 23:35:08.975837,CASH_OUT,US,US,187
212
+ TXN_000203,CUST_0001,1298.3,2026-01-30 23:56:21.975837,CASH_OUT,US,US,3519
213
+ TXN_000204,CUST_0003,2809.04,2026-01-31 00:45:37.975837,PAYMENT,BR,US,1023
214
+ TXN_000205,CUST_0027,4587.69,2026-01-31 00:56:39.975837,TRANSFER,DE,US,2764
215
+ TXN_000206,CUST_0004,978.79,2026-01-31 01:09:23.975837,TRANSFER,BR,US,1912
216
+ TXN_000207,CUST_0019,3890.28,2026-01-31 02:02:46.975837,TRANSFER,US,US,1518
217
+ TXN_000208,CUST_0013,1528.82,2026-01-31 04:52:31.975837,CASH_OUT,NG,US,2430
218
+ TXN_000209,CUST_0032,4989.16,2026-01-31 04:56:37.975837,TRANSFER,NG,US,1686
219
+ TXN_000210,CUST_0002,1241.69,2026-01-31 05:06:03.975837,TRANSFER,US,US,3115
220
+ TXN_000211,CUST_0043,1943.75,2026-01-31 06:36:50.975837,DEBIT,US,US,982
221
+ TXN_000212,CUST_0027,2510.94,2026-01-31 06:46:57.975837,PAYMENT,RU,US,955
222
+ TXN_000213,CUST_0034,2123.98,2026-01-31 07:48:38.975837,TRANSFER,US,GB,2077
223
+ TXN_000214,CUST_0009,3222.36,2026-01-31 08:55:11.975837,TRANSFER,US,US,2720
224
+ TXN_000215,CUST_0009,1260.18,2026-01-31 10:33:38.975837,PAYMENT,US,DE,1309
225
+ TXN_000217,CUST_0007,905.44,2026-01-31 13:37:39.975837,CASH_OUT,US,US,3162
226
+ TXN_000218,CUST_0014,2314.39,2026-01-31 13:40:36.975837,TRANSFER,GB,US,2817
227
+ TXN_000219,CUST_0020,4149.29,2026-01-31 15:01:58.975837,CASH_IN,US,DE,614
228
+ TXN_000220,CUST_0006,3584.67,2026-01-31 15:08:26.975837,TRANSFER,US,US,1231
229
+ TXN_000221,CUST_0017,4118.44,2026-01-31 15:47:01.975837,PAYMENT,MX,US,2260
230
+ TXN_000222,CUST_0016,564.15,2026-01-31 18:10:36.975837,TRANSFER,GB,US,3408
231
+ TXN_000223,CUST_0050,4914.58,2026-01-31 18:55:00.975837,CASH_OUT,DE,US,2647
232
+ TXN_000224,CUST_0006,2953.39,2026-01-31 20:58:46.975837,CASH_IN,US,NG,2652
233
+ TXN_000225,CUST_0029,4065.56,2026-02-01 00:08:21.975837,PAYMENT,DE,US,1895
234
+ TXN_000226,CUST_0004,923.15,2026-02-01 00:23:33.975837,TRANSFER,BR,US,1574
235
+ TXN_000227,CUST_0044,2190.65,2026-02-01 01:00:04.975837,CASH_OUT,RU,US,3625
236
+ TXN_000229,CUST_0036,2447.25,2026-02-01 02:02:40.975837,PAYMENT,US,US,2639
237
+ TXN_000230,CUST_0034,1320.82,2026-02-01 02:07:12.975837,PAYMENT,US,US,1573
238
+ TXN_000231,CUST_0046,1859.65,2026-02-01 02:17:14.975837,PAYMENT,US,DE,1597
239
+ TXN_000232,CUST_0018,981.1,2026-02-01 04:11:23.975837,TRANSFER,US,RU,246
240
+ TXN_000233,CUST_0031,2694.22,2026-02-01 05:14:03.975837,TRANSFER,CN,US,2697
241
+ TXN_000234,CUST_0016,1405.98,2026-02-01 05:59:51.975837,DEBIT,US,NG,2365
242
+ TXN_000235,CUST_0025,1838.54,2026-02-01 06:29:25.975837,PAYMENT,CN,US,1309
243
+ TXN_000236,CUST_0048,3518.37,2026-02-01 06:31:48.975837,PAYMENT,US,CN,2313
244
+ TXN_000237,CUST_0013,4199.81,2026-02-01 06:31:56.975837,TRANSFER,RU,US,162
245
+ TXN_000238,CUST_0006,375.22,2026-02-01 06:42:25.975837,TRANSFER,US,US,1365
246
+ TXN_000239,CUST_0040,1087.18,2026-02-01 07:50:55.975837,TRANSFER,DE,US,612
247
+ TXN_000240,CUST_0038,3553.01,2026-02-01 08:31:37.975837,TRANSFER,US,US,1501
248
+ TXN_000241,CUST_0005,1930.59,2026-02-01 08:48:38.975837,CASH_OUT,US,US,1243
249
+ TXN_000242,CUST_0021,768.61,2026-02-01 09:34:09.975837,CASH_OUT,MX,US,720
250
+ TXN_000243,CUST_0046,4846.84,2026-02-01 09:36:22.975837,CASH_OUT,DE,US,2419
251
+ TXN_000244,CUST_0012,1954.08,2026-02-01 10:49:59.975837,CASH_IN,US,US,14
252
+ TXN_000245,CUST_0045,4748.62,2026-02-01 11:26:39.975837,CASH_OUT,US,US,1310
253
+ TXN_000246,CUST_0040,1182.39,2026-02-01 11:52:54.975837,CASH_OUT,CN,US,325
254
+ TXN_000247,CUST_0016,1799.37,2026-02-01 12:14:52.975837,PAYMENT,US,DE,1836
255
+ TXN_000248,CUST_0001,1399.54,2026-02-01 12:43:35.975837,TRANSFER,US,US,449
256
+ TXN_000249,CUST_0047,106.28,2026-02-01 12:59:00.975837,TRANSFER,CN,MX,3618
257
+ TXN_000250,CUST_0025,1821.03,2026-02-01 13:53:30.975837,TRANSFER,NG,US,308
258
+ TXN_000251,CUST_0003,1545.05,2026-02-01 13:56:18.975837,TRANSFER,GB,US,3643
259
+ TXN_000252,CUST_0025,888.43,2026-02-01 14:28:33.975837,TRANSFER,GB,US,2520
260
+ TXN_000253,CUST_0031,35622.55,2026-02-01 14:51:07.975837,TRANSFER,US,US,7
261
+ TXN_000254,CUST_0011,93585.38,2026-02-01 15:50:02.975837,CASH_OUT,US,BR,2964
262
+ TXN_000255,CUST_0047,2746.61,2026-02-01 16:40:39.975837,CASH_OUT,US,US,1616
263
+ TXN_000256,CUST_0037,2793.35,2026-02-01 16:42:57.975837,TRANSFER,US,US,365
264
+ TXN_000257,CUST_0019,4137.1,2026-02-01 17:47:15.975837,TRANSFER,US,US,854
265
+ TXN_000258,CUST_0011,3227.13,2026-02-01 17:57:54.975837,CASH_OUT,US,US,3221
266
+ TXN_000259,CUST_0026,2407.63,2026-02-01 18:50:13.975837,PAYMENT,US,US,1594
267
+ TXN_000260,CUST_0012,1918.0,2026-02-01 19:15:37.975837,PAYMENT,US,US,1808
268
+ TXN_000261,CUST_0030,1390.66,2026-02-01 20:16:32.975837,CASH_OUT,US,US,2859
269
+ TXN_000262,CUST_0043,573.84,2026-02-01 20:45:01.975837,TRANSFER,BR,NG,2274
270
+ TXN_000263,CUST_0004,4219.91,2026-02-01 20:50:46.975837,TRANSFER,US,US,3557
271
+ TXN_000264,CUST_0031,2906.3,2026-02-01 21:46:24.975837,CASH_OUT,US,US,3504
272
+ TXN_000265,CUST_0046,270.17,2026-02-01 22:13:33.975837,CASH_IN,US,US,2547
273
+ TXN_000267,CUST_0013,718.31,2026-02-02 02:09:51.975837,CASH_OUT,BR,US,3376
274
+ TXN_000268,CUST_0041,824.6,2026-02-02 03:51:01.975837,TRANSFER,US,GB,363
275
+ TXN_000269,CUST_0025,2826.18,2026-02-02 06:58:00.975837,DEBIT,MX,US,3228
276
+ TXN_000270,CUST_0045,3152.98,2026-02-02 07:12:57.975837,CASH_OUT,US,US,614
277
+ TXN_000271,CUST_0037,2980.88,2026-02-02 08:34:17.975837,PAYMENT,GB,US,420
278
+ TXN_000272,CUST_0019,4350.63,2026-02-02 09:22:56.975837,CASH_OUT,RU,US,1995
279
+ TXN_000273,CUST_0037,141330.0,2026-02-02 09:40:25.975837,TRANSFER,US,US,2848
280
+ TXN_000274,CUST_0026,290.03,2026-02-02 10:44:25.975837,TRANSFER,US,US,3061
281
+ TXN_000275,CUST_0031,4612.09,2026-02-02 12:30:21.975837,DEBIT,US,RU,1280
282
+ TXN_000276,CUST_0018,4229.95,2026-02-02 12:36:14.975837,TRANSFER,US,NG,557
283
+ TXN_000277,CUST_0020,4873.68,2026-02-02 13:25:47.975837,CASH_OUT,RU,GB,776
284
+ TXN_000278,CUST_0029,1135.81,2026-02-02 13:31:26.975837,TRANSFER,DE,CN,275
285
+ TXN_000279,CUST_0020,3576.89,2026-02-02 15:54:34.975837,DEBIT,US,US,3591
286
+ TXN_000280,CUST_0013,4201.19,2026-02-02 16:11:20.975837,PAYMENT,US,NG,1129
287
+ TXN_000282,CUST_0016,1925.09,2026-02-02 18:14:18.975837,CASH_OUT,US,DE,1417
288
+ TXN_000283,CUST_0011,4204.5,2026-02-02 19:15:31.975837,TRANSFER,GB,US,1590
289
+ TXN_000284,CUST_0004,898.25,2026-02-02 20:10:28.975837,CASH_OUT,NG,US,2782
290
+ TXN_000285,CUST_0014,1418.51,2026-02-02 20:57:40.975837,CASH_OUT,US,US,1948
291
+ TXN_000286,CUST_0009,3272.12,2026-02-02 23:00:32.975837,DEBIT,US,US,3304
292
+ TXN_000287,CUST_0020,3592.43,2026-02-03 01:42:23.975837,TRANSFER,US,DE,1887
293
+ TXN_000288,CUST_0017,1169.22,2026-02-03 01:55:02.975837,DEBIT,US,US,2401
294
+ TXN_000289,CUST_0007,136.0,2026-02-03 02:04:07.975837,CASH_OUT,DE,US,2439
295
+ TXN_000291,CUST_0041,1693.17,2026-02-03 02:32:11.975837,TRANSFER,US,RU,778
296
+ TXN_000292,CUST_0010,2634.74,2026-02-03 03:03:22.975837,TRANSFER,US,BR,2712
297
+ TXN_000293,CUST_0021,3435.7,2026-02-03 03:37:15.975837,PAYMENT,US,RU,1721
298
+ TXN_000294,CUST_0026,355494.13,2026-02-03 03:40:41.975837,PAYMENT,US,US,2982
299
+ TXN_000295,CUST_0046,1189.58,2026-02-03 03:58:09.975837,CASH_OUT,DE,US,3469
300
+ TXN_000296,CUST_0011,4219.13,2026-02-03 04:29:30.975837,CASH_OUT,US,US,531
301
+ TXN_000297,CUST_0048,1367.39,2026-02-03 04:50:11.975837,TRANSFER,CN,DE,2687
302
+ TXN_000298,CUST_0006,1189.04,2026-02-03 05:28:19.975837,TRANSFER,BR,DE,1529
303
+ TXN_000299,CUST_0017,2969.3,2026-02-03 06:37:22.975837,PAYMENT,US,US,2605
304
+ TXN_000300,CUST_0038,2943.53,2026-02-03 06:59:34.975837,TRANSFER,US,US,497
305
+ TXN_000301,CUST_0044,1970.18,2026-02-03 10:01:19.975837,TRANSFER,US,CN,827
306
+ TXN_000302,CUST_0022,2105.04,2026-02-03 10:56:07.975837,TRANSFER,MX,US,3539
307
+ TXN_000303,CUST_0046,983.75,2026-02-03 11:31:49.975837,PAYMENT,US,DE,2605
308
+ TXN_000304,CUST_0004,123.1,2026-02-03 12:07:19.975837,DEBIT,CN,US,655
309
+ TXN_000305,CUST_0032,3947.53,2026-02-03 12:12:27.975837,CASH_IN,US,US,1765
310
+ TXN_000306,CUST_0026,2202.22,2026-02-03 12:27:45.975837,CASH_OUT,US,US,2999
311
+ TXN_000308,CUST_0041,3694.66,2026-02-03 12:58:43.975837,CASH_OUT,RU,US,1578
312
+ TXN_000309,CUST_0033,2984.49,2026-02-03 14:49:02.975837,TRANSFER,RU,MX,2988
313
+ TXN_000310,CUST_0034,3022.21,2026-02-03 17:37:19.975837,PAYMENT,CN,US,2014
314
+ TXN_000311,CUST_0023,3775.57,2026-02-03 17:40:03.975837,PAYMENT,BR,US,925
315
+ TXN_000312,CUST_0047,4925.91,2026-02-03 18:26:19.975837,TRANSFER,US,US,511
316
+ TXN_000313,CUST_0024,3584.44,2026-02-03 21:26:20.975837,CASH_OUT,US,US,3166
317
+ TXN_000314,CUST_0035,3153.36,2026-02-03 22:32:59.975837,CASH_OUT,US,US,3431
318
+ TXN_000315,CUST_0002,336.35,2026-02-04 00:33:10.975837,CASH_OUT,US,US,1042
319
+ TXN_000316,CUST_0031,3539.15,2026-02-04 01:12:58.975837,TRANSFER,US,US,1730
320
+ TXN_000317,CUST_0043,594.8,2026-02-04 01:20:24.975837,TRANSFER,US,BR,3409
321
+ TXN_000318,CUST_0007,2606.77,2026-02-04 01:51:38.975837,PAYMENT,US,MX,820
322
+ TXN_000320,CUST_0027,250695.58,2026-02-04 02:19:17.975837,TRANSFER,US,DE,967
323
+ TXN_000321,CUST_0001,162.47,2026-02-04 03:03:41.975837,TRANSFER,US,US,2030
324
+ TXN_000322,CUST_0010,4752.29,2026-02-04 03:13:20.975837,TRANSFER,US,RU,2646
325
+ TXN_000323,CUST_0015,2338.08,2026-02-04 03:35:49.975837,TRANSFER,US,US,3337
326
+ TXN_000324,CUST_0012,4383.29,2026-02-04 04:11:14.975837,CASH_OUT,US,US,1751
327
+ TXN_000325,CUST_0048,147027.14,2026-02-04 04:48:07.975837,CASH_OUT,US,DE,1353
328
+ TXN_000326,CUST_0023,4483.19,2026-02-04 05:26:22.975837,PAYMENT,US,DE,3345
329
+ TXN_000327,CUST_0022,996.06,2026-02-04 05:29:35.975837,PAYMENT,RU,MX,3283
330
+ TXN_000328,CUST_0027,3279.35,2026-02-04 05:43:57.975837,TRANSFER,US,US,247
331
+ TXN_000329,CUST_0011,608.19,2026-02-04 06:03:48.975837,CASH_OUT,US,US,1801
332
+ TXN_000330,CUST_0012,3095.48,2026-02-04 07:19:05.975837,TRANSFER,US,CN,1985
333
+ TXN_000331,CUST_0032,653.39,2026-02-04 08:33:56.975837,TRANSFER,US,US,1294
334
+ TXN_000332,CUST_0001,3552.38,2026-02-04 10:05:57.975837,TRANSFER,NG,DE,2133
335
+ TXN_000333,CUST_0034,3472.38,2026-02-04 10:24:23.975837,CASH_OUT,US,MX,1423
336
+ TXN_000334,CUST_0043,3413.85,2026-02-04 11:11:28.975837,TRANSFER,US,US,649
337
+ TXN_000335,CUST_0033,4259.34,2026-02-04 11:25:40.975837,CASH_OUT,GB,DE,993
338
+ TXN_000336,CUST_0022,4853.71,2026-02-04 11:59:11.975837,PAYMENT,US,US,1658
339
+ TXN_000337,CUST_0016,9572.64,2026-02-04 12:06:15.975837,CASH_OUT,US,US,2048
340
+ TXN_000338,CUST_0029,1648.7,2026-02-04 12:19:46.975837,DEBIT,US,US,1695
341
+ TXN_000339,CUST_0003,49993.3,2026-02-04 13:01:52.975837,PAYMENT,US,US,1254
342
+ TXN_000340,CUST_0033,2855.43,2026-02-04 13:17:28.975837,TRANSFER,US,US,3387
343
+ TXN_000341,CUST_0004,4101.28,2026-02-04 13:24:20.975837,TRANSFER,US,MX,2942
344
+ TXN_000342,CUST_0043,1880.14,2026-02-04 14:38:16.975837,TRANSFER,US,US,15
345
+ TXN_000343,CUST_0022,1840.18,2026-02-04 15:36:48.975837,TRANSFER,DE,US,679
346
+ TXN_000344,CUST_0032,788.2,2026-02-04 16:11:03.975837,TRANSFER,GB,US,809
347
+ TXN_000345,CUST_0013,691.65,2026-02-04 16:31:07.975837,CASH_OUT,US,NG,2942
348
+ TXN_000346,CUST_0022,628.05,2026-02-04 17:41:49.975837,PAYMENT,GB,MX,1880
349
+ TXN_000347,CUST_0043,2987.65,2026-02-04 18:11:05.975837,TRANSFER,US,US,205
350
+ TXN_000348,CUST_0036,4683.01,2026-02-04 18:15:02.975837,DEBIT,US,US,732
351
+ TXN_000349,CUST_0045,2934.92,2026-02-04 18:15:16.975837,TRANSFER,US,US,2466
352
+ TXN_000351,CUST_0026,4821.61,2026-02-04 19:24:14.975837,TRANSFER,US,US,1697
353
+ TXN_000352,CUST_0039,3530.07,2026-02-04 21:29:47.975837,TRANSFER,US,DE,2922
354
+ TXN_000353,CUST_0048,4684.01,2026-02-04 21:37:38.975837,PAYMENT,US,US,1197
355
+ TXN_000354,CUST_0044,1791.94,2026-02-04 21:58:48.975837,PAYMENT,CN,US,2850
356
+ TXN_000355,CUST_0041,10000.0,2026-02-04 23:10:32.975837,CASH_OUT,US,US,2344
357
+ TXN_000356,CUST_0043,3579.61,2026-02-04 23:11:45.975837,DEBIT,RU,BR,3317
358
+ TXN_000357,CUST_0001,76936.72,2026-02-04 23:19:11.975837,TRANSFER,US,US,3079
359
+ TXN_000358,CUST_0011,4919.31,2026-02-05 00:33:45.975837,DEBIT,US,US,3219
360
+ TXN_000359,CUST_0019,1099.6,2026-02-05 01:03:20.975837,TRANSFER,US,US,2530
361
+ TXN_000360,CUST_0044,3723.51,2026-02-05 01:53:54.975837,DEBIT,BR,US,3219
362
+ TXN_000361,CUST_0045,1509.43,2026-02-05 02:08:55.975837,TRANSFER,BR,US,3235
363
+ TXN_000362,CUST_0044,1632.0,2026-02-05 03:31:44.975837,CASH_OUT,US,US,2548
364
+ TXN_000363,CUST_0050,4316.18,2026-02-05 03:40:49.975837,CASH_IN,US,US,2913
365
+ TXN_000364,CUST_0042,1901.93,2026-02-05 04:25:04.975837,TRANSFER,NG,NG,1211
366
+ TXN_000365,CUST_0029,969.39,2026-02-05 05:39:51.975837,TRANSFER,US,US,2111
367
+ TXN_000366,CUST_0008,1948.27,2026-02-05 06:06:04.975837,CASH_OUT,US,US,2399
368
+ TXN_000367,CUST_0017,127.66,2026-02-05 06:29:30.975837,PAYMENT,US,US,1328
369
+ TXN_000368,CUST_0039,349.19,2026-02-05 07:51:41.975837,PAYMENT,US,US,2016
370
+ TXN_000369,CUST_0037,2795.78,2026-02-05 08:16:42.975837,CASH_IN,NG,GB,3227
371
+ TXN_000370,CUST_0033,880.92,2026-02-05 09:45:17.975837,TRANSFER,US,US,3625
372
+ TXN_000371,CUST_0014,3350.34,2026-02-05 10:23:04.975837,PAYMENT,US,MX,2306
373
+ TXN_000372,CUST_0049,336124.54,2026-02-05 10:32:55.975837,PAYMENT,US,NG,170
374
+ TXN_000373,CUST_0044,4439.73,2026-02-05 11:12:03.975837,PAYMENT,GB,US,2219
375
+ TXN_000374,CUST_0047,1485.86,2026-02-05 11:15:40.975837,TRANSFER,DE,US,2090
376
+ TXN_000375,CUST_0029,2485.34,2026-02-05 11:26:29.975837,PAYMENT,US,US,344
377
+ TXN_000376,CUST_0007,920.23,2026-02-05 11:55:21.975837,CASH_OUT,US,US,275
378
+ TXN_000377,CUST_0014,3384.64,2026-02-05 12:27:25.975837,TRANSFER,BR,NG,2209
379
+ TXN_000378,CUST_0045,4405.32,2026-02-05 13:05:42.975837,TRANSFER,US,GB,3066
380
+ TXN_000379,CUST_0044,853.4,2026-02-05 13:39:34.975837,PAYMENT,US,US,229
381
+ TXN_000380,CUST_0012,3991.65,2026-02-05 15:23:58.975837,CASH_IN,US,US,1066
382
+ TXN_000381,CUST_0027,2001.36,2026-02-05 15:34:18.975837,CASH_OUT,US,US,2764
383
+ TXN_000382,CUST_0008,2720.69,2026-02-05 15:55:49.975837,TRANSFER,US,US,2877
384
+ TXN_000383,CUST_0005,1852.73,2026-02-05 16:25:35.975837,TRANSFER,US,US,2491
385
+ TXN_000384,CUST_0006,1479.44,2026-02-05 16:34:51.975837,CASH_IN,US,US,1948
386
+ TXN_000385,CUST_0011,2713.99,2026-02-05 16:43:18.975837,TRANSFER,US,RU,2604
387
+ TXN_000386,CUST_0010,1560.48,2026-02-05 17:04:17.975837,TRANSFER,DE,US,2274
388
+ TXN_000387,CUST_0036,288495.7,2026-02-05 17:41:05.975837,DEBIT,US,US,355
389
+ TXN_000388,CUST_0020,1129.26,2026-02-05 17:43:18.975837,DEBIT,NG,US,2652
390
+ TXN_000389,CUST_0033,798.03,2026-02-05 17:46:44.975837,TRANSFER,US,US,476
391
+ TXN_000390,CUST_0012,3387.79,2026-02-05 18:28:55.975837,TRANSFER,US,MX,2647
392
+ TXN_000391,CUST_0036,458.41,2026-02-05 19:19:16.975837,TRANSFER,US,US,2385
393
+ TXN_000392,CUST_0032,4762.55,2026-02-05 19:48:04.975837,PAYMENT,US,US,1174
394
+ TXN_000393,CUST_0040,442.06,2026-02-05 20:30:52.975837,PAYMENT,US,US,2707
395
+ TXN_000394,CUST_0020,3497.94,2026-02-05 20:33:55.975837,TRANSFER,US,BR,697
396
+ TXN_000395,CUST_0001,1634.75,2026-02-05 21:17:25.975837,DEBIT,BR,US,1479
397
+ TXN_000396,CUST_0009,3429.94,2026-02-05 21:35:42.975837,TRANSFER,US,US,3180
398
+ TXN_000397,CUST_0020,2486.16,2026-02-05 21:37:22.975837,CASH_OUT,US,US,1156
399
+ TXN_000398,CUST_0009,4467.36,2026-02-05 22:09:54.975837,TRANSFER,GB,US,3486
400
+ TXN_000399,CUST_0033,3194.97,2026-02-05 22:47:47.975837,PAYMENT,US,NG,157
401
+ TXN_000400,CUST_0036,1377.02,2026-02-05 23:10:57.975837,TRANSFER,US,US,615
402
+ TXN_000401,CUST_0024,2023.24,2026-02-05 23:30:18.975837,TRANSFER,US,CN,1910
403
+ TXN_000402,CUST_0033,2601.02,2026-02-06 00:09:33.975837,CASH_IN,US,US,3480
404
+ TXN_000403,CUST_0040,3452.39,2026-02-06 01:02:12.975837,TRANSFER,US,US,2326
405
+ TXN_000404,CUST_0037,3331.13,2026-02-06 01:21:57.975837,CASH_OUT,MX,US,903
406
+ TXN_000405,CUST_0049,2489.45,2026-02-06 01:22:41.975837,TRANSFER,US,US,853
407
+ TXN_000406,CUST_0034,4547.86,2026-02-06 02:22:37.975837,TRANSFER,US,US,197
408
+ TXN_000407,CUST_0003,4904.89,2026-02-06 02:31:31.975837,PAYMENT,RU,RU,2377
409
+ TXN_000408,CUST_0035,2893.78,2026-02-06 02:37:05.975837,DEBIT,US,US,3429
410
+ TXN_000409,CUST_0005,2631.65,2026-02-06 05:13:57.975837,PAYMENT,BR,US,3561
411
+ TXN_000410,CUST_0023,2485.62,2026-02-06 07:00:17.975837,CASH_IN,US,US,576
412
+ TXN_000411,CUST_0029,911.47,2026-02-06 09:27:42.975837,CASH_OUT,US,US,772
413
+ TXN_000412,CUST_0011,1874.89,2026-02-06 10:26:22.975837,CASH_OUT,US,US,3329
414
+ TXN_000413,CUST_0022,3629.25,2026-02-06 11:33:48.975837,CASH_OUT,US,US,667
415
+ TXN_000414,CUST_0042,26356.44,2026-02-06 12:16:24.975837,DEBIT,US,US,2585
416
+ TXN_000415,CUST_0033,292.04,2026-02-06 12:47:49.975837,CASH_OUT,US,US,744
417
+ TXN_000416,CUST_0034,4795.37,2026-02-06 13:39:34.975837,CASH_OUT,US,US,2954
418
+ TXN_000417,CUST_0047,3342.55,2026-02-06 14:34:32.975837,CASH_OUT,US,US,1937
419
+ TXN_000418,CUST_0031,935.78,2026-02-06 15:19:47.975837,TRANSFER,US,CN,2559
420
+ TXN_000419,CUST_0043,2602.94,2026-02-06 16:01:22.975837,DEBIT,US,GB,948
421
+ TXN_000420,CUST_0025,1988.76,2026-02-06 16:35:04.975837,TRANSFER,US,BR,3392
422
+ TXN_000421,CUST_0010,3067.0,2026-02-06 16:38:54.975837,TRANSFER,US,GB,388
423
+ TXN_000422,CUST_0031,3331.02,2026-02-06 16:41:16.975837,PAYMENT,US,US,3180
424
+ TXN_000423,CUST_0044,3281.24,2026-02-06 16:47:40.975837,CASH_OUT,US,US,2177
425
+ TXN_000424,CUST_0028,1224.48,2026-02-06 17:04:01.975837,DEBIT,BR,US,3302
426
+ TXN_000425,CUST_0048,4548.51,2026-02-06 17:16:22.975837,DEBIT,US,US,1049
427
+ TXN_000426,CUST_0031,3852.71,2026-02-06 17:26:25.975837,PAYMENT,US,US,2234
428
+ TXN_000427,CUST_0027,373104.61,2026-02-06 17:26:36.975837,PAYMENT,US,US,2135
429
+ TXN_000428,CUST_0001,1937.65,2026-02-06 17:45:00.975837,CASH_IN,BR,US,640
430
+ TXN_000429,CUST_0028,3292.72,2026-02-06 17:55:22.975837,PAYMENT,BR,US,2513
431
+ TXN_000430,CUST_0018,4959.81,2026-02-06 17:56:37.975837,TRANSFER,US,US,2290
432
+ TXN_000431,CUST_0031,975.73,2026-02-06 19:18:38.975837,TRANSFER,US,DE,3178
433
+ TXN_000432,CUST_0046,2050.84,2026-02-06 19:19:59.975837,CASH_OUT,GB,MX,3214
434
+ TXN_000433,CUST_0045,4751.3,2026-02-06 19:30:40.975837,TRANSFER,US,US,665
435
+ TXN_000434,CUST_0025,50088.85,2026-02-06 19:36:09.975837,CASH_OUT,US,BR,368
436
+ TXN_000435,CUST_0005,1389.15,2026-02-06 19:44:17.975837,DEBIT,US,BR,2521
437
+ TXN_000436,CUST_0042,2652.93,2026-02-06 20:24:00.975837,CASH_OUT,US,CN,2629
438
+ TXN_000437,CUST_0032,2250.96,2026-02-06 21:09:46.975837,DEBIT,US,RU,804
439
+ TXN_000438,CUST_0003,3941.4,2026-02-06 22:27:45.975837,CASH_OUT,US,US,2767
440
+ TXN_000439,CUST_0003,1862.73,2026-02-06 22:58:17.975837,CASH_OUT,GB,BR,1453
441
+ TXN_000440,CUST_0043,2036.2,2026-02-06 23:07:41.975837,PAYMENT,US,GB,376
442
+ TXN_000441,CUST_0036,1494.02,2026-02-07 00:05:59.975837,TRANSFER,DE,US,3347
443
+ TXN_000442,CUST_0018,1208.85,2026-02-07 01:01:49.975837,TRANSFER,US,US,26
444
+ TXN_000443,CUST_0017,957.67,2026-02-07 01:38:57.975837,CASH_OUT,US,US,1399
445
+ TXN_000444,CUST_0008,4034.42,2026-02-07 01:46:05.975837,CASH_IN,RU,US,1551
446
+ TXN_000445,CUST_0037,2469.79,2026-02-07 02:27:07.975837,CASH_OUT,US,MX,2410
447
+ TXN_000446,CUST_0002,2461.65,2026-02-07 03:01:21.975837,TRANSFER,US,NG,2779
448
+ TXN_000447,CUST_0045,1226.66,2026-02-07 04:03:19.975837,TRANSFER,US,RU,1023
449
+ TXN_000448,CUST_0019,555.75,2026-02-07 04:23:19.975837,TRANSFER,GB,US,738
450
+ TXN_000449,CUST_0031,1637.98,2026-02-07 04:53:30.975837,TRANSFER,US,US,3063
451
+ TXN_000450,CUST_0044,4658.25,2026-02-07 06:18:39.975837,PAYMENT,NG,RU,853
452
+ TXN_000451,CUST_0015,1093.56,2026-02-07 06:20:08.975837,TRANSFER,US,US,443
453
+ TXN_000452,CUST_0008,4608.92,2026-02-07 06:36:17.975837,PAYMENT,US,US,3137
454
+ TXN_000453,CUST_0035,4794.17,2026-02-07 06:48:54.975837,TRANSFER,US,US,3615
455
+ TXN_000454,CUST_0037,4356.97,2026-02-07 07:33:02.975837,CASH_OUT,RU,US,3079
456
+ TXN_000455,CUST_0037,728.41,2026-02-07 08:12:10.975837,TRANSFER,US,US,2065
457
+ TXN_000456,CUST_0023,2029.21,2026-02-07 08:19:19.975837,PAYMENT,US,MX,1299
458
+ TXN_000457,CUST_0045,141.25,2026-02-07 08:32:07.975837,CASH_IN,US,US,1488
459
+ TXN_000458,CUST_0040,4323.03,2026-02-07 08:34:30.975837,TRANSFER,US,US,2518
460
+ TXN_000459,CUST_0022,1893.03,2026-02-07 08:39:06.975837,PAYMENT,US,DE,1502
461
+ TXN_000460,CUST_0026,1470.18,2026-02-07 08:54:32.975837,PAYMENT,US,US,943
462
+ TXN_000461,CUST_0007,3632.0,2026-02-07 08:59:17.975837,DEBIT,US,NG,604
463
+ TXN_000462,CUST_0048,832.79,2026-02-07 09:03:19.975837,PAYMENT,US,US,3486
464
+ TXN_000463,CUST_0041,2633.33,2026-02-07 09:26:03.975837,DEBIT,RU,US,3523
465
+ TXN_000464,CUST_0037,333.78,2026-02-07 09:39:49.975837,TRANSFER,US,US,1048
466
+ TXN_000465,CUST_0031,9788.63,2026-02-07 10:17:06.975837,CASH_OUT,RU,US,2302
467
+ TXN_000466,CUST_0036,4666.04,2026-02-07 12:43:45.975837,TRANSFER,US,US,3559
468
+ TXN_000467,CUST_0044,4819.27,2026-02-07 13:51:00.975837,CASH_OUT,US,US,721
469
+ TXN_000468,CUST_0050,1494.58,2026-02-07 13:59:26.975837,PAYMENT,US,MX,3650
470
+ TXN_000469,CUST_0006,1967.25,2026-02-07 14:10:36.975837,PAYMENT,US,US,693
471
+ TXN_000470,CUST_0041,4057.81,2026-02-07 15:05:40.975837,PAYMENT,US,US,3484
472
+ TXN_000471,CUST_0005,487.65,2026-02-07 15:44:19.975837,CASH_OUT,US,US,2916
473
+ TXN_000472,CUST_0018,3066.39,2026-02-07 16:29:37.975837,TRANSFER,DE,MX,1702
474
+ TXN_000473,CUST_0011,365247.35,2026-02-07 16:47:55.975837,PAYMENT,US,GB,869
475
+ TXN_000474,CUST_0011,2045.52,2026-02-07 17:21:24.975837,TRANSFER,MX,US,114
476
+ TXN_000475,CUST_0050,2045.36,2026-02-07 18:44:17.975837,TRANSFER,US,US,643
477
+ TXN_000476,CUST_0006,3308.68,2026-02-07 20:02:15.975837,CASH_OUT,US,US,1170
478
+ TXN_000477,CUST_0029,3169.76,2026-02-07 20:07:33.975837,TRANSFER,US,US,1468
479
+ TXN_000478,CUST_0021,4334.78,2026-02-07 20:15:27.975837,TRANSFER,RU,US,560
480
+ TXN_000479,CUST_0045,2742.51,2026-02-07 20:42:54.975837,CASH_OUT,US,BR,2151
481
+ TXN_000480,CUST_0041,3233.69,2026-02-07 21:37:15.975837,CASH_OUT,US,US,3303
482
+ TXN_000481,CUST_0006,2265.12,2026-02-07 23:48:04.975837,TRANSFER,US,US,7
483
+ TXN_000482,CUST_0034,4095.36,2026-02-08 00:30:10.975837,PAYMENT,US,US,41
484
+ TXN_000483,CUST_0045,4618.23,2026-02-08 00:49:23.975837,TRANSFER,US,US,1770
485
+ TXN_000484,CUST_0019,3025.32,2026-02-08 02:02:12.975837,CASH_IN,US,US,3620
486
+ TXN_000485,CUST_0036,2241.82,2026-02-08 02:24:42.975837,PAYMENT,BR,NG,1084
487
+ TXN_000486,CUST_0006,2168.97,2026-02-08 03:16:07.975837,CASH_IN,RU,US,3050
488
+ TXN_000487,CUST_0035,4063.16,2026-02-08 04:55:21.975837,TRANSFER,CN,US,459
489
+ TXN_000488,CUST_0041,2331.18,2026-02-08 05:36:41.975837,CASH_IN,MX,US,86
490
+ TXN_000489,CUST_0010,343.2,2026-02-08 06:08:56.975837,TRANSFER,US,US,1109
491
+ TXN_000490,CUST_0009,3604.46,2026-02-08 06:54:03.975837,TRANSFER,US,US,2028
492
+ TXN_000491,CUST_0014,1775.37,2026-02-08 08:10:22.975837,TRANSFER,DE,US,3248
493
+ TXN_000492,CUST_0003,1718.22,2026-02-08 08:18:07.975837,TRANSFER,US,US,1614
494
+ TXN_000493,CUST_0005,2761.64,2026-02-08 08:22:06.975837,DEBIT,RU,US,506
495
+ TXN_000494,CUST_0050,3601.94,2026-02-08 09:15:39.975837,TRANSFER,NG,US,822
496
+ TXN_000495,CUST_0030,10000.0,2026-02-08 09:58:52.975837,PAYMENT,US,US,1600
497
+ TXN_000496,CUST_0044,4809.95,2026-02-08 10:21:36.975837,TRANSFER,US,GB,1044
498
+ TXN_000497,CUST_0031,3228.75,2026-02-08 11:05:29.975837,TRANSFER,NG,NG,2599
499
+ TXN_000498,CUST_0028,1690.12,2026-02-08 11:49:43.975837,PAYMENT,US,US,3239
500
+ TXN_000499,CUST_0016,392820.24,2026-02-08 12:37:36.975837,TRANSFER,US,US,1528
501
+ TXN_000500,CUST_0050,538.45,2026-02-08 12:55:02.975837,PAYMENT,US,US,3118
502
+ TXN_000501,CUST_0041,394.26,2026-02-08 14:27:12.975837,TRANSFER,US,US,446
503
+ TXN_000502,CUST_0009,2490.43,2026-02-08 14:29:57.975837,CASH_OUT,US,US,1429
504
+ TXN_000503,CUST_0029,191995.62,2026-02-08 14:45:04.975837,CASH_OUT,RU,MX,2901
505
+ TXN_000504,CUST_0029,2839.22,2026-02-08 16:01:57.975837,CASH_OUT,US,US,2233
506
+ TXN_000505,CUST_0023,1686.04,2026-02-08 16:15:11.975837,TRANSFER,CN,US,641
507
+ TXN_000506,CUST_0029,1548.8,2026-02-08 17:12:55.975837,CASH_OUT,US,US,2620
508
+ TXN_000507,CUST_0033,1957.31,2026-02-08 17:42:04.975837,TRANSFER,US,NG,1320
509
+ TXN_000508,CUST_0047,410.37,2026-02-08 18:44:21.975837,TRANSFER,NG,US,2044
510
+ TXN_000509,CUST_0050,2802.19,2026-02-08 18:51:11.975837,TRANSFER,US,US,459
511
+ TXN_000510,CUST_0007,2663.68,2026-02-08 19:36:23.975837,CASH_IN,CN,US,135
512
+ TXN_000511,CUST_0013,624.57,2026-02-08 20:48:07.975837,CASH_OUT,US,US,1598
513
+ TXN_000512,CUST_0043,2500.56,2026-02-08 22:07:27.975837,CASH_OUT,US,US,911
514
+ TXN_000513,CUST_0039,460912.43,2026-02-08 22:30:34.975837,DEBIT,US,GB,1924
515
+ TXN_000514,CUST_0041,397.43,2026-02-08 22:50:45.975837,DEBIT,BR,US,3380
516
+ TXN_000515,CUST_0040,39842.12,2026-02-08 23:38:06.975837,CASH_OUT,US,GB,421
517
+ TXN_000516,CUST_0047,1231.99,2026-02-08 23:54:57.975837,DEBIT,US,US,2341
518
+ TXN_000517,CUST_0041,4742.77,2026-02-09 01:50:07.975837,CASH_OUT,US,DE,2769
519
+ TXN_000518,CUST_0030,3542.5,2026-02-09 01:55:12.975837,TRANSFER,US,BR,2074
520
+ TXN_000519,CUST_0022,3321.91,2026-02-09 02:11:51.975837,TRANSFER,US,DE,2260
521
+ TXN_000520,CUST_0021,4239.78,2026-02-09 02:30:36.975837,PAYMENT,US,DE,2499
522
+ TXN_000521,CUST_0016,2859.41,2026-02-09 02:53:54.975837,CASH_OUT,RU,US,1860
523
+ TXN_000522,CUST_0029,22158.14,2026-02-09 03:05:08.975837,TRANSFER,US,US,560
524
+ TXN_000523,CUST_0020,132.19,2026-02-09 03:59:19.975837,CASH_OUT,US,US,3167
525
+ TXN_000524,CUST_0045,4129.45,2026-02-09 04:05:58.975837,TRANSFER,US,US,2348
526
+ TXN_000525,CUST_0010,562.01,2026-02-09 04:49:57.975837,PAYMENT,US,US,3650
527
+ TXN_000526,CUST_0038,1324.3,2026-02-09 05:03:25.975837,CASH_OUT,US,US,2337
528
+ TXN_000527,CUST_0014,3697.9,2026-02-09 06:08:18.975837,TRANSFER,CN,US,2831
529
+ TXN_000528,CUST_0045,2923.54,2026-02-09 08:56:53.975837,DEBIT,US,US,3000
530
+ TXN_000529,CUST_0037,1969.58,2026-02-09 10:31:09.975837,TRANSFER,DE,US,3354
531
+ TXN_000530,CUST_0028,9193.42,2026-02-09 11:54:25.975837,CASH_OUT,NG,US,2603
532
+ TXN_000531,CUST_0050,3197.75,2026-02-09 11:58:17.975837,PAYMENT,US,US,2320
533
+ TXN_000532,CUST_0010,1701.47,2026-02-09 11:59:28.975837,TRANSFER,US,US,1616
534
+ TXN_000533,CUST_0029,3788.92,2026-02-09 13:06:02.975837,DEBIT,US,US,3227
535
+ TXN_000534,CUST_0026,41410.77,2026-02-09 14:07:43.975837,CASH_IN,US,BR,7
536
+ TXN_000535,CUST_0006,2052.78,2026-02-09 14:16:34.975837,CASH_IN,US,MX,2297
537
+ TXN_000536,CUST_0013,2490.52,2026-02-09 15:07:42.975837,TRANSFER,US,US,3020
538
+ TXN_000537,CUST_0034,1306.6,2026-02-09 16:29:24.975837,TRANSFER,DE,US,2366
539
+ TXN_000538,CUST_0006,651.4,2026-02-09 17:15:44.975837,CASH_OUT,US,US,1418
540
+ TXN_000539,CUST_0039,3311.51,2026-02-09 17:51:10.975837,DEBIT,US,US,3372
541
+ TXN_000540,CUST_0029,3153.59,2026-02-09 18:54:44.975837,TRANSFER,NG,US,1538
542
+ TXN_000541,CUST_0010,3812.9,2026-02-09 20:42:30.975837,TRANSFER,US,US,2550
543
+ TXN_000542,CUST_0010,4356.89,2026-02-09 21:10:13.975837,TRANSFER,US,US,462
544
+ TXN_000543,CUST_0020,108459.72,2026-02-09 21:26:11.975837,CASH_OUT,US,US,2150
545
+ TXN_000544,CUST_0049,1367.42,2026-02-09 21:51:33.975837,PAYMENT,CN,US,2744
546
+ TXN_000545,CUST_0002,1945.37,2026-02-09 21:57:51.975837,PAYMENT,US,US,253
547
+ TXN_000546,CUST_0019,1083.41,2026-02-09 22:16:37.975837,DEBIT,US,US,41
548
+ TXN_000547,CUST_0005,2004.36,2026-02-09 23:29:00.975837,DEBIT,DE,US,1205
549
+ TXN_000548,CUST_0042,1993.96,2026-02-09 23:46:48.975837,TRANSFER,US,DE,1992
550
+ TXN_000549,CUST_0039,2704.65,2026-02-10 00:47:30.975837,PAYMENT,US,US,2925
551
+ TXN_000550,CUST_0002,294.79,2026-02-10 01:04:51.975837,CASH_OUT,US,US,3056
552
+ TXN_000551,CUST_0011,190.02,2026-02-10 02:58:55.975837,PAYMENT,US,US,2060
553
+ TXN_000552,CUST_0018,4078.28,2026-02-10 03:45:00.975837,TRANSFER,US,RU,930
554
+ TXN_000553,CUST_0010,1774.75,2026-02-10 04:04:43.975837,CASH_OUT,US,NG,1716
555
+ TXN_000554,CUST_0016,2907.2,2026-02-10 04:23:23.975837,DEBIT,US,US,1846
556
+ TXN_000555,CUST_0035,745.68,2026-02-10 04:37:13.975837,TRANSFER,US,US,835
557
+ TXN_000556,CUST_0009,1614.09,2026-02-10 05:40:33.975837,CASH_OUT,US,US,3161
558
+ TXN_000557,CUST_0010,3315.54,2026-02-10 06:21:27.975837,TRANSFER,US,US,2190
559
+ TXN_000558,CUST_0047,680.1,2026-02-10 07:46:32.975837,DEBIT,US,BR,1691
560
+ TXN_000559,CUST_0020,2270.72,2026-02-10 08:26:34.975837,DEBIT,RU,US,776
561
+ TXN_000560,CUST_0007,493048.02,2026-02-10 08:47:33.975837,DEBIT,US,US,2515
562
+ TXN_000561,CUST_0015,3022.17,2026-02-10 08:52:48.975837,CASH_OUT,US,US,3201
563
+ TXN_000562,CUST_0031,757.02,2026-02-10 08:58:58.975837,TRANSFER,US,US,760
564
+ TXN_000563,CUST_0025,2508.08,2026-02-10 09:24:38.975837,PAYMENT,US,US,3138
565
+ TXN_000564,CUST_0001,4634.63,2026-02-10 10:01:21.975837,TRANSFER,US,US,837
566
+ TXN_000565,CUST_0049,1102.35,2026-02-10 11:56:38.975837,DEBIT,MX,MX,2824
567
+ TXN_000566,CUST_0021,4347.2,2026-02-10 12:57:57.975837,TRANSFER,US,BR,2956
568
+ TXN_000567,CUST_0021,2031.34,2026-02-10 13:11:48.975837,CASH_OUT,US,US,2634
569
+ TXN_000568,CUST_0046,3955.91,2026-02-10 14:33:28.975837,TRANSFER,US,US,3602
570
+ TXN_000569,CUST_0016,2641.64,2026-02-10 15:12:50.975837,CASH_IN,BR,US,2590
571
+ TXN_000570,CUST_0004,1030.27,2026-02-10 16:58:52.975837,PAYMENT,RU,US,1737
572
+ TXN_000571,CUST_0019,3104.36,2026-02-10 17:51:48.975837,TRANSFER,US,US,3406
573
+ TXN_000572,CUST_0042,2313.32,2026-02-10 19:05:03.975837,TRANSFER,US,CN,1617
574
+ TXN_000573,CUST_0027,229571.96,2026-02-10 19:50:27.975837,CASH_OUT,NG,GB,1031
575
+ TXN_000574,CUST_0021,3489.42,2026-02-10 20:11:34.975837,PAYMENT,GB,US,2899
576
+ TXN_000575,CUST_0029,3206.95,2026-02-10 21:34:27.975837,TRANSFER,CN,US,1565
577
+ TXN_000576,CUST_0003,3864.48,2026-02-10 22:17:17.975837,TRANSFER,US,US,621
578
+ TXN_000577,CUST_0011,4357.21,2026-02-10 22:20:54.975837,CASH_OUT,BR,US,2997
579
+ TXN_000578,CUST_0050,4808.73,2026-02-11 00:31:29.975837,TRANSFER,US,NG,21
580
+ TXN_000579,CUST_0040,251325.67,2026-02-11 01:14:45.975837,TRANSFER,US,MX,981
581
+ TXN_000580,CUST_0014,2985.43,2026-02-11 01:51:37.975837,PAYMENT,US,US,2465
582
+ TXN_000581,CUST_0001,1299.09,2026-02-11 02:22:47.975837,TRANSFER,US,US,3387
583
+ TXN_000582,CUST_0014,339.7,2026-02-11 05:20:14.975837,CASH_OUT,US,US,3504
584
+ TXN_000583,CUST_0003,3368.28,2026-02-11 06:42:02.975837,TRANSFER,US,US,453
585
+ TXN_000584,CUST_0027,4969.3,2026-02-11 08:54:58.975837,DEBIT,US,US,2873
586
+ TXN_000585,CUST_0039,2904.18,2026-02-11 09:47:41.975837,DEBIT,DE,GB,3154
587
+ TXN_000586,CUST_0020,1681.83,2026-02-11 09:57:46.975837,CASH_OUT,BR,GB,1206
588
+ TXN_000587,CUST_0031,759.27,2026-02-11 10:12:57.975837,CASH_OUT,US,US,2155
589
+ TXN_000588,CUST_0014,3509.56,2026-02-11 10:26:20.975837,TRANSFER,US,GB,1988
590
+ TXN_000589,CUST_0047,3474.41,2026-02-11 11:21:45.975837,TRANSFER,RU,US,3479
591
+ TXN_000590,CUST_0021,1372.33,2026-02-11 12:48:29.975837,PAYMENT,US,MX,2135
592
+ TXN_000591,CUST_0047,3196.1,2026-02-11 13:18:33.975837,CASH_OUT,US,US,2909
593
+ TXN_000592,CUST_0019,16873.46,2026-02-11 13:31:11.975837,CASH_OUT,US,US,3480
594
+ TXN_000593,CUST_0014,4017.87,2026-02-11 18:15:12.975837,TRANSFER,US,US,2302
595
+ TXN_000594,CUST_0041,1140.46,2026-02-11 18:23:57.975837,CASH_OUT,US,US,284
596
+ TXN_000595,CUST_0020,1571.39,2026-02-11 18:37:38.975837,TRANSFER,GB,US,1405
597
+ TXN_000596,CUST_0026,3649.54,2026-02-11 18:59:22.975837,DEBIT,US,US,1360
598
+ TXN_000597,CUST_0022,4619.17,2026-02-11 19:45:05.975837,PAYMENT,US,US,563
599
+ TXN_000598,CUST_0031,861.39,2026-02-11 20:12:20.975837,TRANSFER,DE,US,3341
600
+ TXN_000599,CUST_0027,4646.17,2026-02-11 23:31:33.975837,CASH_OUT,US,US,2784
601
+ TXN_000600,CUST_0021,290811.83,2026-02-12 00:06:02.975837,PAYMENT,US,DE,278
602
+ TXN_000601,CUST_0010,491891.29,2026-02-12 01:43:25.975837,PAYMENT,US,BR,774
603
+ TXN_000602,CUST_0039,9636.73,2026-02-12 05:29:02.975837,CASH_OUT,US,US,1119
604
+ TXN_000603,CUST_0027,525.31,2026-02-12 05:59:42.975837,CASH_OUT,US,RU,892
605
+ TXN_000604,CUST_0034,1581.36,2026-02-12 06:00:50.975837,PAYMENT,NG,MX,2079
606
+ TXN_000605,CUST_0002,4015.22,2026-02-12 06:08:50.975837,TRANSFER,US,US,1987
607
+ TXN_000606,CUST_0047,4382.01,2026-02-12 06:10:24.975837,PAYMENT,US,GB,3374
608
+ TXN_000607,CUST_0034,3415.91,2026-02-12 06:11:44.975837,PAYMENT,MX,US,3549
609
+ TXN_000608,CUST_0034,108644.4,2026-02-12 06:33:25.975837,CASH_OUT,US,BR,1372
610
+ TXN_000609,CUST_0030,4457.01,2026-02-12 07:06:24.975837,CASH_OUT,RU,US,3113
611
+ TXN_000610,CUST_0020,3230.37,2026-02-12 07:20:18.975837,CASH_OUT,US,US,2187
612
+ TXN_000611,CUST_0021,3886.66,2026-02-12 07:37:55.975837,PAYMENT,US,US,475
613
+ TXN_000612,CUST_0001,4795.66,2026-02-12 07:38:07.975837,PAYMENT,US,US,2257
614
+ TXN_000613,CUST_0021,1428.16,2026-02-12 09:04:41.975837,TRANSFER,NG,US,1282
615
+ TXN_000614,CUST_0040,4471.99,2026-02-12 10:09:10.975837,PAYMENT,US,US,2773
616
+ TXN_000615,CUST_0004,619.04,2026-02-12 10:43:40.975837,CASH_IN,US,US,2448
617
+ TXN_000616,CUST_0038,3184.41,2026-02-12 11:22:10.975837,DEBIT,US,US,1368
618
+ TXN_000617,CUST_0013,3593.2,2026-02-12 11:49:36.975837,DEBIT,US,MX,2332
619
+ TXN_000618,CUST_0009,555.29,2026-02-12 12:44:45.975837,DEBIT,US,US,1278
620
+ TXN_000619,CUST_0044,3257.65,2026-02-12 13:14:40.975837,CASH_OUT,US,CN,3534
621
+ TXN_000620,CUST_0040,1364.46,2026-02-12 17:30:39.975837,PAYMENT,US,DE,3237
622
+ TXN_000621,CUST_0021,240290.51,2026-02-12 18:13:58.975837,CASH_OUT,US,US,706
623
+ TXN_000622,CUST_0019,3862.91,2026-02-12 18:49:36.975837,CASH_OUT,US,US,3355
624
+ TXN_000623,CUST_0046,4004.11,2026-02-12 19:20:01.975837,CASH_OUT,US,MX,1648
625
+ TXN_000624,CUST_0038,2125.87,2026-02-12 23:31:34.975837,PAYMENT,US,BR,277
626
+ TXN_000625,CUST_0022,1120.37,2026-02-13 01:24:14.975837,TRANSFER,US,DE,2237
627
+ TXN_000626,CUST_0045,1257.16,2026-02-13 01:35:00.975837,CASH_OUT,US,MX,475
628
+ TXN_000627,CUST_0038,3020.77,2026-02-13 02:35:43.975837,TRANSFER,US,US,1268
629
+ TXN_000628,CUST_0026,441.08,2026-02-13 04:42:21.975837,CASH_OUT,BR,US,2648
630
+ TXN_000629,CUST_0043,401.26,2026-02-13 05:19:08.975837,CASH_IN,US,US,3099
631
+ TXN_000630,CUST_0041,4068.21,2026-02-13 05:47:41.975837,CASH_OUT,US,US,1200
632
+ TXN_000631,CUST_0025,3116.3,2026-02-13 06:05:19.975837,PAYMENT,US,RU,2342
633
+ TXN_000632,CUST_0044,1592.3,2026-02-13 06:07:06.975837,CASH_OUT,US,DE,372
634
+ TXN_000633,CUST_0038,139.78,2026-02-13 07:01:12.975837,CASH_OUT,US,US,1211
635
+ TXN_000634,CUST_0004,1909.19,2026-02-13 07:19:02.975837,TRANSFER,US,DE,456
636
+ TXN_000635,CUST_0019,50000.0,2026-02-13 07:42:18.975837,CASH_OUT,BR,US,2922
637
+ TXN_000636,CUST_0025,2089.56,2026-02-13 07:51:01.975837,CASH_OUT,US,US,576
638
+ TXN_000637,CUST_0013,2821.57,2026-02-13 09:17:23.975837,TRANSFER,US,US,1188
639
+ TXN_000638,CUST_0043,325952.68,2026-02-13 09:24:57.975837,CASH_OUT,US,BR,563
640
+ TXN_000639,CUST_0006,772.38,2026-02-13 09:32:50.975837,CASH_OUT,BR,US,1868
641
+ TXN_000640,CUST_0033,2178.21,2026-02-13 10:53:31.975837,TRANSFER,US,US,1746
642
+ TXN_000641,CUST_0039,136.41,2026-02-13 11:21:27.975837,TRANSFER,RU,US,2244
643
+ TXN_000642,CUST_0037,1898.15,2026-02-13 11:31:21.975837,CASH_IN,US,GB,2383
644
+ TXN_000643,CUST_0031,4812.51,2026-02-13 11:37:15.975837,CASH_OUT,RU,US,327
645
+ TXN_000644,CUST_0034,4460.59,2026-02-13 13:34:16.975837,CASH_IN,US,GB,2808
646
+ TXN_000645,CUST_0041,2742.07,2026-02-13 13:55:24.975837,TRANSFER,US,US,1927
647
+ TXN_000646,CUST_0030,2612.05,2026-02-13 13:57:58.975837,DEBIT,BR,US,3276
648
+ TXN_000647,CUST_0019,461817.94,2026-02-13 13:58:57.975837,PAYMENT,RU,US,1945
649
+ TXN_000648,CUST_0038,928.49,2026-02-13 14:43:07.975837,TRANSFER,US,US,344
650
+ TXN_000649,CUST_0009,2577.42,2026-02-13 15:20:49.975837,TRANSFER,US,US,1157
651
+ TXN_000650,CUST_0018,60216.96,2026-02-13 15:48:10.975837,CASH_OUT,US,US,626
652
+ TXN_000651,CUST_0043,2288.6,2026-02-13 16:13:10.975837,TRANSFER,US,MX,747
653
+ TXN_000652,CUST_0034,4323.87,2026-02-13 16:16:18.975837,TRANSFER,US,US,3372
654
+ TXN_000653,CUST_0010,4204.31,2026-02-13 16:25:00.975837,CASH_IN,US,US,2713
655
+ TXN_000654,CUST_0029,3657.4,2026-02-13 19:25:41.975837,PAYMENT,US,US,2637
656
+ TXN_000655,CUST_0017,3801.87,2026-02-13 20:03:38.975837,TRANSFER,US,US,1241
657
+ TXN_000656,CUST_0031,3756.14,2026-02-13 20:08:24.975837,TRANSFER,US,US,2897
658
+ TXN_000657,CUST_0025,2425.49,2026-02-13 20:49:02.975837,TRANSFER,US,US,3272
659
+ TXN_000658,CUST_0029,1971.82,2026-02-13 21:55:39.975837,PAYMENT,US,GB,2183
660
+ TXN_000659,CUST_0041,1833.76,2026-02-13 23:19:05.975837,CASH_IN,US,US,1123
661
+ TXN_000660,CUST_0022,1424.6,2026-02-13 23:48:56.975837,TRANSFER,US,US,1895
662
+ TXN_000661,CUST_0050,3408.93,2026-02-13 23:54:08.975837,TRANSFER,US,DE,2782
663
+ TXN_000662,CUST_0045,4966.75,2026-02-14 00:32:26.975837,TRANSFER,US,US,285
664
+ TXN_000663,CUST_0001,2115.12,2026-02-14 00:52:17.975837,TRANSFER,US,US,2977
665
+ TXN_000664,CUST_0019,311601.63,2026-02-14 01:20:14.975837,CASH_OUT,US,US,3429
666
+ TXN_000665,CUST_0014,4757.4,2026-02-14 04:39:16.975837,TRANSFER,GB,US,2483
667
+ TXN_000666,CUST_0009,1942.2,2026-02-14 04:53:30.975837,CASH_IN,US,CN,461
668
+ TXN_000667,CUST_0045,1002.89,2026-02-14 05:14:07.975837,TRANSFER,US,US,1864
669
+ TXN_000668,CUST_0018,3869.86,2026-02-14 05:51:48.975837,TRANSFER,US,RU,670
670
+ TXN_000669,CUST_0050,462.59,2026-02-14 05:57:43.975837,CASH_OUT,US,US,253
671
+ TXN_000670,CUST_0017,4782.47,2026-02-14 06:18:53.975837,TRANSFER,US,US,828
672
+ TXN_000671,CUST_0040,2023.91,2026-02-14 07:37:05.975837,CASH_OUT,US,US,1773
673
+ TXN_000672,CUST_0014,3108.43,2026-02-14 07:59:13.975837,DEBIT,US,US,149
674
+ TXN_000673,CUST_0005,445.02,2026-02-14 08:02:02.975837,TRANSFER,US,CN,2681
675
+ TXN_000674,CUST_0041,198289.49,2026-02-14 08:18:41.975837,CASH_OUT,US,US,1609
676
+ TXN_000675,CUST_0037,118.15,2026-02-14 08:50:27.975837,TRANSFER,MX,US,3464
677
+ TXN_000676,CUST_0047,3926.59,2026-02-14 09:17:55.975837,TRANSFER,US,US,2830
678
+ TXN_000677,CUST_0050,2462.13,2026-02-14 09:27:03.975837,TRANSFER,DE,US,1247
679
+ TXN_000678,CUST_0026,370.45,2026-02-14 09:57:39.975837,TRANSFER,US,US,3502
680
+ TXN_000679,CUST_0022,494.24,2026-02-14 09:57:51.975837,TRANSFER,NG,US,168
681
+ TXN_000680,CUST_0025,3337.6,2026-02-14 11:46:56.975837,CASH_OUT,US,US,2828
682
+ TXN_000681,CUST_0023,2483.87,2026-02-14 11:47:26.975837,DEBIT,US,US,153
683
+ TXN_000682,CUST_0013,224.29,2026-02-14 12:12:26.975837,PAYMENT,US,US,3254
684
+ TXN_000683,CUST_0035,3252.7,2026-02-14 13:38:54.975837,TRANSFER,MX,US,158
685
+ TXN_000684,CUST_0022,374.67,2026-02-14 14:45:02.975837,PAYMENT,US,US,3312
686
+ TXN_000685,CUST_0042,3369.85,2026-02-14 15:33:21.975837,TRANSFER,US,CN,3042
687
+ TXN_000686,CUST_0038,1241.63,2026-02-14 15:37:15.975837,PAYMENT,MX,US,1937
688
+ TXN_000687,CUST_0040,324.43,2026-02-14 15:49:46.975837,TRANSFER,US,US,211
689
+ TXN_000688,CUST_0020,4121.62,2026-02-14 16:04:56.975837,PAYMENT,US,GB,3356
690
+ TXN_000689,CUST_0007,659.48,2026-02-14 17:11:50.975837,TRANSFER,US,US,837
691
+ TXN_000690,CUST_0028,1752.98,2026-02-14 17:18:55.975837,DEBIT,BR,US,2809
692
+ TXN_000691,CUST_0037,2774.84,2026-02-14 18:40:13.975837,TRANSFER,NG,CN,1381
693
+ TXN_000692,CUST_0005,691.65,2026-02-14 18:57:26.975837,CASH_IN,US,US,2273
694
+ TXN_000693,CUST_0011,2249.44,2026-02-14 19:48:33.975837,PAYMENT,US,US,3477
695
+ TXN_000694,CUST_0041,3100.96,2026-02-14 21:33:02.975837,CASH_OUT,US,US,33
696
+ TXN_000695,CUST_0001,979.12,2026-02-14 22:45:46.975837,TRANSFER,US,BR,2847
697
+ TXN_000696,CUST_0050,2432.46,2026-02-14 22:59:51.975837,PAYMENT,US,US,1851
698
+ TXN_000697,CUST_0027,1272.34,2026-02-14 23:50:19.975837,TRANSFER,US,US,2944
699
+ TXN_000698,CUST_0032,3099.04,2026-02-14 23:56:25.975837,TRANSFER,RU,US,25
700
+ TXN_000699,CUST_0036,1254.63,2026-02-15 00:14:42.975837,CASH_OUT,US,US,1489
701
+ TXN_000700,CUST_0049,4935.23,2026-02-15 00:18:08.975837,DEBIT,US,US,859
702
+ TXN_000701,CUST_0018,360.04,2026-02-15 00:30:11.975837,TRANSFER,US,MX,2044
703
+ TXN_000702,CUST_0012,882.82,2026-02-15 00:53:42.975837,PAYMENT,US,US,865
704
+ TXN_000703,CUST_0028,1331.77,2026-02-15 02:29:07.975837,TRANSFER,MX,US,3039
705
+ TXN_000704,CUST_0004,4631.82,2026-02-15 02:52:58.975837,TRANSFER,MX,US,297
706
+ TXN_000705,CUST_0016,3634.88,2026-02-15 02:54:06.975837,CASH_OUT,US,US,2779
707
+ TXN_000706,CUST_0021,1227.31,2026-02-15 02:58:53.975837,CASH_OUT,US,US,1696
708
+ TXN_000707,CUST_0013,1940.11,2026-02-15 04:06:37.975837,CASH_OUT,US,US,1792
709
+ TXN_000708,CUST_0010,1159.21,2026-02-15 04:56:53.975837,TRANSFER,US,US,1881
710
+ TXN_000709,CUST_0047,1051.36,2026-02-15 05:38:34.975837,DEBIT,US,US,138
711
+ TXN_000710,CUST_0045,2886.46,2026-02-15 07:10:38.975837,CASH_OUT,US,US,1720
712
+ TXN_000711,CUST_0011,3825.66,2026-02-15 07:14:06.975837,DEBIT,US,US,3261
713
+ TXN_000712,CUST_0041,4768.52,2026-02-15 07:28:28.975837,DEBIT,US,US,947
714
+ TXN_000713,CUST_0006,2117.31,2026-02-15 07:36:46.975837,CASH_OUT,NG,US,3435
715
+ TXN_000714,CUST_0030,1467.94,2026-02-15 07:41:38.975837,CASH_OUT,NG,US,1785
716
+ TXN_000715,CUST_0038,1189.79,2026-02-15 08:05:41.975837,PAYMENT,US,US,188
717
+ TXN_000716,CUST_0003,4957.24,2026-02-15 08:16:00.975837,PAYMENT,US,US,1622
718
+ TXN_000717,CUST_0031,4067.61,2026-02-15 08:44:39.975837,TRANSFER,US,US,347
719
+ TXN_000718,CUST_0036,3790.09,2026-02-15 11:59:11.975837,CASH_OUT,US,US,1475
720
+ TXN_000719,CUST_0019,1271.41,2026-02-15 12:43:29.975837,TRANSFER,US,US,669
721
+ TXN_000720,CUST_0046,2350.49,2026-02-15 14:37:14.975837,TRANSFER,US,MX,3168
722
+ TXN_000721,CUST_0009,4383.58,2026-02-15 15:07:55.975837,CASH_OUT,DE,US,2890
723
+ TXN_000722,CUST_0041,106.68,2026-02-15 15:49:33.975837,DEBIT,US,US,2181
724
+ TXN_000723,CUST_0003,1553.29,2026-02-15 16:49:43.975837,PAYMENT,US,US,2363
725
+ TXN_000724,CUST_0014,3959.69,2026-02-15 17:20:03.975837,TRANSFER,US,US,2770
726
+ TXN_000725,CUST_0024,4451.09,2026-02-15 17:20:48.975837,CASH_OUT,US,US,1504
727
+ TXN_000726,CUST_0024,958.81,2026-02-15 17:40:54.975837,TRANSFER,US,NG,573
728
+ TXN_000727,CUST_0022,1269.3,2026-02-15 18:28:44.975837,TRANSFER,US,NG,3091
729
+ TXN_000728,CUST_0048,3828.34,2026-02-15 20:43:14.975837,TRANSFER,BR,US,266
730
+ TXN_000729,CUST_0024,1791.61,2026-02-15 21:05:09.975837,TRANSFER,US,US,2914
731
+ TXN_000730,CUST_0035,100000.0,2026-02-15 21:06:39.975837,TRANSFER,US,US,3283
732
+ TXN_000731,CUST_0044,4732.29,2026-02-15 21:26:39.975837,CASH_OUT,GB,US,3627
733
+ TXN_000732,CUST_0030,527.81,2026-02-15 22:13:21.975837,PAYMENT,US,GB,454
734
+ TXN_000733,CUST_0011,1452.12,2026-02-15 22:22:12.975837,PAYMENT,US,US,1207
735
+ TXN_000734,CUST_0027,4850.92,2026-02-15 22:34:57.975837,PAYMENT,US,US,1825
736
+ TXN_000735,CUST_0048,3258.95,2026-02-15 23:03:27.975837,CASH_OUT,US,NG,3426
737
+ TXN_000736,CUST_0034,3258.89,2026-02-16 00:16:33.975837,PAYMENT,US,US,1343
738
+ TXN_000737,CUST_0032,3007.45,2026-02-16 00:39:15.975837,TRANSFER,MX,US,2330
739
+ TXN_000738,CUST_0009,4501.58,2026-02-16 01:09:52.975837,PAYMENT,NG,US,1187
740
+ TXN_000739,CUST_0050,4243.02,2026-02-16 02:24:02.975837,TRANSFER,US,CN,2922
741
+ TXN_000740,CUST_0035,1497.71,2026-02-16 03:03:38.975837,DEBIT,CN,US,485
742
+ TXN_000741,CUST_0003,4969.49,2026-02-16 03:43:41.975837,TRANSFER,US,US,847
743
+ TXN_000742,CUST_0036,3564.96,2026-02-16 04:05:40.975837,CASH_OUT,CN,US,2218
744
+ TXN_000743,CUST_0011,2714.85,2026-02-16 04:45:05.975837,DEBIT,US,CN,1883
745
+ TXN_000744,CUST_0021,864.66,2026-02-16 06:05:06.975837,TRANSFER,US,US,2658
746
+ TXN_000745,CUST_0046,1548.23,2026-02-16 06:22:37.975837,CASH_OUT,CN,MX,1394
747
+ TXN_000746,CUST_0045,650.35,2026-02-16 06:42:03.975837,CASH_IN,US,US,485
748
+ TXN_000747,CUST_0020,221.5,2026-02-16 07:01:53.975837,PAYMENT,US,US,1343
749
+ TXN_000748,CUST_0004,3079.94,2026-02-16 07:27:36.975837,TRANSFER,US,RU,808
750
+ TXN_000749,CUST_0002,509.59,2026-02-16 09:41:57.975837,TRANSFER,US,BR,803
751
+ TXN_000750,CUST_0032,1657.01,2026-02-16 09:48:28.975837,DEBIT,DE,US,2939
752
+ TXN_000751,CUST_0028,1911.19,2026-02-16 09:53:02.975837,PAYMENT,US,US,1832
753
+ TXN_000752,CUST_0036,529.23,2026-02-16 10:04:35.975837,CASH_OUT,US,MX,1189
754
+ TXN_000753,CUST_0011,4047.8,2026-02-16 10:12:35.975837,TRANSFER,US,CN,3429
755
+ TXN_000754,CUST_0038,3029.88,2026-02-16 10:15:47.975837,PAYMENT,US,DE,277
756
+ TXN_000755,CUST_0038,3804.96,2026-02-16 11:18:02.975837,PAYMENT,US,BR,723
757
+ TXN_000756,CUST_0036,2364.39,2026-02-16 12:34:57.975837,TRANSFER,NG,US,1570
758
+ TXN_000757,CUST_0019,413992.91,2026-02-16 13:00:30.975837,CASH_OUT,RU,US,3037
759
+ TXN_000758,CUST_0030,1200.15,2026-02-16 13:46:37.975837,TRANSFER,US,US,2630
760
+ TXN_000759,CUST_0041,2415.45,2026-02-16 14:31:55.975837,CASH_OUT,BR,US,2824
761
+ TXN_000760,CUST_0042,1299.28,2026-02-16 15:20:47.975837,TRANSFER,US,GB,2460
762
+ TXN_000761,CUST_0048,1872.62,2026-02-16 15:56:49.975837,TRANSFER,US,US,2816
763
+ TXN_000762,CUST_0031,4873.87,2026-02-16 16:03:40.975837,CASH_OUT,US,US,3469
764
+ TXN_000763,CUST_0017,897.95,2026-02-16 16:24:23.975837,PAYMENT,US,CN,1470
765
+ TXN_000764,CUST_0011,359.15,2026-02-16 16:37:57.975837,PAYMENT,US,US,1194
766
+ TXN_000765,CUST_0019,2695.1,2026-02-16 16:51:11.975837,CASH_OUT,US,CN,3139
767
+ TXN_000766,CUST_0007,3033.94,2026-02-16 18:38:07.975837,CASH_OUT,US,US,3468
768
+ TXN_000767,CUST_0044,4019.4,2026-02-16 19:09:39.975837,DEBIT,US,US,2195
769
+ TXN_000768,CUST_0038,1822.98,2026-02-16 19:30:46.975837,PAYMENT,US,US,3196
770
+ TXN_000769,CUST_0032,2118.77,2026-02-16 19:45:40.975837,PAYMENT,US,US,2068
771
+ TXN_000770,CUST_0015,4174.71,2026-02-16 19:50:52.975837,TRANSFER,US,US,2160
772
+ TXN_000771,CUST_0035,3591.48,2026-02-16 20:11:53.975837,TRANSFER,BR,US,319
773
+ TXN_000772,CUST_0008,4112.34,2026-02-16 21:29:42.975837,TRANSFER,US,US,1492
774
+ TXN_000773,CUST_0009,4103.49,2026-02-16 22:02:00.975837,CASH_OUT,US,DE,712
775
+ TXN_000774,CUST_0046,1592.95,2026-02-16 22:12:12.975837,TRANSFER,US,US,2850
776
+ TXN_000775,CUST_0010,3471.43,2026-02-16 23:08:53.975837,DEBIT,US,BR,2836
777
+ TXN_000776,CUST_0049,3941.75,2026-02-16 23:57:29.975837,DEBIT,BR,US,448
778
+ TXN_000777,CUST_0003,3985.97,2026-02-17 00:10:52.975837,PAYMENT,US,US,1043
779
+ TXN_000778,CUST_0003,424.61,2026-02-17 01:03:15.975837,CASH_OUT,GB,NG,2413
780
+ TXN_000779,CUST_0013,1005.43,2026-02-17 02:12:06.975837,TRANSFER,US,RU,2381
781
+ TXN_000780,CUST_0023,1825.8,2026-02-17 05:16:57.975837,TRANSFER,NG,US,286
782
+ TXN_000781,CUST_0007,4115.97,2026-02-17 06:36:43.975837,TRANSFER,US,RU,710
783
+ TXN_000782,CUST_0049,2731.92,2026-02-17 07:46:29.975837,CASH_OUT,US,US,2072
784
+ TXN_000783,CUST_0046,2426.11,2026-02-17 08:35:30.975837,DEBIT,US,US,446
785
+ TXN_000784,CUST_0012,4190.24,2026-02-17 08:45:29.975837,TRANSFER,US,US,1676
786
+ TXN_000785,CUST_0008,3830.91,2026-02-17 09:03:21.975837,CASH_OUT,US,US,2037
787
+ TXN_000786,CUST_0049,1870.13,2026-02-17 09:11:22.975837,TRANSFER,GB,US,480
788
+ TXN_000787,CUST_0025,1489.7,2026-02-17 10:00:29.975837,TRANSFER,US,MX,932
789
+ TXN_000788,CUST_0036,2095.68,2026-02-17 10:16:20.975837,DEBIT,US,MX,2788
790
+ TXN_000789,CUST_0024,978.56,2026-02-17 10:16:24.975837,CASH_OUT,US,US,1801
791
+ TXN_000790,CUST_0034,3326.89,2026-02-17 10:40:45.975837,PAYMENT,US,US,2425
792
+ TXN_000791,CUST_0007,3733.02,2026-02-17 11:28:21.975837,TRANSFER,US,US,822
793
+ TXN_000792,CUST_0022,1081.29,2026-02-17 12:29:46.975837,PAYMENT,US,US,1746
794
+ TXN_000793,CUST_0047,2545.64,2026-02-17 13:17:16.975837,DEBIT,RU,BR,1465
795
+ TXN_000794,CUST_0031,3366.72,2026-02-17 13:38:25.975837,TRANSFER,RU,US,1869
796
+ TXN_000795,CUST_0007,698.73,2026-02-17 13:41:38.975837,PAYMENT,US,US,414
797
+ TXN_000796,CUST_0048,358.98,2026-02-17 13:43:34.975837,TRANSFER,US,BR,2483
798
+ TXN_000797,CUST_0044,1702.08,2026-02-17 14:55:54.975837,CASH_OUT,US,MX,3254
799
+ TXN_000798,CUST_0030,1089.47,2026-02-17 15:35:08.975837,TRANSFER,US,US,1414
800
+ TXN_000799,CUST_0035,2778.44,2026-02-17 16:18:27.975837,CASH_OUT,US,US,494
801
+ TXN_000800,CUST_0025,2305.57,2026-02-17 16:22:28.975837,TRANSFER,US,US,731
802
+ TXN_000801,CUST_0036,3331.11,2026-02-17 17:21:41.975837,TRANSFER,CN,US,557
803
+ TXN_000802,CUST_0020,9594.58,2026-02-17 17:23:08.975837,PAYMENT,US,US,2710
804
+ TXN_000803,CUST_0036,3458.33,2026-02-17 19:26:49.975837,CASH_OUT,US,US,1610
805
+ TXN_000804,CUST_0017,2523.99,2026-02-17 19:46:21.975837,TRANSFER,US,US,1172
806
+ TXN_000805,CUST_0021,400.98,2026-02-17 20:22:05.975837,CASH_OUT,US,US,3322
807
+ TXN_000806,CUST_0048,2961.44,2026-02-17 20:27:02.975837,TRANSFER,US,US,1760
808
+ TXN_000807,CUST_0023,4960.53,2026-02-17 21:43:21.975837,PAYMENT,US,US,968
809
+ TXN_000808,CUST_0042,1629.29,2026-02-18 01:06:32.975837,PAYMENT,US,GB,1389
810
+ TXN_000809,CUST_0011,196.59,2026-02-18 01:14:45.975837,PAYMENT,US,BR,1099
811
+ TXN_000810,CUST_0002,3510.2,2026-02-18 02:06:21.975837,PAYMENT,BR,US,1327
812
+ TXN_000811,CUST_0037,578.86,2026-02-18 03:33:06.975837,PAYMENT,US,US,2041
813
+ TXN_000812,CUST_0033,4076.14,2026-02-18 03:41:04.975837,PAYMENT,US,US,1792
814
+ TXN_000813,CUST_0013,2535.06,2026-02-18 06:19:21.975837,DEBIT,NG,US,201
815
+ TXN_000814,CUST_0020,4981.52,2026-02-18 08:34:07.975837,CASH_OUT,US,GB,2946
816
+ TXN_000815,CUST_0038,564.19,2026-02-18 09:14:27.975837,TRANSFER,US,MX,1756
817
+ TXN_000816,CUST_0014,1801.85,2026-02-18 09:18:13.975837,PAYMENT,RU,US,2218
818
+ TXN_000817,CUST_0021,1080.38,2026-02-18 09:51:28.975837,TRANSFER,US,US,3134
819
+ TXN_000818,CUST_0036,353149.16,2026-02-18 09:56:47.975837,TRANSFER,MX,US,3381
820
+ TXN_000819,CUST_0048,4696.7,2026-02-18 11:17:59.975837,CASH_OUT,US,BR,2325
821
+ TXN_000820,CUST_0047,3171.12,2026-02-18 11:55:46.975837,TRANSFER,US,US,623
822
+ TXN_000821,CUST_0048,3458.0,2026-02-18 11:57:05.975837,PAYMENT,US,US,3407
823
+ TXN_000822,CUST_0005,3206.24,2026-02-18 12:01:00.975837,CASH_IN,US,US,664
824
+ TXN_000823,CUST_0017,3465.59,2026-02-18 12:07:21.975837,TRANSFER,US,US,120
825
+ TXN_000824,CUST_0016,4005.52,2026-02-18 12:36:10.975837,CASH_OUT,US,BR,2656
826
+ TXN_000825,CUST_0003,1089.75,2026-02-18 13:20:17.975837,PAYMENT,US,RU,2704
827
+ TXN_000826,CUST_0036,962.33,2026-02-18 13:57:36.975837,CASH_OUT,MX,US,3527
828
+ TXN_000827,CUST_0006,108367.01,2026-02-18 14:06:02.975837,CASH_OUT,US,DE,2758
829
+ TXN_000828,CUST_0043,4440.02,2026-02-18 16:01:13.975837,CASH_IN,CN,US,2345
830
+ TXN_000829,CUST_0048,2551.22,2026-02-18 16:18:37.975837,PAYMENT,US,US,3181
831
+ TXN_000830,CUST_0034,1333.86,2026-02-18 19:29:41.975837,PAYMENT,US,US,3311
832
+ TXN_000831,CUST_0021,1713.5,2026-02-18 20:00:27.975837,DEBIT,US,NG,1739
833
+ TXN_000832,CUST_0014,806.96,2026-02-18 21:00:16.975837,TRANSFER,MX,US,3541
834
+ TXN_000833,CUST_0038,374.03,2026-02-18 22:22:25.975837,TRANSFER,US,US,2242
835
+ TXN_000834,CUST_0028,2426.79,2026-02-18 23:28:44.975837,CASH_OUT,US,CN,1493
836
+ TXN_000835,CUST_0031,3606.79,2026-02-18 23:55:26.975837,PAYMENT,US,US,3453
837
+ TXN_000836,CUST_0048,3344.89,2026-02-19 00:29:06.975837,TRANSFER,US,NG,1043
838
+ TXN_000837,CUST_0036,1984.98,2026-02-19 01:05:46.975837,PAYMENT,GB,US,975
839
+ TXN_000838,CUST_0029,2003.51,2026-02-19 02:12:37.975837,PAYMENT,US,RU,1239
840
+ TXN_000839,CUST_0006,4687.98,2026-02-19 03:49:03.975837,TRANSFER,US,CN,1804
841
+ TXN_000840,CUST_0041,1654.2,2026-02-19 04:20:18.975837,CASH_OUT,US,RU,3555
842
+ TXN_000841,CUST_0006,4133.67,2026-02-19 05:18:02.975837,DEBIT,US,US,3452
843
+ TXN_000842,CUST_0022,3615.19,2026-02-19 05:32:43.975837,CASH_IN,CN,US,2080
844
+ TXN_000843,CUST_0005,1824.1,2026-02-19 07:42:20.975837,CASH_IN,DE,US,119
845
+ TXN_000844,CUST_0049,355.28,2026-02-19 11:14:38.975837,TRANSFER,US,CN,19
846
+ TXN_000845,CUST_0026,1080.37,2026-02-19 12:43:12.975837,TRANSFER,US,US,1029
847
+ TXN_000846,CUST_0034,3596.46,2026-02-19 12:55:20.975837,CASH_OUT,US,US,2440
848
+ TXN_000847,CUST_0044,2110.55,2026-02-19 14:21:58.975837,TRANSFER,US,CN,1074
849
+ TXN_000848,CUST_0012,3468.59,2026-02-19 15:01:41.975837,TRANSFER,NG,US,1512
850
+ TXN_000849,CUST_0012,2028.12,2026-02-19 15:15:58.975837,TRANSFER,NG,US,101
851
+ TXN_000850,CUST_0036,3270.82,2026-02-19 15:16:22.975837,CASH_IN,MX,US,2879
852
+ TXN_000851,CUST_0011,343.94,2026-02-19 17:06:25.975837,TRANSFER,US,US,1514
853
+ TXN_000852,CUST_0011,4741.49,2026-02-19 17:09:09.975837,PAYMENT,BR,MX,3395
854
+ TXN_000853,CUST_0044,2521.33,2026-02-19 18:45:30.975837,CASH_OUT,US,RU,1186
855
+ TXN_000854,CUST_0048,2521.42,2026-02-19 18:46:18.975837,PAYMENT,NG,RU,2983
856
+ TXN_000855,CUST_0044,1027.88,2026-02-19 18:46:39.975837,DEBIT,US,US,1079
857
+ TXN_000856,CUST_0016,3126.63,2026-02-19 20:47:10.975837,CASH_OUT,US,US,1883
858
+ TXN_000857,CUST_0006,17575.03,2026-02-19 21:11:45.975837,TRANSFER,US,US,11
859
+ TXN_000858,CUST_0014,3595.35,2026-02-19 21:12:37.975837,CASH_OUT,RU,US,2288
860
+ TXN_000859,CUST_0004,355.35,2026-02-19 21:16:39.975837,TRANSFER,US,US,2490
861
+ TXN_000860,CUST_0043,4839.33,2026-02-19 22:04:30.975837,TRANSFER,US,US,2073
862
+ TXN_000861,CUST_0040,1966.59,2026-02-19 22:50:56.975837,CASH_OUT,US,US,2298
863
+ TXN_000862,CUST_0003,2944.39,2026-02-19 23:28:34.975837,PAYMENT,US,MX,547
864
+ TXN_000863,CUST_0006,1654.86,2026-02-19 23:31:54.975837,DEBIT,US,US,187
865
+ TXN_000864,CUST_0009,2546.13,2026-02-19 23:48:05.975837,CASH_OUT,US,US,1768
866
+ TXN_000865,CUST_0019,4523.68,2026-02-19 23:57:04.975837,PAYMENT,RU,US,1791
867
+ TXN_000866,CUST_0011,1646.16,2026-02-20 00:24:48.975837,TRANSFER,CN,US,2699
868
+ TXN_000867,CUST_0041,4011.28,2026-02-20 00:42:45.975837,PAYMENT,US,US,153
869
+ TXN_000868,CUST_0031,1375.1,2026-02-20 00:47:05.975837,TRANSFER,US,MX,174
870
+ TXN_000869,CUST_0029,1846.95,2026-02-20 00:52:53.975837,CASH_OUT,US,US,3471
871
+ TXN_000870,CUST_0047,4347.71,2026-02-20 00:55:41.975837,TRANSFER,US,CN,3426
872
+ TXN_000871,CUST_0011,3774.69,2026-02-20 01:35:00.975837,PAYMENT,US,US,876
873
+ TXN_000872,CUST_0038,384589.58,2026-02-20 01:46:56.975837,CASH_OUT,US,NG,3153
874
+ TXN_000873,CUST_0032,3416.85,2026-02-20 02:17:24.975837,TRANSFER,US,US,2794
875
+ TXN_000874,CUST_0008,37791.57,2026-02-20 04:09:45.975837,TRANSFER,DE,US,16
876
+ TXN_000875,CUST_0030,4170.43,2026-02-20 04:37:36.975837,CASH_OUT,US,US,1356
877
+ TXN_000876,CUST_0003,3315.25,2026-02-20 04:38:50.975837,CASH_OUT,US,CN,872
878
+ TXN_000877,CUST_0004,4027.63,2026-02-20 05:21:15.975837,TRANSFER,GB,US,2473
879
+ TXN_000878,CUST_0025,553.5,2026-02-20 06:55:14.975837,PAYMENT,US,BR,372
880
+ TXN_000879,CUST_0002,4276.49,2026-02-20 07:21:44.975837,CASH_OUT,RU,US,2686
881
+ TXN_000880,CUST_0010,690.95,2026-02-20 07:51:27.975837,TRANSFER,US,RU,2812
882
+ TXN_000881,CUST_0039,743.3,2026-02-20 08:07:05.975837,CASH_OUT,NG,US,3633
883
+ TXN_000882,CUST_0025,2434.55,2026-02-20 08:44:58.975837,TRANSFER,US,DE,2521
884
+ TXN_000883,CUST_0012,2227.12,2026-02-20 10:46:35.975837,TRANSFER,US,US,1905
885
+ TXN_000884,CUST_0044,1198.73,2026-02-20 10:51:09.975837,TRANSFER,US,US,2585
886
+ TXN_000885,CUST_0042,2670.92,2026-02-20 12:20:48.975837,TRANSFER,US,MX,1237
887
+ TXN_000886,CUST_0010,4922.51,2026-02-20 13:01:37.975837,CASH_IN,US,US,1758
888
+ TXN_000887,CUST_0019,2885.82,2026-02-20 13:22:06.975837,PAYMENT,GB,US,1698
889
+ TXN_000888,CUST_0007,2376.82,2026-02-20 13:38:05.975837,CASH_OUT,DE,US,341
890
+ TXN_000889,CUST_0050,2566.88,2026-02-20 13:42:30.975837,CASH_OUT,US,US,753
891
+ TXN_000890,CUST_0026,321.77,2026-02-20 14:14:00.975837,CASH_OUT,DE,US,1870
892
+ TXN_000891,CUST_0049,3384.27,2026-02-20 14:43:47.975837,TRANSFER,US,CN,871
893
+ TXN_000892,CUST_0012,483.28,2026-02-20 15:12:49.975837,TRANSFER,US,US,1783
894
+ TXN_000893,CUST_0035,187.78,2026-02-20 15:34:37.975837,CASH_OUT,US,US,1891
895
+ TXN_000894,CUST_0045,2084.95,2026-02-20 15:38:00.975837,TRANSFER,MX,US,3337
896
+ TXN_000895,CUST_0040,1867.57,2026-02-20 15:52:44.975837,TRANSFER,US,US,1246
897
+ TXN_000896,CUST_0006,60396.69,2026-02-20 16:11:52.975837,TRANSFER,US,US,864
898
+ TXN_000897,CUST_0031,50000.0,2026-02-20 17:00:42.975837,TRANSFER,US,US,3242
899
+ TXN_000898,CUST_0035,1035.48,2026-02-20 17:00:51.975837,PAYMENT,US,US,96
900
+ TXN_000899,CUST_0008,913.92,2026-02-20 17:10:09.975837,TRANSFER,MX,US,3528
901
+ TXN_000900,CUST_0029,2967.61,2026-02-20 17:18:07.975837,TRANSFER,US,US,1374
902
+ TXN_000901,CUST_0001,603.05,2026-02-20 17:49:29.975837,TRANSFER,US,US,2037
903
+ TXN_000902,CUST_0048,2935.44,2026-02-20 18:23:48.975837,TRANSFER,US,US,1998
904
+ TXN_000903,CUST_0033,2996.09,2026-02-20 18:37:04.975837,PAYMENT,US,MX,956
905
+ TXN_000904,CUST_0046,290319.66,2026-02-20 19:17:11.975837,TRANSFER,US,US,2662
906
+ TXN_000905,CUST_0027,4456.79,2026-02-20 19:58:35.975837,CASH_OUT,US,US,1843
907
+ TXN_000906,CUST_0045,2237.53,2026-02-20 20:00:10.975837,CASH_IN,MX,US,957
908
+ TXN_000907,CUST_0033,1176.54,2026-02-20 21:21:10.975837,DEBIT,US,US,3457
909
+ TXN_000908,CUST_0046,3319.09,2026-02-20 21:53:03.975837,PAYMENT,US,BR,3419
910
+ TXN_000909,CUST_0044,3297.25,2026-02-20 22:39:41.975837,CASH_OUT,US,CN,2554
911
+ TXN_000910,CUST_0014,1484.04,2026-02-20 23:39:16.975837,PAYMENT,US,US,824
912
+ TXN_000911,CUST_0011,3068.17,2026-02-21 00:46:15.975837,TRANSFER,US,RU,968
913
+ TXN_000912,CUST_0014,2828.47,2026-02-21 01:57:47.975837,CASH_OUT,US,US,2779
914
+ TXN_000913,CUST_0011,956.1,2026-02-21 02:21:26.975837,TRANSFER,US,DE,1770
915
+ TXN_000914,CUST_0008,3126.06,2026-02-21 02:30:02.975837,PAYMENT,US,US,1400
916
+ TXN_000915,CUST_0023,3869.93,2026-02-21 04:12:54.975837,TRANSFER,US,GB,2900
917
+ TXN_000916,CUST_0004,4640.5,2026-02-21 04:23:40.975837,TRANSFER,US,GB,440
918
+ TXN_000917,CUST_0040,3087.31,2026-02-21 05:31:53.975837,PAYMENT,US,US,2084
919
+ TXN_000918,CUST_0007,918.53,2026-02-21 06:01:25.975837,CASH_OUT,US,US,2990
920
+ TXN_000919,CUST_0019,3570.0,2026-02-21 06:59:47.975837,TRANSFER,US,CN,2657
921
+ TXN_000920,CUST_0024,1739.58,2026-02-21 07:49:07.975837,TRANSFER,MX,US,1011
922
+ TXN_000921,CUST_0031,1772.47,2026-02-21 09:16:19.975837,CASH_OUT,US,US,3098
923
+ TXN_000922,CUST_0027,1867.15,2026-02-21 09:28:41.975837,TRANSFER,US,BR,3231
924
+ TXN_000923,CUST_0015,776.17,2026-02-21 10:57:38.975837,CASH_OUT,MX,DE,128
925
+ TXN_000924,CUST_0029,404092.2,2026-02-21 11:30:54.975837,DEBIT,GB,US,1652
926
+ TXN_000925,CUST_0050,905.19,2026-02-21 11:38:01.975837,CASH_OUT,CN,US,2594
927
+ TXN_000926,CUST_0046,4015.45,2026-02-21 12:10:45.975837,PAYMENT,BR,US,2795
928
+ TXN_000927,CUST_0045,2812.69,2026-02-21 12:22:56.975837,DEBIT,DE,US,1152
929
+ TXN_000928,CUST_0034,3090.97,2026-02-21 13:46:22.975837,PAYMENT,US,US,3642
930
+ TXN_000929,CUST_0035,3159.36,2026-02-21 17:17:33.975837,CASH_OUT,US,US,3332
931
+ TXN_000930,CUST_0042,2082.08,2026-02-21 18:36:53.975837,TRANSFER,US,US,1377
932
+ TXN_000931,CUST_0025,3652.98,2026-02-21 19:09:52.975837,TRANSFER,US,RU,882
933
+ TXN_000932,CUST_0006,2607.19,2026-02-21 19:11:14.975837,CASH_OUT,US,US,102
934
+ TXN_000933,CUST_0002,4462.56,2026-02-21 19:18:40.975837,DEBIT,US,RU,2982
935
+ TXN_000934,CUST_0028,4936.08,2026-02-21 19:47:40.975837,PAYMENT,US,US,2575
936
+ TXN_000935,CUST_0033,327226.4,2026-02-21 19:50:09.975837,DEBIT,US,US,3025
937
+ TXN_000936,CUST_0001,2320.42,2026-02-21 20:13:59.975837,TRANSFER,NG,US,1172
938
+ TXN_000937,CUST_0043,3945.47,2026-02-21 20:44:16.975837,DEBIT,US,NG,438
939
+ TXN_000938,CUST_0021,2630.61,2026-02-21 21:07:24.975837,TRANSFER,MX,US,2921
940
+ TXN_000939,CUST_0028,4159.34,2026-02-21 22:40:33.975837,PAYMENT,US,MX,886
941
+ TXN_000940,CUST_0029,482.56,2026-02-21 22:56:56.975837,CASH_OUT,US,US,3197
942
+ TXN_000941,CUST_0026,4372.87,2026-02-21 23:15:12.975837,PAYMENT,US,MX,3004
943
+ TXN_000942,CUST_0027,4136.68,2026-02-22 00:07:08.975837,CASH_OUT,US,CN,2892
944
+ TXN_000943,CUST_0033,4330.03,2026-02-22 00:11:26.975837,TRANSFER,US,US,3064
945
+ TXN_000944,CUST_0011,4725.94,2026-02-22 00:53:43.975837,TRANSFER,BR,US,1520
946
+ TXN_000945,CUST_0037,1518.99,2026-02-22 02:01:14.975837,PAYMENT,US,US,1540
947
+ TXN_000946,CUST_0020,75720.35,2026-02-22 03:07:56.975837,CASH_OUT,BR,US,1256
948
+ TXN_000947,CUST_0019,1156.35,2026-02-22 04:19:28.975837,TRANSFER,US,US,1435
949
+ TXN_000948,CUST_0005,4365.09,2026-02-22 04:29:13.975837,TRANSFER,US,US,1390
950
+ TXN_000949,CUST_0025,2428.61,2026-02-22 04:57:40.975837,PAYMENT,US,MX,3126
951
+ TXN_000950,CUST_0029,3369.38,2026-02-22 05:04:32.975837,DEBIT,GB,BR,1593
952
+ TXN_000951,CUST_0015,4511.2,2026-02-22 05:33:05.975837,CASH_OUT,US,US,1821
953
+ TXN_000952,CUST_0048,1459.14,2026-02-22 06:25:04.975837,TRANSFER,US,US,2587
954
+ TXN_000953,CUST_0050,3566.25,2026-02-22 08:17:29.975837,PAYMENT,US,US,795
955
+ TXN_000954,CUST_0040,2754.99,2026-02-22 08:30:26.975837,TRANSFER,NG,US,499
956
+ TXN_000955,CUST_0043,4687.29,2026-02-22 09:53:19.975837,CASH_OUT,US,NG,3405
957
+ TXN_000956,CUST_0046,4210.7,2026-02-22 10:02:30.975837,DEBIT,US,US,1319
958
+ TXN_000957,CUST_0026,2985.58,2026-02-22 10:08:27.975837,CASH_OUT,DE,US,1706
959
+ TXN_000958,CUST_0002,4312.28,2026-02-22 11:00:13.975837,CASH_IN,US,US,413
960
+ TXN_000959,CUST_0035,923.96,2026-02-22 11:22:40.975837,CASH_OUT,US,US,1263
961
+ TXN_000960,CUST_0027,3425.18,2026-02-22 11:36:50.975837,DEBIT,CN,US,246
962
+ TXN_000961,CUST_0020,2010.7,2026-02-22 12:25:59.975837,DEBIT,US,US,1545
963
+ TXN_000962,CUST_0008,354.2,2026-02-22 14:03:52.975837,TRANSFER,US,US,2090
964
+ TXN_000963,CUST_0049,2571.66,2026-02-22 14:18:12.975837,CASH_IN,US,US,2272
965
+ TXN_000964,CUST_0027,318602.94,2026-02-22 14:44:32.975837,TRANSFER,US,US,2407
966
+ TXN_000965,CUST_0044,597.4,2026-02-22 16:17:58.975837,CASH_OUT,US,US,2334
967
+ TXN_000966,CUST_0027,2285.31,2026-02-22 17:07:28.975837,CASH_OUT,US,CN,1536
968
+ TXN_000967,CUST_0035,4928.01,2026-02-22 17:43:32.975837,TRANSFER,US,US,2280
969
+ TXN_000968,CUST_0029,304.78,2026-02-22 17:44:09.975837,TRANSFER,RU,US,692
970
+ TXN_000969,CUST_0001,394.86,2026-02-22 18:12:42.975837,CASH_OUT,US,US,2792
971
+ TXN_000970,CUST_0025,4996.29,2026-02-22 18:43:11.975837,TRANSFER,US,RU,193
972
+ TXN_000971,CUST_0011,3722.0,2026-02-22 18:59:51.975837,PAYMENT,US,US,510
973
+ TXN_000972,CUST_0009,3652.86,2026-02-22 19:01:49.975837,PAYMENT,NG,US,3292
974
+ TXN_000973,CUST_0021,4431.26,2026-02-22 19:19:34.975837,PAYMENT,US,MX,1125
975
+ TXN_000974,CUST_0016,3345.16,2026-02-22 19:30:55.975837,PAYMENT,US,DE,72
976
+ TXN_000975,CUST_0045,755.26,2026-02-22 19:46:15.975837,TRANSFER,US,US,46
977
+ TXN_000976,CUST_0044,950.33,2026-02-22 21:13:21.975837,TRANSFER,US,US,1615
978
+ TXN_000977,CUST_0035,497.63,2026-02-22 22:16:49.975837,PAYMENT,US,US,3415
979
+ TXN_000978,CUST_0043,2281.37,2026-02-22 22:47:05.975837,DEBIT,BR,DE,1591
980
+ TXN_000979,CUST_0012,4211.81,2026-02-22 23:59:22.975837,PAYMENT,GB,US,797
981
+ TXN_000980,CUST_0029,145.88,2026-02-23 01:51:43.975837,CASH_OUT,DE,US,3350
982
+ TXN_000981,CUST_0040,3163.66,2026-02-23 03:17:58.975837,PAYMENT,US,DE,157
983
+ TXN_000982,CUST_0018,2514.91,2026-02-23 03:50:12.975837,TRANSFER,US,US,3370
984
+ TXN_000983,CUST_0041,2040.82,2026-02-23 03:51:04.975837,TRANSFER,US,US,2267
985
+ TXN_000984,CUST_0013,3333.21,2026-02-23 05:08:14.975837,CASH_OUT,US,US,274
986
+ TXN_000985,CUST_0038,728.41,2026-02-23 06:22:32.975837,PAYMENT,US,US,940
987
+ TXN_000986,CUST_0034,3671.6,2026-02-23 06:44:38.975837,DEBIT,US,RU,2795
988
+ TXN_000987,CUST_0036,216421.67,2026-02-23 06:52:14.975837,TRANSFER,US,US,3504
989
+ TXN_000988,CUST_0021,2219.49,2026-02-23 07:11:33.975837,TRANSFER,US,US,1918
990
+ TXN_000989,CUST_0032,1871.21,2026-02-23 07:16:17.975837,CASH_OUT,NG,US,1727
991
+ TXN_000990,CUST_0035,101331.03,2026-02-23 07:57:14.975837,TRANSFER,US,US,110
992
+ TXN_000991,CUST_0048,1205.58,2026-02-23 09:50:46.975837,PAYMENT,NG,US,1355
993
+ TXN_000992,CUST_0020,407.94,2026-02-23 09:57:40.975837,TRANSFER,US,US,105
994
+ TXN_000993,CUST_0038,4006.38,2026-02-23 10:08:54.975837,DEBIT,NG,US,983
995
+ TXN_000994,CUST_0022,4179.34,2026-02-23 10:43:51.975837,TRANSFER,US,US,305
996
+ TXN_000995,CUST_0050,3039.83,2026-02-23 11:32:50.975837,CASH_IN,US,US,518
997
+ TXN_000996,CUST_0006,4875.18,2026-02-23 12:38:42.975837,CASH_OUT,US,GB,3212
998
+ TXN_000997,CUST_0009,403.81,2026-02-23 13:06:56.975837,TRANSFER,US,US,1775
999
+ TXN_000998,CUST_0005,598.96,2026-02-23 14:15:04.975837,CASH_OUT,US,BR,399
1000
+ TXN_000999,CUST_0040,3784.62,2026-02-23 17:35:10.975837,PAYMENT,US,US,50
1001
+ TXN_001000,CUST_0030,1981.21,2026-02-23 18:02:57.975837,CASH_OUT,GB,US,2774