Anti Money Laundering Transaction Monitoring Set (GB)

FINAML997· 1.5M records · 41 tables · v1.0.0 · Updated 2026-09-01
Finance Financial Crime and Compliance Dataset API
CSV JSON SQLanti-money-launderingtransaction-monitoringfinancial-crimeamlbeneficial-ownershipsanctions-screeningsartypologiescorrespondent-bankinguk-banking

Overview

FINAML997 follows a synthetic United Kingdom corporate bank from customer onboarding and beneficial ownership through everyday payment activity, cash, trade finance, transaction monitoring, investigation, suspicious activity reporting and the defence against money laundering consent regime. Forty-one linked tables cover the customer book with effective-dated addresses, identifiers, due diligence reviews and screening hits; a beneficial ownership graph of more than eleven thousand edges linking corporates to the individuals and holding companies behind them; every account carrying a full IBAN whose check digits are real modulo-97 digits over its own sort code and account number; and a payment spine of six hundred thousand movements across SWIFT MT103, SEPA, CHAPS, Faster Payments, cash and internal book transfers. The unit of suspicion here is not the transaction. A single payment inside a structuring run looks completely ordinary; only the run is suspicious, and only in the context of the entity making it. So the ground truth is a laundering pattern: an entity, a typology and a window, with every payment that fell inside it. Fourteen typologies are represented across placement, layering and integration, from structuring and smurfing kept under the reporting line, through rapid pass-through and layering chains routed via offshore centres, to trade-based over-invoicing, phantom shipment, mule networks and shell-company ownership. Beside the truth sits what the bank's own rules actually fired. Around thirty-one thousand alerts at roughly four percent precision is an order of magnitude worse than a card estate, and that is not a defect: transaction monitoring lives with single-figure precision because the base rate is lower and the rules are cruder. A model trained against a cleaner alert queue than this one will not survive contact with a real operations floor. Country risk uses the real FATF call-for-action and increased-monitoring designations, which are public record, and SIC section letters carry the industry risk a money laundering reporting officer would apply. Identifiers come from keyed hashes rather than counters, so no column runs 0001, 0002, 0003 and no model can learn the ordering instead of the signal.

Analytics

Four entries from the packaged tables, with the performance the dataset records for them. Every value below is read from the shipped files.

PlacementPLACEstructuring, smurfing and cash fronts
94Laundering patterns
94Entities flagged
GBP 24,861,028Laundered value
481SARs filed
Laundered payments, countLaundered payments, count
1 / 4

Row Counts by Table

Counted from the files that ship, not estimated.

TableRows
aml_entities5,000
aml_entity_addresses6,063
aml_entity_identifiers8,196
aml_ownership6,174
aml_officers6,207
aml_risk_assessments15,401
aml_screening_hits558
aml_accounts8,130
aml_signatories14,353
aml_counterparties22,000
aml_payments614,851
aml_cash_transactions221,140
aml_trade_documents12,000
aml_laundering_labels3,882
aml_alerts30,927
aml_alert_rule_hits47,184
aml_cases4,329
aml_case_actions21,574
aml_sars481
aml_daml_requests75
aml_escalations387
aml_entity_monthly_flows210,000
aml_corridor_monthly909
aml_account_monthly_balances195,120
aml_correspondent_banks20
aml_branches29
aml_relationship_managers120
aml_typologies14
aml_rules16
aml_risk_bands4
aml_entity_types10
aml_industries18
aml_product_types7
aml_payment_types9
aml_sar_reasons6
aml_screening_lists9
aml_relationship_types9
aml_id_document_types7
aml_cities20
aml_countries38
aml_currencies24

Table Relationships

One parent record and seven child tables, each joined back on the same key.

70%
Loading diagram

Schema

Every table ships with typed columns, referential integrity, and documentation.

