Premium · One UAE bank, 10,000 customers, eighteen months
AML Transaction Monitoring
A UAE bank's whole trail from KYC to STR, with the laundering nobody caught
11,621,027 rows in 16 linked tables: 10,000 customers, 7,116,298 transactions, 6,947 alerts, 708 cases and 216 suspicious transaction reports over eighteen months (2025-05-01 to 2026-10-30), with 11 laundering and 5 fraud typologies planted and labelled.
Public AML datasets give you a transaction table and a label. A bank has much more: who the customer is, what the rules flagged, which alerts an investigator dismissed, which became a suspicious transaction report (STR) and when, and the crime nobody ever found. This dataset has all of it, with two labels on every transaction: what actually happened, and what the bank's records show.
Uses
What it is built for
Transaction monitoring and model benchmarks
score a detector against the truth, not against the bank's partial labels. 43.0% of truly suspicious transactions were never labelled by the bank, so a model trained on the observed labels can be tested on what it would really miss.
Alert triage and false positives
6,947 rule alerts, 91.6% of them false positives, the share banks report. Build a triage model, tune rule thresholds, or measure each rule's productivity.
Case management and STR workflow
every alert worked by a first-line analyst (11.0% escalated, the rest closed as false positives, some real laundering among them), cases opened from the escalations with investigators, outcomes and filing dates, STRs filed without delay (a median 5 days after an analyst escalated the alert), and the goAML XML report for each one, the format the UAE FIU takes.
Targeted financial sanctions
a few customers are listed while they bank here; each is frozen within a day of the listing, the debits they try afterwards are blocked and their accounts read frozen, beside a screening test set of confirmed matches and namesakes.
Drift and robustness
crypto_offrampfrom 2026-02 andapp_scamfrom 2026-04 are schemes the bank has never seen before they start. Train on the early months and watch a model meet them.Graph and network detection
rings with roles (principal, mule, pass-through), mule herds whose members bank here and pass money on to their collector, layering chains through other customers' accounts, and a counterparty network.
KYC, beneficial ownership and screening
risk ratings with their reasons, owners behind business customers, PEPs, and planted watchlist near-matches with the decision a screener should reach.
A bank that lives in the UAE
salaries paid through the Wage Protection System at the month's turn, with overtime for hourly trades; firms' payroll files, VAT for those past the registration threshold, corporate tax from 2024; expatriates sending home a part of pay that falls as pay rises; rent by post-dated cheques; homes, offices and labour accommodation by emirate and district; the Saturday-Sunday week for banks and firms while people shop through weekends and Eid; Ramadan's late nights and the run-up to Eid.
Teaching and demos
a complete AML data model for a course, a dashboard, or a RegTech or case-management demo.
Compared
Against the public datasets
What each of the best-known public datasets in this field ships with, from its own paper or page.
| This dataset | IBM AMLworld | SAML-D | PaySim | SynthAML | |
|---|---|---|---|---|---|
| Customer and KYC table | yes | no | no | no | no |
| Rule alerts with outcomes | yes, 92% false positives | no | no | one threshold flag | yes, 17% reported (its authors call that high) |
| Investigator cases and STR filings | yes, plus goAML reports | no | no | no | alert outcome only |
| Truth and observed label, separately | yes | no | no | no | no |
| Typologies | 16 | 8 patterns | 28 (11 normal) | fraud only | not labelled |
| Drift with a known start date | yes | no | no | no | dates to the quarter |
| Beneficial owners, sanctions screening | yes | no | no | no | no |
| Shortcut audit published | yes | no | no | balances leak the label | no |
Answer key
The truth, in its own columns
What a model, a control chart or an analyst is trying to find ships next to the data, so you can score an answer instead of guessing at it. Each line is measured from the full files.
- transactions.is_suspiciousThe truth: the transaction is part of a laundering or fraud scheme, whether or not anyone found it.true on 0.1% of rows
- transactions.typologyWhich of the sixteen schemes it belongs to.16 values: cash_commingling, mule_funnel, synthetic_identity…, 99.9% empty
- transactions.ring_idThe scheme instance, joining to rings and ring_members for every account it touched.211 values: R00001, R00009, R00004…, 99.9% empty
- transactions.label_observedWhat the bank's records show: the typology an investigation confirmed, empty where nothing was found.16 values: cash_commingling, mule_funnel, funnel_account…, 99.9% empty
- transactions.labelled_atWhen the bank learned it, weeks or months after the activity; empty if it had not by the end of the data.2025-07-05 00:44:28 to 2026-10-30 19:17:20, 99.9% empty
- transactions.lookalike_ofHonest activity that resembles a scheme: the false positives a good model must leave alone.15 values: mule_funnel, cash_commingling, funnel_account…, 100% empty
- customers.is_suspiciousThe customers who are laundering principals, exactly the share the recipe asked for.true on 1.4% of rows
- alerts.is_true_positiveWhether the rule alert pointed at real crime.true on 8.4% of rows
- alerts.typologyThe scheme a true alert pointed at; empty on false positives, so it is truth, not a feature.16 values: layering, structuring, trade_based…, 91.6% empty
- screening_expected.expected_decisionThe decision a sanctions screener should reach on each planted near-match.2 values: false_positive, true_match
How it behaves
Measured on the files you download
Each of these is computed from the delivered rows when the dataset is packaged, not written as a target.
- 91.6% of alerts are false positives (banks report 90-98%; SynthAML, built from a real bank, reports 95-98%).
- 3.1% of alerts end in an STR (typical programmes 1-5%).
- 0.103% of transactions are truly suspicious (public synthetic sets sit at 0.10-0.2%).
- STRs are filed a median 5 days after an analyst escalated the alert, never more than 10: the UAE requires reporting without delay. Counted from the rule's alert, its wait in the first-line queue included, the median is 13 days.
- The bank's records label 57.0% of truly suspicious transactions; the rest were never found.
- 53.3% of structuring cash deposits sit within 20% under the AED 55,000 line and none above it, against 0.03% of honest cash deposits.
- Mule accounts pass money on fast: 28.5% of value leaves within 15 minutes of the last deposit, 43.9% within an hour, 74.0% within a day.
- Honest amounts follow Benford's first-digit law (MAD 0.0043); suspicious ones conform less (MAD 0.0139).
- Shortcut audit: no column on its own finds the crime. The strongest,
amount, reaches an average precision of 0.019 against a base rate of 0.0010.
Audit
111 of 111 checks pass
Re-run on the delivered files by an independent script with plain pandas. The results ship in INTEGRITY.json.
- every key resolves and every primary key is unique; a transaction's customer owns its account; nothing happens before the account opens or the customer is onboarded; a case opens on or after its first alert and files its STR after it opens;
- every goAML report parses and belongs to a case with an STR;
- every customer was an adult when onboarded; dormant accounts have been quiet for a year; closed accounts stop;
- no value of any column, nor its being empty, marks crime on its own: declined payments, new devices and transfers between customers are overwhelmingly honest, as in a real bank;
- honest look-alike customers never carry a truly suspicious transaction;
- each scheme that starts part-way through starts when the recipe says;
- no column on its own gives the label away (the shortcut audit below).
All 111 checks
- ✓ accounts.account_id unique
- ✓ alerts.alert_id unique
- ✓ beneficial_owners.owner_id unique
- ✓ cases.case_id unique
- ✓ counterparties.counterparty_id unique
- ✓ customers.customer_id unique
- ✓ logins.login_id unique
- ✓ lookalikes.lookalike_id unique
- ✓ payees.payee_id unique
- ✓ ring_members.member_id unique
- ✓ rings.ring_id unique
- ✓ screening_expected.pair_id unique
- ✓ str_reports.report_id unique
- ✓ transactions.transaction_id unique
- ✓ watchlist.entry_id unique
- ✓ watchlist_aliases.alias_id unique
- ✓ accounts.customer_id -> customers.customer_id: 0 orphans of 17,282
- ✓ transactions.account_id -> accounts.account_id: 0 orphans of 7,116,298
- ✓ transactions.customer_id -> customers.customer_id: 0 orphans of 7,116,298
- ✓ alerts.customer_id -> customers.customer_id: 0 orphans of 6,947
- ✓ alerts.account_id -> accounts.account_id: 0 orphans of 6,947
- ✓ cases.customer_id -> customers.customer_id: 0 orphans of 708
- ✓ cases.first_alert_id -> alerts.alert_id: 0 orphans of 708
- ✓ ring_members.ring_id -> rings.ring_id: 0 orphans of 384
- ✓ ring_members.customer_id -> customers.customer_id: 0 orphans of 384
- ✓ ring_members.account_id -> accounts.account_id: 0 orphans of 384
- ✓ lookalikes.customer_id -> customers.customer_id: 0 orphans of 100
- ✓ beneficial_owners.customer_id -> customers.customer_id: 0 orphans of 4,933
- ✓ screening_expected.customer_id -> customers.customer_id: 0 orphans of 63
- ✓ str_reports.case_id -> cases.case_id: 0 orphans of 216
- ✓ transactions.ring_id -> rings
- ✓ a transaction's customer owns its account
- ✓ no transaction before its account opened: 0 early
- ✓ no account opened before its customer was onboarded
- ✓ a case opens on or after its first alert
- ✓ a case closes on or after it opened
- ✓ every SAR is filed after its case opened
- ✓ every SAR is filed on a closed case or one still open
- ✓ no label known before its transaction
- ✓ a sanctioned customer is frozen within a day of the listing: 3 frozen
- ✓ only a frozen customer's debits after the freeze are blocked, and all of those are: 17 blocked
- ✓ the accounts of a frozen customer, and only those, read frozen
- ✓ an alert is reviewed after it was raised
- ✓ every reviewed alert names its analyst; a pending one has neither
- ✓ queued alerts are reviewed on working days in office hours: 0 outside
- ✓ cases open only from escalated alerts
- ✓ a case opens after its first alert was escalated
- ✓ every STR is filed on a banking day in office hours: 0 outside
- ✓ an STR is filed at least an hour after its case opened
- ✓ no customer is reported twice within 90 days (continuing activity is covered by the earlier report): 12 repeat reports
- ✓ a reported customer is rated high now
- ✓ every freeze is reported (Fund Freeze Report) within two business days: 3 reports, slowest 0 business days
- ✓ a closing day is on closed accounts only (or frozen ones closed before)
- ✓ nothing posts to an account after it closed: 0 after
- ✓ every Emirates ID has the card's layout and a check digit that cannot verify (never a real number): 7,170 ids
- ✓ no firm has an Emirates ID, a sex, a birth date or a visa
- ✓ every firm has a trade licence and its licensing authority, and only firms
- ✓ no payment reaches a country the FATF calls for countermeasures against (Iran, North Korea)
- ✓ a foreign-currency account's transactions are in its currency, and only those: 221,596 in EUR, GBP, USD
- ✓ an alert's trigger transaction is its customer's: 6,947 of 6,947 alerts linked
- ✓ an app or web payment follows a login by the same customer: 100.0%
- ✓ a payee is registered before it is first paid: 368,068 payees
- ✓ a takeover's payee is added from the new device minutes after it logged in: 28 payees
- ✓ every goAML report parses as XML: 216 files
- ✓ every goAML report is for a case with a SAR
- ✓ taking part in crime is independent of nationality: p = 0.183; AE 4.1%, BD 5.5%, CN 3.9%, EG 3.2%, IN 3.6%, LK 5.0%, PH 3.3%, PK 5.4%, other 3.7%
- ✓ taking part in crime is independent of sex: p = 0.419; Female 3.8%, Male 4.2%
- ✓ honest residents who are not citizens are alerted alike whatever their nationality: p = 0.086; BD 20.3%, CN 18.8%, EG 17.7%, IN 17.5%, LK 22.6%, PH 19.5%, PK 22.0%, other 20.4%
- ✓ honest customers alerted, citizens against everyone else: 22.0% against 19.4% (behaviour differs only where published figures say it does: income, and money sent home)
- ✓ alerts that are false positives (published 90-98%: SynthAML/Spar Nord, AMLGentex): 91.6%
- ✓ reviewed alerts escalated to a case (published 10-20%): 11.0%
- ✓ launderers the bank reported (customer-level recall): 55.9%
- ✓ alerts that become a SAR (published 1-15%, typical 1-5%): 3.1%
- ✓ truly suspicious share of transactions (public sets 0.10-0.2%): 0.103%
- ✓ STR filed within 10 days of detection, the analyst's escalation (UAE: report without delay): median 5, max 10 days
- ✓ days from the first alert's raising to the SAR, its time in the queue included: median 13, 90th pct 22, max 28
- ✓ alerts per alerted customer (skewed in SynthAML): median 2, max 20, top 10% of customers hold 40.2%
- ✓ truly suspicious transactions the bank's records label: 57.0% (the rest were never found)
- ✓ honest transactions labelled suspicious anyway: 366, 5.0% of the truly suspicious count
- ✓ days from a suspicious transaction to its label: median 84, max 459
- ✓ structuring piles up just under the AED 55,000 line; honest cash does not: 53.3% of structuring cash deposits within 20% under it vs 0.03% of honest ones
- ✓ structuring never crosses the line it is avoiding
- ✓ mule value leaving after the last deposit (Lloyds: 28% / 53% / 85%+): 28.5% within 15 min, 43.9% within 1 h, 74.0% within 24 h
- ✓ honest amounts follow Benford's first digit (Nigrini MAD < 0.012): MAD 0.0043
- ✓ suspicious amounts against Benford (they conform less in real data, Monese study): MAD 0.0139
- ✓ customers per counterparty (heavy-tailed; Fedwire gamma about 2.1): median 5, max 7616, tail exponent 2.09 above 5
- ✓ weekend share by channel: atm 21.0%, branch 0.0%, card 19.6%, card_not_present 28.4%, cheque 0.0%, mobile 10.0%, online 6.4%, wire 1.2%
- ✓ people's card purchases per day by weekday, Mon to Sun (1.00 is the average day): 1.00 1.01 1.01 1.00 0.99 1.00 1.00
- ✓ people's card purchases on Eid days against an ordinary day: 0.98x over 9 days
- ✓ people's card purchases after 8pm, in Ramadan / the rest of the year: 35.6% / 26.4%
- ✓ ATM withdrawals: median 200 AED, 97.0% in whole hundreds
- ✓ no card draws more than AED 10,000 from ATMs in a day (the usual UAE daily limit): largest day 10,000
- ✓ share of pay wired abroad, median by pay quarter (lowest to highest): 30.2% 24.5% 15.8% 4.2%
- ✓ hours from alert to analyst review: median 177, 90th pct 364, max 563
- ✓ channel mix by count / by value: mobile 30.0%/19.8%, online 26.6%/35.9%, card 17.4%/0.9%, wire 12.1%/40.0%, atm 6.0%/1.6%, card_not_present 5.6%/0.3%, branch 2.2%/0.8%, cheque 0.2%/0.8%
- ✓ drift: crypto_offramp first appears from 2026-02: first seen 2026-04-13
- ✓ drift: app_scam first appears from 2026-04: first seen 2026-04-16
- ✓ typologies present: 16: account_takeover, app_scam, bust_out, card_testing, cash_commingling, crypto_offramp, cuckoo_smurfing, dormant_reactivation, funnel_account, layering, mule_funnel, pep_flows, round_tripping, structuring, synthetic_identity, trade_based
- ✓ customers by segment: retail 7,390, small_business 1,709, corporate 702, private_banking 199
- ✓ politically exposed persons: 122 (1.22%)
- ✓ honest look-alikes are never on a truly suspicious transaction: 100 look-alikes
- ✓ planted sanctions-screening pairs: false_positive 60, true_match 3
- ✓ every customer was an adult when onboarded: youngest 18.0 years
- ✓ dormant accounts have had no activity for a year: 0 of 1192 active within the year
- ✓ closed accounts stop before the data ends: 100.0% stopped
- ✓ no pile-up of labels at a midnight: 0 labels at exactly 00:00:00
- ✓ a new device is not a sign of takeover on its own: 51,429 new-device logins, 0.0% of them takeovers
- ✓ declined payments are mostly honest: 18,712 declined, 0.6% suspicious
- ✓ a transfer to another customer's account is mostly honest: 94,021 on-us transfers, 0.19% suspicious
- ✓ honest foreign corridors: India 25.5%, Pakistan 13.3%, Bangladesh 7.5%, Philippines 6.6%, Egypt 5.1%, Hong Kong 4.2%, Saudi Arabia 2.6%, Spain 2.2%
- ✓ most transactions at one second: 135 at 2026-10-29 08:47:43 (salary_credit)
- ✓ transactions.amount alone does not give the label away: average precision 0.019 (base rate 0.0010), AUC 0.867
- ✓ transactions.amount_base alone does not give the label away: average precision 0.019 (base rate 0.0010), AUC 0.867
- ✓ transactions.amount_own alone does not give the label away: average precision 0.018 (base rate 0.0010), AUC 0.864
- ✓ transactions.txn_type alone does not give the label away: average precision 0.007 (base rate 0.0010), AUC 0.879
- ✓ transactions.location alone does not give the label away: average precision 0.006 (base rate 0.0010), AUC 0.738
- ✓ transactions.channel alone does not give the label away: average precision 0.005 (base rate 0.0010), AUC 0.806
- ✓ transactions.is_cash alone does not give the label away: average precision 0.004 (base rate 0.0010), AUC 0.733
- ✓ transactions.counterparty_country alone does not give the label away: average precision 0.002 (base rate 0.0010), AUC 0.660
- ✓ transactions.direction alone does not give the label away: average precision 0.002 (base rate 0.0010), AUC 0.678
- ✓ transactions.currency alone does not give the label away: average precision 0.001 (base rate 0.0010), AUC 0.521
- ✓ transactions.status alone does not give the label away: average precision 0.001 (base rate 0.0010), AUC 0.507
- ✓ transactions.beneficiary_account_id alone does not give the label away: average precision 0.001 (base rate 0.0010), AUC 0.506
- ✓ transactions.txn_at alone does not give the label away: average precision 0.001 (base rate 0.0010), AUC 0.507
- ✓ transactions.txn_type: no value is mostly crime: worst cash_deposit at 1.05% of 303,859
- ✓ transactions.direction: no value is mostly crime: worst credit at 0.20% of 2,791,811
- ✓ transactions.channel: no value is mostly crime: worst branch at 0.93% of 156,137
- ✓ transactions.currency: no value is mostly crime: worst USD at 0.28% of 124,717
- ✓ transactions.amount_base: no value is mostly crime: worst <set> at 0.10% of 7,116,298
- ✓ transactions.counterparty_country: no value is mostly crime: worst Russia at 3.70% of 594
- ✓ transactions.is_cash: no value is mostly crime: worst True at 0.69% of 583,733
- ✓ transactions.location: no value is mostly crime: worst Abu Dhabi at 0.98% of 99,328
- ✓ transactions.status: no value is mostly crime: worst declined at 0.63% of 18,712
- ✓ transactions.beneficiary_account_id: no value is mostly crime: worst <set> at 0.19% of 94,021
- ✓ transactions.amount_own: no value is mostly crime: worst <set> at 0.10% of 7,116,298
Tables
16 tables, 11,621,027 rows
Every table in the zip with what it holds, its rows and its columns. The bars are on a log scale, so the small reference tables still show.
- transactionsEvery movement: channel, type, direction, amount, cash flag, counterparty country, status (approved, declined, or blocked under a sanctions freeze); the truth (
is_suspicious,typology,ring_id), what the bank's records show (label_observed,labelled_at), andlookalike_offor honest activity that resembles a scheme7,116,298 rows · 22 cols - loginsOnline and mobile banking logins with device ids, one opening each session a payment is made in and others that only look: customers change phones and browsers, and a takeover arrives on a new device among many honest ones4,069,456 rows · 8 cols
- payeesEach payee a customer registered before first paying them, when and through which channel; a takeover's payee is added from the new device minutes after it logged in368,068 rows · 9 cols
- counterpartiesThe people, firms, banks and exchange houses on the other side of payments, each named as its own country names it, with country25,000 rows · 5 cols
- accountsCurrent, savings, business and foreign-currency accounts with UAE-format IBANs (valid check digits, never live) and BIC; status active, dormant, closed (with the day it closed) or frozen17,282 rows · 10 cols
- customersRetail, small-business, corporate and private-banking customers: KYC risk rating at onboarding and its reason, the rating as it stands now (raised after a report), PEP flag and PEP ownership, nationality, residency and visa, Emirates ID, occupation, income, the monthly volume they declared at onboarding, onboarding channel; for a firm its trade licence and licensing authority, office or yard and company email; and the truth (
is_suspicious)10,000 rows · 34 cols - alertsWhat the monitoring rules raised: rule, score, the transaction it fired on, the first-line review (analyst, when the queue reached it, escalated or closed as a false positive), and the truth (
is_true_positive,typology)6,947 rows · 12 cols - beneficial_ownersThe people who own or control each business customer, with their share4,933 rows · 9 cols
- watchlist_aliasesSpelling variants, transliterations and aliases of watchlist names861 rows · 5 cols
- casesInvestigations opened from escalated alerts: opened, closed, investigator, alerts taken in, outcome (closed, escalated, STR filed, or covered by a report filed in the last 90 days), filing date and confirmed typology708 rows · 11 cols
- watchlistA sanctions-style watchlist of invented names500 rows · 10 cols
- ring_membersWho was in each scheme and their role: principal, mule, pass-through, victim, unwitting beneficiary384 rows · 5 cols
- str_reportsOne goAML suspicious transaction report per filing, the XML file next to it in
goaml/: reporting officer, the customer as goAML holds them (Emirates ID or trade licence), the grounds written out, and the transactions reported216 rows · 6 cols - ringsEvery scheme planted: typology, kind, start, end, accounts, transactions, amount, parameters211 rows · 11 cols
- lookalikesHonest customers whose behaviour resembles a typology, and what it resembles100 rows · 4 cols
- screening_expectedPlanted pairs between customers and the watchlist, with the decision a screener should reach and, for a confirmed match, when the customer was frozen and when the freeze was reported (a Fund Freeze Report within two business days)63 rows · 11 cols
Explore
Every table, profiled
Each column's type, spread, empties and most common values, measured from the full CSVs. Switch to the first rows to see the data as it sits in the file.
transactions.csv
7,116,298 rows · 22 columns · 5 foreign keys
- card_purchase17%
- transfer_in14%
- supplier_payment14%
- transfer_out13%
- customer_receipt8.9%
- 11 more values · 32%
- debit61%
- credit39%
- mobile30%
- online27%
- card17%
- wire12%
- atm6.0%
- 3 more values · 7.9%
- AED97%
- USD1.8%
- EUR0.8%
- GBP0.5%
- United Arab Emirates97%
- India0.8%
- Pakistan0.4%
- Bangladesh0.2%
- Philippines0.2%
- 31 more values · 1.5%
- cash_commingling38%
- mule_funnel20%
- synthetic_identity9.0%
- funnel_account7.4%
- bust_out5.3%
- 11 more values · 20%
- Dubai38%
- Abu Dhabi17%
- Sharjah16%
- Ajman9.7%
- Al Ain9.3%
- 3 more values · 9.6%
- approved100%
- declined0.3%
- blocked<0.1%
- mule_funnel21%
- cash_commingling11%
- funnel_account11%
- structuring9.8%
- dormant_reactivation8.5%
- 10 more values · 39%
- cash_commingling49%
- mule_funnel13%
- funnel_account9.8%
- bust_out5.9%
- dormant_reactivation5.4%
- 11 more values · 17%
Keys
Every join resolves
28 foreign keys, 23,888,869 references checked against the table each one points at. None points at a row that does not exist.
accounts
- customer_idcustomers.customer_id17,282 rows checked0 orphans
alerts
- customer_idcustomers.customer_id6,947 rows checked0 orphans
- account_idaccounts.account_id6,947 rows checked0 orphans
- trigger_transaction_idtransactions.transaction_id6,947 rows checked0 orphans
beneficial_owners
- customer_idcustomers.customer_id4,933 rows checked0 orphans
cases
- customer_idcustomers.customer_id708 rows checked0 orphans
- first_alert_idalerts.alert_id708 rows checked0 orphans
logins
- customer_idcustomers.customer_id4,069,456 rows checked0 orphans
- ring_idrings.ring_id2,652 rows checked0 orphans
lookalikes
- customer_idcustomers.customer_id100 rows checked0 orphans
payees
- customer_idcustomers.customer_id368,068 rows checked0 orphans
- counterparty_idcounterparties.counterparty_id274,470 rows checked0 orphans
- beneficiary_account_idaccounts.account_id93,598 rows checked0 orphans
- ring_idrings.ring_id699 rows checked0 orphans
ring_members
- ring_idrings.ring_id384 rows checked0 orphans
- customer_idcustomers.customer_id384 rows checked0 orphans
- account_idaccounts.account_id384 rows checked0 orphans
rings
- primary_customer_idcustomers.customer_id211 rows checked0 orphans
screening_expected
- customer_idcustomers.customer_id63 rows checked0 orphans
- entry_idwatchlist.entry_id63 rows checked0 orphans
str_reports
- case_idcases.case_id216 rows checked0 orphans
- customer_idcustomers.customer_id216 rows checked0 orphans
transactions
- account_idaccounts.account_id7,116,298 rows checked0 orphans
- customer_idcustomers.customer_id7,116,298 rows checked0 orphans
- counterparty_idcounterparties.counterparty_id4,698,633 rows checked0 orphans
- ring_idrings.ring_id7,322 rows checked0 orphans
- beneficiary_account_idaccounts.account_id94,021 rows checked0 orphans
watchlist_aliases
- entry_idwatchlist.entry_id861 rows checked0 orphans
In the zip
What you get
- CSVs: one file per table, with a header row and ISO dates.
- README.md: what each table holds, how the data behaves (measured), what was checked and what to know.
- INTEGRITY.json: the 111 audit checks and their results.
- RECIPE.json: the Misata blueprint that made these exact rows, seed 20261029.
All 235 files
- customers.csv3.6 MB
- beneficial_owners.csv363 KB
- accounts.csv1.5 MB
- counterparties.csv1.6 MB
- transactions.csv918.7 MB
- logins.csv238.5 MB
- payees.csv17.7 MB
- alerts.csv875 KB
- cases.csv70 KB
- str_reports.csv12 KB
- rings.csv24 KB
- ring_members.csv12 KB
- lookalikes.csv7 KB
- watchlist.csv85 KB
- watchlist_aliases.csv42 KB
- screening_expected.csv10 KB
- goaml/STR-case-1.xml3 KB
- goaml/STR-case-10.xml12 KB
- goaml/STR-case-102.xml30 KB
- goaml/STR-case-107.xml5 KB
- goaml/STR-case-11.xml15 KB
- goaml/STR-case-110.xml33 KB
- goaml/STR-case-116.xml4 KB
- goaml/STR-case-120.xml5 KB
- goaml/STR-case-124.xml6 KB
- goaml/STR-case-126.xml5 KB
- goaml/STR-case-128.xml3 KB
- goaml/STR-case-129.xml33 KB
- goaml/STR-case-13.xml31 KB
- goaml/STR-case-130.xml33 KB
- goaml/STR-case-132.xml5 KB
- goaml/STR-case-137.xml30 KB
- goaml/STR-case-144.xml15 KB
- goaml/STR-case-145.xml33 KB
- goaml/STR-case-150.xml32 KB
- goaml/STR-case-152.xml17 KB
- goaml/STR-case-153.xml30 KB
- goaml/STR-case-155.xml5 KB
- goaml/STR-case-159.xml13 KB
- goaml/STR-case-160.xml5 KB
- goaml/STR-case-161.xml33 KB
- goaml/STR-case-171.xml30 KB
- goaml/STR-case-172.xml8 KB
- goaml/STR-case-179.xml33 KB
- goaml/STR-case-180.xml17 KB
- goaml/STR-case-194.xml33 KB
- goaml/STR-case-200.xml3 KB
- goaml/STR-case-208.xml8 KB
- goaml/STR-case-211.xml11 KB
- goaml/STR-case-215.xml7 KB
- goaml/STR-case-218.xml33 KB
- goaml/STR-case-220.xml9 KB
- goaml/STR-case-221.xml33 KB
- goaml/STR-case-222.xml33 KB
- goaml/STR-case-225.xml12 KB
- goaml/STR-case-227.xml3 KB
- goaml/STR-case-232.xml20 KB
- goaml/STR-case-240.xml33 KB
- goaml/STR-case-241.xml6 KB
- goaml/STR-case-243.xml30 KB
- goaml/STR-case-248.xml33 KB
- goaml/STR-case-253.xml31 KB
- goaml/STR-case-259.xml32 KB
- goaml/STR-case-260.xml30 KB
- goaml/STR-case-263.xml32 KB
- goaml/STR-case-270.xml30 KB
- goaml/STR-case-276.xml4 KB
- goaml/STR-case-28.xml8 KB
- goaml/STR-case-280.xml9 KB
- goaml/STR-case-283.xml14 KB
- goaml/STR-case-285.xml5 KB
- goaml/STR-case-295.xml15 KB
- goaml/STR-case-297.xml33 KB
- goaml/STR-case-306.xml29 KB
- goaml/STR-case-307.xml18 KB
- goaml/STR-case-313.xml33 KB
- goaml/STR-case-314.xml3 KB
- goaml/STR-case-315.xml4 KB
- goaml/STR-case-32.xml5 KB
- goaml/STR-case-325.xml32 KB
- goaml/STR-case-327.xml4 KB
- goaml/STR-case-328.xml32 KB
- goaml/STR-case-33.xml4 KB
- goaml/STR-case-331.xml30 KB
- goaml/STR-case-332.xml29 KB
- goaml/STR-case-338.xml3 KB
- goaml/STR-case-34.xml31 KB
- goaml/STR-case-340.xml9 KB
- goaml/STR-case-342.xml19 KB
- goaml/STR-case-347.xml5 KB
- goaml/STR-case-348.xml4 KB
- goaml/STR-case-35.xml4 KB
- goaml/STR-case-350.xml11 KB
- goaml/STR-case-351.xml5 KB
- goaml/STR-case-354.xml3 KB
- goaml/STR-case-355.xml3 KB
- goaml/STR-case-358.xml8 KB
- goaml/STR-case-36.xml4 KB
- goaml/STR-case-364.xml28 KB
- goaml/STR-case-366.xml33 KB
- goaml/STR-case-37.xml5 KB
- goaml/STR-case-372.xml33 KB
- goaml/STR-case-373.xml5 KB
- goaml/STR-case-375.xml33 KB
- goaml/STR-case-38.xml5 KB
- goaml/STR-case-381.xml25 KB
- goaml/STR-case-383.xml33 KB
- goaml/STR-case-39.xml31 KB
- goaml/STR-case-392.xml13 KB
- goaml/STR-case-395.xml9 KB
- goaml/STR-case-396.xml15 KB
- goaml/STR-case-397.xml30 KB
- goaml/STR-case-400.xml30 KB
- goaml/STR-case-401.xml9 KB
- goaml/STR-case-403.xml32 KB
- goaml/STR-case-405.xml25 KB
- goaml/STR-case-406.xml10 KB
- goaml/STR-case-408.xml8 KB
- goaml/STR-case-412.xml33 KB
- goaml/STR-case-417.xml29 KB
- goaml/STR-case-42.xml33 KB
- goaml/STR-case-422.xml26 KB
- goaml/STR-case-428.xml8 KB
- goaml/STR-case-434.xml22 KB
- goaml/STR-case-442.xml33 KB
- goaml/STR-case-443.xml5 KB
- goaml/STR-case-447.xml5 KB
- goaml/STR-case-449.xml5 KB
- goaml/STR-case-453.xml12 KB
- goaml/STR-case-455.xml8 KB
- goaml/STR-case-457.xml22 KB
- goaml/STR-case-460.xml33 KB
- goaml/STR-case-465.xml33 KB
- goaml/STR-case-466.xml33 KB
- goaml/STR-case-470.xml32 KB
- goaml/STR-case-471.xml6 KB
- goaml/STR-case-473.xml9 KB
- goaml/STR-case-478.xml33 KB
- goaml/STR-case-482.xml33 KB
- goaml/STR-case-486.xml30 KB
- goaml/STR-case-49.xml33 KB
- goaml/STR-case-490.xml10 KB
- goaml/STR-case-493.xml29 KB
- goaml/STR-case-499.xml17 KB
- goaml/STR-case-5.xml3 KB
- goaml/STR-case-501.xml12 KB
- goaml/STR-case-508.xml6 KB
- goaml/STR-case-512.xml33 KB
- goaml/STR-case-518.xml25 KB
- goaml/STR-case-522.xml16 KB
- goaml/STR-case-527.xml4 KB
- goaml/STR-case-530.xml33 KB
- goaml/STR-case-534.xml3 KB
- goaml/STR-case-536.xml6 KB
- goaml/STR-case-537.xml3 KB
- goaml/STR-case-538.xml33 KB
- goaml/STR-case-539.xml5 KB
- goaml/STR-case-54.xml11 KB
- goaml/STR-case-540.xml5 KB
- goaml/STR-case-542.xml4 KB
- goaml/STR-case-543.xml7 KB
- goaml/STR-case-544.xml33 KB
- goaml/STR-case-548.xml29 KB
- goaml/STR-case-555.xml33 KB
- goaml/STR-case-558.xml14 KB
- goaml/STR-case-565.xml17 KB
- goaml/STR-case-567.xml33 KB
- goaml/STR-case-568.xml6 KB
- goaml/STR-case-570.xml8 KB
- goaml/STR-case-571.xml3 KB
- goaml/STR-case-572.xml3 KB
- goaml/STR-case-573.xml6 KB
- goaml/STR-case-575.xml33 KB
- goaml/STR-case-576.xml5 KB
- goaml/STR-case-577.xml3 KB
- goaml/STR-case-586.xml31 KB
- goaml/STR-case-589.xml33 KB
- goaml/STR-case-59.xml8 KB
- goaml/STR-case-592.xml30 KB
- goaml/STR-case-593.xml32 KB
- goaml/STR-case-597.xml20 KB
- goaml/STR-case-599.xml30 KB
- goaml/STR-case-608.xml33 KB
- goaml/STR-case-61.xml32 KB
- goaml/STR-case-610.xml5 KB
- goaml/STR-case-611.xml33 KB
- goaml/STR-case-622.xml17 KB
- goaml/STR-case-623.xml33 KB
- goaml/STR-case-624.xml33 KB
- goaml/STR-case-626.xml33 KB
- goaml/STR-case-629.xml14 KB
- goaml/STR-case-633.xml15 KB
- goaml/STR-case-635.xml25 KB
- goaml/STR-case-636.xml30 KB
- goaml/STR-case-639.xml33 KB
- goaml/STR-case-640.xml5 KB
- goaml/STR-case-641.xml11 KB
- goaml/STR-case-643.xml8 KB
- goaml/STR-case-646.xml33 KB
- goaml/STR-case-649.xml33 KB
- goaml/STR-case-655.xml28 KB
- goaml/STR-case-657.xml33 KB
- goaml/STR-case-658.xml29 KB
- goaml/STR-case-659.xml33 KB
- goaml/STR-case-661.xml3 KB
- goaml/STR-case-667.xml33 KB
- goaml/STR-case-668.xml11 KB
- goaml/STR-case-679.xml33 KB
- goaml/STR-case-680.xml33 KB
- goaml/STR-case-681.xml20 KB
- goaml/STR-case-682.xml14 KB
- goaml/STR-case-684.xml20 KB
- goaml/STR-case-69.xml33 KB
- goaml/STR-case-690.xml17 KB
- goaml/STR-case-694.xml17 KB
- goaml/STR-case-695.xml19 KB
- goaml/STR-case-697.xml22 KB
- goaml/STR-case-701.xml20 KB
- goaml/STR-case-702.xml32 KB
- goaml/STR-case-705.xml33 KB
- goaml/STR-case-706.xml4 KB
- goaml/STR-case-72.xml14 KB
- goaml/STR-case-77.xml8 KB
- goaml/STR-case-79.xml32 KB
- goaml/STR-case-8.xml8 KB
- goaml/STR-case-84.xml4 KB
- goaml/STR-case-86.xml4 KB
- goaml/STR-case-87.xml5 KB
- goaml/STR-case-90.xml5 KB
- goaml/STR-case-91.xml5 KB
- goaml/STR-case-93.xml4 KB
- goaml/STR-case-94.xml31 KB
- README.md18 KB
- INTEGRITY.json24 KB
- RECIPE.json2 KB
Before you use it
Things to know
- Everything is synthetic: customers, names, nationalities, companies, accounts and the watchlist. The mix of nationalities, names, pay and other group patterns is an approximation from the little public information available, made for realism; it is not the true distribution of the UAE's population or of any bank's customers. IBANs and BICs have valid check digits but belong to no real account. No real person or institution is represented.
- This is test and teaching data. It is not evidence that a model will catch real criminals, and it does not make any system compliant with any regulation.
is_suspiciousis the truth;label_observedis what the bank knew, andlabelled_atwhen it knew it (empty if the label had not arrived by the end of the data). Use the truth to score and the observed label to train, as a bank must.- Amounts are in UAE dirhams (AED) except on a foreign-currency account. The UAE has no US-style cash transaction report; structuring here stays under the AED 55,000 due-diligence line for occasional transactions (Cabinet Decision No. 10 of 2019, Art. 6(2)). Cabinet Resolution No. 134 of 2025 replaced that decision from 14 December 2025 and its figure is not confirmed here.
cases.sar_filedandsar_filed_atrecord a suspicious transaction report filed with the UAE FIU by the reporting officer on a banking day; the 1-10 day lag after detection (an analyst's escalation) is a modelling assumption for "without delay", as no published distribution exists. Continuing activity is covered by a report for 90 days before it is reported again.- A foreign-currency account moves its own currency (
currency);amount_baseis every amount in dirhams, as monitoring reads it. goAML indicator codes markedSYN-are the dataset's own and stand for the FIU's lookup codes. labelled_atlater than the data's end means the label arrives after the cut-off;label_observedis empty there.- Truth columns are for scoring, never for training:
is_suspicious,typology,ring_idandlookalike_ofon transactions;customers.is_suspicious;alerts.is_true_positiveandalerts.typology;typologyandring_idon logins and payees; and the rings, ring_members, lookalikes and screening_expected tables. customers.is_suspiciousmarks a laundering principal. A fraud's principal, a mule or a victim can carry suspicious transactions without it: for a label per customer, use whether any of their transactions is suspicious.label_observedandlabelled_at, and an alert's first-line disposition, are the bank's own records: train on those.- Alerts come from rules a bank would run, not from the truth, so most are false positives and some crime raises none.
- The bank reports 55.9% of its launderers. A launderer whose story holds at first-line review (real invoices behind a trade, takings a cash business declared, a PEP's declared wealth) has every alert closed, as an honest customer's would be. How much monitoring misses is not published: the order of the schemes follows FATF's account of which are hardest to see, with trade-based laundering the hardest, and the shares are assumptions.
Questions
Before you buy
Is this real data?
What do I get?
Can I try it before buying?
How was it checked?
Can I use it commercially?
What should I know before using it?
Can I get a bigger or different version?
Want it bigger, in another setting, or with your own columns? Have us build it or make it in Studio.
More premium datasets
All 8Weekly sales, at regular price and on promotion
Grocery chain, 10 stores, fiscal 2024 and 2025
Two fiscal years of a grocery chain, from the shelf to the receipt
Answer key
- baseline_units
- price_effect
- promo_lift
- +7 more
- Rows
- 2,790,852
- Tables
- 14
- Checks
- 117 of 117
Free preview18-question projectProfile and previewAn X-bar chart with the truth underneath: flatness, characteristic 139
3 plants, 36 CNC machines, six months
Six months of control charts with the ground truth underneath
Answer key
- active_cause_id
- true_cause_shift_sigma
- true_tool_wear_sigma
- +6 more
- Rows
- 515,442
- Tables
- 15
- Checks
- 101 of 101
Free preview18-question projectProfile and previewVibration through a life that ends in failure
240 machines at 4 plants, two years
Two years of sensor readings, failures, repairs and costs for 240 machines
Answer key
- failure_mode
- true_life_days
- true_failure_at
- +6 more
- Rows
- 179,004
- Tables
- 6
- Checks
- 68 of 68
Free preview18-question projectProfile and preview