aml_entities· Rows: 5,000
ColumnTypeDescription
entity_idvarchar(24)Entity key. Primary key of the customer book and the foreign key on everything that hangs off a customer, including the ownership graph on both sides.
entity_numbervarchar(16)Customer number as it appears on correspondence. Sparse, so it carries no information about when the relationship opened.
entity_namevarchar(56)Registered or personal name. Generated from British corporate and personal name morphology; no row names a real party.
entity_typevarchar(32)Legal form. Joins aml_entity_types.
is_corporatevarchar(16)True for a company, partnership, trust or other legal arrangement; false for a natural person. Individuals and corporates share this table because ownership, control and payment all cross between them.
sic_sectionvarchar(8)Declared industry, empty for individuals. Joins aml_industries.
registered_countryvarchar(16)Where the entity is registered, which is not always where it trades. A UK-trading company registered in a secrecy jurisdiction is the shell-layering signal.

+10 more columns in aml_entities. The full schema ships with the download.

aml_entity_addresses· Rows: 6,063
ColumnTypeDescription
address_idvarchar(24)Stable identifier for address; use it for declared joins.
entity_idvarchar(24)Stable identifier for entity; use it for declared joins.
address_line_1varchar(32)Street and building number.
city_namevarchar(24)Human-readable city name. All people and organisations are modelled.
city_idvarchar(16)Stable identifier for city; use it for declared joins.
postcodevarchar(16)UK postcode in the real format, with an area that genuinely serves the town and a district inside that area real range.
country_codevarchar(8)ISO 3166-1 alpha-2 country code.

+4 more columns in aml_entity_addresses. The full schema ships with the download.

aml_entity_identifiers· Rows: 8,196
ColumnTypeDescription
identifier_idvarchar(24)Stable identifier for identifier; use it for declared joins.
entity_idvarchar(24)Stable identifier for entity; use it for declared joins.
document_typevarchar(24)Kind of identifier held. Joins aml_id_document_types.
identifier_valuevarchar(32)The document or registration number. Generated, and in no real registry.
issuing_countryvarchar(16)Which country issued it.
recorded_ondaterecorded on as an ISO 8601 calendar date.
aml_ownership· Rows: 6,174
ColumnTypeDescription
ownership_idvarchar(24)One edge of the beneficial ownership graph.
entity_idvarchar(24)The owned entity.
holder_entity_idvarchar(24)The holder, which is itself a row in aml_entities. Both ends point at the same table, so a chain through several corporate holders can be walked, which is exactly what a shell-layering rule needs.
relationship_typevarchar(16)Nature of the holding: ubo above the twenty five percent threshold, otherwise shareholder, parent or nominee. Joins aml_relationship_types.
holding_pctintegerPercentage held. Twenty five percent is the threshold at which a holder becomes a beneficial owner under the UK regulations.
holder_is_corporatevarchar(16)Whether this link is to a company rather than a person. A chain that never terminates in a natural person is the opacity a rule is looking for.
effective_fromdateeffective from as an ISO 8601 calendar date.

+1 more columns in aml_ownership. The full schema ships with the download.

aml_officers· Rows: 6,207
ColumnTypeDescription
officer_idvarchar(24)A person exercising control over an entity.
entity_idvarchar(24)Stable identifier for entity; use it for declared joins.
person_entity_idvarchar(24)The natural person, as a row in aml_entities.
relationship_typevarchar(16)Nature of the control: director, signatory, trustee or settlor. Joins aml_relationship_types.
appointed_ondateappointed on as an ISO 8601 calendar date.
resigned_ondateEmpty while the appointment stands. A cluster of resignations before a spike in flow is a pattern worth a feature.
aml_risk_assessments· Rows: 15,401
ColumnTypeDescription
assessment_idvarchar(24)One due diligence review.
entity_idvarchar(24)Stable identifier for entity; use it for declared joins.
assessed_ondateassessed on as an ISO 8601 calendar date.
risk_bandvarchar(16)Band the review concluded on, which may differ from the band the entity carries now.
risk_scorenumeric(6,2)Composite score the review concluded on, before it was banded.
assessment_triggervarchar(16)onboarding, periodic on the band cadence, or event_driven because something happened.
edd_appliedvarchar(16)Whether enhanced due diligence was applied at this review.

+1 more columns in aml_risk_assessments. The full schema ships with the download.

aml_screening_hits· Rows: 558
ColumnTypeDescription
hit_idvarchar(24)A sanctions, PEP or adverse media match.
entity_idvarchar(24)Stable identifier for entity; use it for declared joins.
list_codevarchar(24)Stable code for list; its companion description carries the meaning.
screened_atvarchar(32)When the screening ran, UTC.
match_scorenumeric(6,3)Name matching confidence, 0 to 1. Fuzzy matching means most hits are not the person.
hit_dispositionvarchar(24)discounted, confirmed or pending_review. The great majority are discounted, which is the normal state of a screening queue and not a failure of it.
match_severityintegerSeverity of the list that matched, copied from aml_screening_lists.

+1 more columns in aml_screening_hits. The full schema ships with the download.

aml_accounts· Rows: 8,130
ColumnTypeDescription
account_idvarchar(24)Account key. Foreign key on every payment, cash movement and monthly balance.
entity_idvarchar(24)Stable identifier for entity; use it for declared joins.
product_typevarchar(32)Account product. Joins aml_product_types.
sort_codevarchar(16)Stable code for sort; its companion description carries the meaning.
account_numbervarchar(16)Eight digit UK account number.
ibanvarchar(32)Full IBAN. The check digits are real ISO 13616 modulo-97 digits over this sort code and account number, so the value validates in any IBAN library.
bicvarchar(16)SWIFT BIC of the issuing bank.

+7 more columns in aml_accounts. The full schema ships with the download.

aml_signatories· Rows: 14,353
ColumnTypeDescription
signatory_idvarchar(24)Who may operate the account.
account_idvarchar(24)Stable identifier for account; use it for declared joins.
person_entity_idvarchar(24)The signatory, as a row in aml_entities.
signatory_rolevarchar(16)primary or joint. Both can operate the account.
authorised_fromdateauthorised from as an ISO 8601 calendar date.
revoked_ondateEmpty while the mandate stands.
aml_counterparties· Rows: 22,000
ColumnTypeDescription
counterparty_idvarchar(24)An external party the book pays or is paid by. Not a customer of this bank.
counterparty_namevarchar(56)Human-readable counterparty name. All people and organisations are modelled.
is_corporatevarchar(16)True for a company, false for a natural person.
country_codevarchar(8)ISO 3166-1 alpha-2 country code.
fatf_statusvarchar(16)The counterparty country FATF designation, copied on because a corridor rule reads it per payment.
is_offshore_centrevarchar(16)Whether the counterparty sits in an offshore financial centre.
account_referencevarchar(24)The counterparty account as it appears on the payment message. Format-correct and in no real registry.

+4 more columns in aml_counterparties. The full schema ships with the download.

aml_payments· Rows: 614,851
ColumnTypeDescription
payment_idvarchar(24)Payment key. Primary key of the spine.
payment_referencevarchar(24)Fourteen character reference as it appears on the message and the statement.
account_idvarchar(24)Stable identifier for account; use it for declared joins.
entity_idvarchar(24)Stable identifier for entity; use it for declared joins.
counterparty_idvarchar(24)Stable identifier for counterparty; use it for declared joins.
payment_typevarchar(24)Instrument used. Joins aml_payment_types.
directionvarchar(16)inbound or outbound from the customer point of view.

+11 more columns in aml_payments. The full schema ships with the download.

aml_cash_transactions· Rows: 221,140
ColumnTypeDescription
cash_idvarchar(24)A cash deposit or withdrawal, which is where placement actually happens and where a payment file cannot see.
account_idvarchar(24)Stable identifier for account; use it for declared joins.
entity_idvarchar(24)Stable identifier for entity; use it for declared joins.
cash_directionvarchar(24)cash_deposit or cash_withdrawal.
transacted_atvarchar(32)When the cash moved, UTC.
transaction_datedatetransaction date as an ISO 8601 calendar date.
transaction_monthvarchar(16)Year and month of the movement.

+6 more columns in aml_cash_transactions. The full schema ships with the download.

aml_trade_documents· Rows: 12,000
ColumnTypeDescription
document_idvarchar(24)An invoice, bill of lading or letter of credit supporting a trade payment.
entity_idvarchar(24)Stable identifier for entity; use it for declared joins.
counterparty_idvarchar(24)Stable identifier for counterparty; use it for declared joins.
document_typevarchar(24)Commercial invoice, bill of lading or letter of credit.
invoice_referencevarchar(16)Reference as it appears on the document.
issued_ondateissued on as an ISO 8601 calendar date.
issued_monthvarchar(16)Year and month the document was issued.

+7 more columns in aml_trade_documents. The full schema ships with the download.

aml_laundering_labels· Rows: 3,882
ColumnTypeDescription
label_idvarchar(24)One payment inside one confirmed laundering window. The ground truth table.
payment_idvarchar(24)Stable identifier for payment; use it for declared joins.
entity_idvarchar(24)Stable identifier for entity; use it for declared joins.
pattern_idvarchar(24)THE KEY TO SPLIT ON. Groups every payment produced by a single laundering window on a single entity. A random payment-level train and test split puts the same pattern on both sides and will overstate model performance badly.
typology_codevarchar(32)Stable code for typology; its companion description carries the meaning.
laundering_stagevarchar(16)placement, layering or integration, copied from the typology.
window_fromdateFirst day of the confirmed window.

+4 more columns in aml_laundering_labels. The full schema ships with the download.

aml_alerts· Rows: 30,927
ColumnTypeDescription
alert_idvarchar(24)One alert the incumbent monitoring raised.
entity_idvarchar(24)Stable identifier for entity; use it for declared joins.
alerted_atvarchar(32)When the alert fired, UTC.
alert_datedatealert date as an ISO 8601 calendar date.
alert_monthvarchar(16)Year and month the alert fired.
rule_codevarchar(8)The primary rule that fired. Joins aml_rules.
alert_scoreintegerScore the estate assigned, 0 to 999.

+5 more columns in aml_alerts. The full schema ships with the download.

aml_alert_rule_hits· Rows: 47,184
ColumnTypeDescription
hit_idvarchar(24)One rule firing on one alert. An alert usually has several.
alert_idvarchar(24)Stable identifier for alert; use it for declared joins.
rule_codevarchar(8)Stable code for rule; its companion description carries the meaning.
rule_scorenumeric(6,3)What that rule scored on this alert.
is_primary_rulevarchar(16)True on the rule that raised the alert; false on the others that co-fired.
aml_cases· Rows: 4,329
ColumnTypeDescription
case_idvarchar(24)Investigation reference in the CS-year-number form an analyst quotes.
entity_idvarchar(24)Stable identifier for entity; use it for declared joins.
opened_atvarchar(32)When the case was opened, UTC.
opened_datedateopened date as an ISO 8601 calendar date.
opened_monthvarchar(16)Year and month the case opened.
closed_atvarchar(32)When the case closed. Empty on a case still open at the end of the window.
case_outcomevarchar(16)reported where a suspicious activity report followed, monitored where suspicion remained without a report, no_suspicion where it did not, open where the case had not closed by the end of the window.

+6 more columns in aml_cases. The full schema ships with the download.

aml_case_actions· Rows: 21,574
ColumnTypeDescription
action_idvarchar(24)One step in the investigation, in order.
case_idvarchar(24)Stable identifier for case; use it for declared joins.
action_atvarchar(32)When the step was taken, UTC. Steps are in order within a case.
action_typevarchar(32)What the investigator did. Requesting source of funds is a different act from refreshing know your customer, and both appear.
investigator_idvarchar(16)Stable identifier for investigator; use it for declared joins.
action_notetextInvestigator note. Empty where the action speaks for itself.
aml_sars· Rows: 481
ColumnTypeDescription
sar_idvarchar(24)A suspicious activity report as filed.
case_idvarchar(24)Stable identifier for case; use it for declared joins.
entity_idvarchar(24)Stable identifier for entity; use it for declared joins.
filed_atvarchar(32)When the report was filed, UTC.
filed_datedatefiled date as an ISO 8601 calendar date.
filed_monthvarchar(16)Year and month it was filed.
sar_reasonvarchar(32)Ground for the report. Joins aml_sar_reasons.

+4 more columns in aml_sars. The full schema ships with the download.

aml_daml_requests· Rows: 75
ColumnTypeDescription
daml_idvarchar(24)A defence against money laundering request under the UK consent regime.
sar_idvarchar(24)Stable identifier for sar; use it for declared joins.
entity_idvarchar(24)Stable identifier for entity; use it for declared joins.
requested_atvarchar(32)When consent was sought.
decided_atvarchar(32)When the decision came back. Empty while awaiting.
daml_outcomevarchar(24)consent_granted, consent_refused, or deemed_consent where the statutory notice period expired without a refusal.
value_held_gbpnumeric(11,2)Value frozen while the decision was awaited. This is the commercial cost of the regime and is worth measuring against the report that caused it.

+1 more columns in aml_daml_requests. The full schema ships with the download.

aml_escalations· Rows: 387
ColumnTypeDescription
escalation_idvarchar(24)A referral above the investigator.
case_idvarchar(24)Stable identifier for case; use it for declared joins.
entity_idvarchar(24)Stable identifier for entity; use it for declared joins.
escalated_atvarchar(32)When the referral was made, UTC.
escalated_tovarchar(32)mlro, financial_crime_committee, group_compliance or board.
escalation_outcomevarchar(24)What the escalation decided, from no action through enhanced monitoring to a recommendation to exit.
aml_entity_monthly_flows· Rows: 210,000
ColumnTypeDescription
flow_idvarchar(24)One entity, one month.
entity_idvarchar(24)Stable identifier for entity; use it for declared joins.
flow_monthvarchar(16)Year and month.
payment_countintegerPayments that month. Zero outside the twelve month detail window, where only the aggregate survives.
inbound_gbpnumeric(11,2)Money in that month, in sterling.
outbound_gbpnumeric(11,2)Money out that month, in sterling.
net_gbpnumeric(11,2)Inbound less outbound. A pass-through account nets to near zero on large gross flow, which is the shape a rapid movement rule looks for.

+3 more columns in aml_entity_monthly_flows. The full schema ships with the download.

aml_corridor_monthly· Rows: 909
ColumnTypeDescription
corridor_idvarchar(24)One country, one month, one direction.
country_codevarchar(8)ISO 3166-1 alpha-2 country code.
flow_monthvarchar(16)Year and month.
directionvarchar(16)inbound or outbound from the customer point of view.
payment_countintegerPayments on the corridor that month.
value_gbpnumeric(13,2)Value on the corridor that month, in sterling.
fatf_statusvarchar(16)The corridor FATF designation, copied on so a corridor report needs no join.

+2 more columns in aml_corridor_monthly. The full schema ships with the download.

aml_account_monthly_balances· Rows: 195,120
ColumnTypeDescription
balance_idvarchar(24)One account, one month.
account_idvarchar(24)Stable identifier for account; use it for declared joins.
entity_idvarchar(24)Stable identifier for entity; use it for declared joins.
balance_monthvarchar(16)Year and month the row closes.
closing_balance_gbpnumeric(11,2)Balance at month end.
credits_gbpnumeric(11,2)Money in during the month.
debits_gbpnumeric(11,2)Money out during the month.

+2 more columns in aml_account_monthly_balances. The full schema ships with the download.

aml_correspondent_banks· Rows: 20
ColumnTypeDescription
correspondent_idvarchar(16)A correspondent banking relationship through which cross-border payments settle.
correspondent_namevarchar(32)Human-readable correspondent name. All people and organisations are modelled.
bicvarchar(16)SWIFT BIC. Structurally valid and assigned inside this dataset; not the code of any real institution.
country_codevarchar(8)ISO 3166-1 alpha-2 country code.
relationship_kindvarchar(16)nostro is the bank account held abroad, vostro is the account another bank holds here, both is a two way relationship.
opened_ondateopened on as an ISO 8601 calendar date.
enhanced_review_flagvarchar(16)Whether the relationship is under enhanced periodic review, which correspondent relationships in higher-risk jurisdictions normally are.

+1 more columns in aml_correspondent_banks. The full schema ships with the download.

aml_branches· Rows: 29
ColumnTypeDescription
branch_idvarchar(16)Stable identifier for branch; use it for declared joins.
branch_namevarchar(56)Human-readable branch name. All people and organisations are modelled.
city_idvarchar(16)Stable identifier for city; use it for declared joins.
sort_codevarchar(16)Six digit UK sort code in nn-nn-nn form, assigned inside this dataset.
opened_ondateopened on as an ISO 8601 calendar date.
aml_relationship_managers· Rows: 120
ColumnTypeDescription
manager_idvarchar(16)The relationship manager who owns the customer.
manager_namevarchar(24)Human-readable manager name. All people and organisations are modelled.
branch_idvarchar(16)Stable identifier for branch; use it for declared joins.
portfolio_segmentvarchar(32)Which book the manager covers. A single manager holding several cases is a supervision signal in its own right.
joined_ondatejoined on as an ISO 8601 calendar date.
aml_typologies· Rows: 14
ColumnTypeDescription
typology_codevarchar(32)The laundering pattern, in the vocabulary a UK financial intelligence unit uses.
typology_namevarchar(40)Human-readable typology name. All people and organisations are modelled.
laundering_stagevarchar(16)placement, layering or integration. Placement is where cash enters, layering is movement to break the trail, integration is where value comes back as apparently clean wealth.
typology_descriptionvarchar(120)Human-readable meaning of typology.
base_rate_per_millenumeric(4,1)Incidence per thousand entities used to drive the simulation. Published so the class balance is reproducible.
aml_rules· Rows: 16
ColumnTypeDescription
rule_codevarchar(8)Identifier of a monitoring rule in the incumbent estate.
rule_descriptionvarchar(72)What the rule looks for, in the words an analyst would read on the alert.
target_typologyvarchar(24)The typology the rule was written to catch. A rule firing far from its target typology is a false positive waiting to happen.
rule_sensitivitynumeric(5,2)How readily the rule fires, 0 to 1. High sensitivity buys recall and costs precision, which is the whole trade in transaction monitoring.
aml_risk_bands· Rows: 4
ColumnTypeDescription
risk_bandvarchar(16)Customer due diligence band under the money laundering regulations.
risk_band_namevarchar(16)Human-readable risk band name. All people and organisations are modelled.
severity_orderintegerSort order, 1 lowest. Sort on this rather than alphabetically.
policy_notevarchar(112)What the band obliges the bank to do.
aml_entity_types· Rows: 10
ColumnTypeDescription
entity_typevarchar(32)Legal form of the customer.
entity_type_namevarchar(40)Human-readable entity type name. All people and organisations are modelled.
legal_naturevarchar(16)natural, legal or arrangement. A trust is an arrangement rather than a person or a company, which is exactly why its ownership is harder to establish.
inherent_risknumeric(4,1)Risk the form carries before anything else is known about the customer.
aml_industries· Rows: 18
ColumnTypeDescription
sic_sectionvarchar(8)UK SIC 2007 section letter.
sic_section_namevarchar(56)Official title of the section.
industry_risknumeric(4,1)Industry risk weight a money laundering reporting officer would apply. Cash-intensive and asset-holding sectors sit highest.
aml_product_types· Rows: 7
ColumnTypeDescription
product_typevarchar(32)Account product.
product_type_namevarchar(32)Human-readable product type name. All people and organisations are modelled.
product_classvarchar(24)deposit, credit or correspondent. A correspondent relationship carries another bank customers, not the bank own.
aml_payment_types· Rows: 9
ColumnTypeDescription
payment_typevarchar(24)Payment instrument.
payment_type_namevarchar(40)Human-readable payment type name. All people and organisations are modelled.
settlement_classvarchar(16)cross_border, domestic, cash or internal.
aml_sar_reasons· Rows: 6
ColumnTypeDescription
sar_reasonvarchar(32)Ground on which a suspicious activity report was filed.
sar_reason_namevarchar(56)Human-readable sar reason name. All people and organisations are modelled.
report_classvarchar(16)standard, or consent where the bank is seeking a defence against money laundering before proceeding.
aml_screening_lists· Rows: 9
ColumnTypeDescription
list_codevarchar(24)Screening list an entity is checked against.
list_namevarchar(48)Human-readable list name. All people and organisations are modelled.
list_classvarchar(24)sanctions, pep, adverse_media or enquiry. Only the first is a legal prohibition; the rest inform risk.
match_severityintegerHow seriously a hit on this list is treated, 1 to 4.
aml_relationship_types· Rows: 9
ColumnTypeDescription
relationship_typevarchar(16)How one party relates to another.
relationship_type_namevarchar(32)Human-readable relationship type name. All people and organisations are modelled.
relationship_classvarchar(16)ownership or control. A nominee holds neither in substance, which is the point of using one.
aml_id_document_types· Rows: 7
ColumnTypeDescription
document_typevarchar(24)Identity or registration document.
document_type_namevarchar(40)Human-readable document type name. All people and organisations are modelled.
applies_tovarchar(16)Whether the document identifies an individual or a legal entity.
aml_cities· Rows: 20
ColumnTypeDescription
city_idvarchar(16)Stable identifier for city; use it for declared joins.
city_namevarchar(24)Human-readable city name. All people and organisations are modelled.
region_namevarchar(32)Human-readable region name. All people and organisations are modelled.
populationintegerApproximate urban population, used to weight where the customer and branch estate is.
aml_countries· Rows: 38
ColumnTypeDescription
country_codevarchar(8)ISO 3166-1 alpha-2 country code.
country_namevarchar(32)Country name in English.
currency_codevarchar(8)Stable code for currency; its companion description carries the meaning.
fatf_statusvarchar(16)The real FATF designation: action for the call-for-action list, monitoring for the increased-monitoring list, standard for neither. Public record, and the single strongest corridor signal in the set.
is_offshore_centrevarchar(16)Whether the jurisdiction is an offshore financial centre whose corporate transparency is habitually a monitoring concern. Distinct from FATF status: a country can be unlisted and still opaque.
jurisdiction_risknumeric(4,1)Composite country risk used by the simulation, 1.0 being an ordinary onshore jurisdiction. A modelling input, not a published index.
corridor_sharenumeric(7,4)Share of portfolio payment flow that touches this country. Sums to roughly one across the table.

+1 more columns in aml_countries. The full schema ships with the download.

aml_currencies· Rows: 24
ColumnTypeDescription
currency_codevarchar(8)ISO 4217 alphabetic currency code.
currency_numericintegerISO 4217 numeric currency code.
currency_namevarchar(24)Human-readable currency name. All people and organisations are modelled.
gbp_ratenumeric(10,7)Pounds per unit of this currency, held flat for the period so every amount reconciles to the sterling column exactly.

Sample Data

A snapshot of real rows from the dataset (values are fully synthetic).

payment_referencevalue_atamount_gbppayment_typecounterparty_countryis_cross_borderin_laundering_windowtypology_code
L1R3GIVXJ3ZI002025-07-01T00:00:43Z5619.17bacsGBNN
FMP56IYG5OQ4112025-07-01T00:03:05Z866.93faster_paymentGBNN
CNAY0DU4A7A3112025-07-01T00:03:43Z1017.93bacsGBNN

Version History

v1.0.02026-09-01v1.0.0 - first release. Forty-one tables, 1.46 million rows. Twelve months of payment, cash and trade detail to 2026-06-30 with forty-two months of entity monthly flow behind it. Confirmed laundering patterns across fourteen typologies on 2.1 percent of entities, with the incumbent monitoring alerts published alongside at four percent precision.

Related Datasets