Anti Money Laundering Transaction Monitoring Set (GB)
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.
Row Counts by Table
Counted from the files that ship, not estimated.
| Table | Rows |
|---|---|
| aml_entities | 5,000 |
| aml_entity_addresses | 6,063 |
| aml_entity_identifiers | 8,196 |
| aml_ownership | 6,174 |
| aml_officers | 6,207 |
| aml_risk_assessments | 15,401 |
| aml_screening_hits | 558 |
| aml_accounts | 8,130 |
| aml_signatories | 14,353 |
| aml_counterparties | 22,000 |
| aml_payments | 614,851 |
| aml_cash_transactions | 221,140 |
| aml_trade_documents | 12,000 |
| aml_laundering_labels | 3,882 |
| aml_alerts | 30,927 |
| aml_alert_rule_hits | 47,184 |
| aml_cases | 4,329 |
| aml_case_actions | 21,574 |
| aml_sars | 481 |
| aml_daml_requests | 75 |
| aml_escalations | 387 |
| aml_entity_monthly_flows | 210,000 |
| aml_corridor_monthly | 909 |
| aml_account_monthly_balances | 195,120 |
| aml_correspondent_banks | 20 |
| aml_branches | 29 |
| aml_relationship_managers | 120 |
| aml_typologies | 14 |
| aml_rules | 16 |
| aml_risk_bands | 4 |
| aml_entity_types | 10 |
| aml_industries | 18 |
| aml_product_types | 7 |
| aml_payment_types | 9 |
| aml_sar_reasons | 6 |
| aml_screening_lists | 9 |
| aml_relationship_types | 9 |
| aml_id_document_types | 7 |
| aml_cities | 20 |
| aml_countries | 38 |
| aml_currencies | 24 |
Table Relationships
One parent record and seven child tables, each joined back on the same key.
Schema
Every table ships with typed columns, referential integrity, and documentation.
| Column | Type | Description |
|---|---|---|
| entity_id | varchar(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_number | varchar(16) | Customer number as it appears on correspondence. Sparse, so it carries no information about when the relationship opened. |
| entity_name | varchar(56) | Registered or personal name. Generated from British corporate and personal name morphology; no row names a real party. |
| entity_type | varchar(32) | Legal form. Joins aml_entity_types. |
| is_corporate | varchar(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_section | varchar(8) | Declared industry, empty for individuals. Joins aml_industries. |
| registered_country | varchar(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.
| Column | Type | Description |
|---|---|---|
| address_id | varchar(24) | Stable identifier for address; use it for declared joins. |
| entity_id | varchar(24) | Stable identifier for entity; use it for declared joins. |
| address_line_1 | varchar(32) | Street and building number. |
| city_name | varchar(24) | Human-readable city name. All people and organisations are modelled. |
| city_id | varchar(16) | Stable identifier for city; use it for declared joins. |
| postcode | varchar(16) | UK postcode in the real format, with an area that genuinely serves the town and a district inside that area real range. |
| country_code | varchar(8) | ISO 3166-1 alpha-2 country code. |
+4 more columns in aml_entity_addresses. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| identifier_id | varchar(24) | Stable identifier for identifier; use it for declared joins. |
| entity_id | varchar(24) | Stable identifier for entity; use it for declared joins. |
| document_type | varchar(24) | Kind of identifier held. Joins aml_id_document_types. |
| identifier_value | varchar(32) | The document or registration number. Generated, and in no real registry. |
| issuing_country | varchar(16) | Which country issued it. |
| recorded_on | date | recorded on as an ISO 8601 calendar date. |
| Column | Type | Description |
|---|---|---|
| ownership_id | varchar(24) | One edge of the beneficial ownership graph. |
| entity_id | varchar(24) | The owned entity. |
| holder_entity_id | varchar(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_type | varchar(16) | Nature of the holding: ubo above the twenty five percent threshold, otherwise shareholder, parent or nominee. Joins aml_relationship_types. |
| holding_pct | integer | Percentage held. Twenty five percent is the threshold at which a holder becomes a beneficial owner under the UK regulations. |
| holder_is_corporate | varchar(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_from | date | effective from as an ISO 8601 calendar date. |
+1 more columns in aml_ownership. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| officer_id | varchar(24) | A person exercising control over an entity. |
| entity_id | varchar(24) | Stable identifier for entity; use it for declared joins. |
| person_entity_id | varchar(24) | The natural person, as a row in aml_entities. |
| relationship_type | varchar(16) | Nature of the control: director, signatory, trustee or settlor. Joins aml_relationship_types. |
| appointed_on | date | appointed on as an ISO 8601 calendar date. |
| resigned_on | date | Empty while the appointment stands. A cluster of resignations before a spike in flow is a pattern worth a feature. |
| Column | Type | Description |
|---|---|---|
| assessment_id | varchar(24) | One due diligence review. |
| entity_id | varchar(24) | Stable identifier for entity; use it for declared joins. |
| assessed_on | date | assessed on as an ISO 8601 calendar date. |
| risk_band | varchar(16) | Band the review concluded on, which may differ from the band the entity carries now. |
| risk_score | numeric(6,2) | Composite score the review concluded on, before it was banded. |
| assessment_trigger | varchar(16) | onboarding, periodic on the band cadence, or event_driven because something happened. |
| edd_applied | varchar(16) | Whether enhanced due diligence was applied at this review. |
+1 more columns in aml_risk_assessments. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| hit_id | varchar(24) | A sanctions, PEP or adverse media match. |
| entity_id | varchar(24) | Stable identifier for entity; use it for declared joins. |
| list_code | varchar(24) | Stable code for list; its companion description carries the meaning. |
| screened_at | varchar(32) | When the screening ran, UTC. |
| match_score | numeric(6,3) | Name matching confidence, 0 to 1. Fuzzy matching means most hits are not the person. |
| hit_disposition | varchar(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_severity | integer | Severity of the list that matched, copied from aml_screening_lists. |
+1 more columns in aml_screening_hits. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| account_id | varchar(24) | Account key. Foreign key on every payment, cash movement and monthly balance. |
| entity_id | varchar(24) | Stable identifier for entity; use it for declared joins. |
| product_type | varchar(32) | Account product. Joins aml_product_types. |
| sort_code | varchar(16) | Stable code for sort; its companion description carries the meaning. |
| account_number | varchar(16) | Eight digit UK account number. |
| iban | varchar(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. |
| bic | varchar(16) | SWIFT BIC of the issuing bank. |
+7 more columns in aml_accounts. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| signatory_id | varchar(24) | Who may operate the account. |
| account_id | varchar(24) | Stable identifier for account; use it for declared joins. |
| person_entity_id | varchar(24) | The signatory, as a row in aml_entities. |
| signatory_role | varchar(16) | primary or joint. Both can operate the account. |
| authorised_from | date | authorised from as an ISO 8601 calendar date. |
| revoked_on | date | Empty while the mandate stands. |
| Column | Type | Description |
|---|---|---|
| counterparty_id | varchar(24) | An external party the book pays or is paid by. Not a customer of this bank. |
| counterparty_name | varchar(56) | Human-readable counterparty name. All people and organisations are modelled. |
| is_corporate | varchar(16) | True for a company, false for a natural person. |
| country_code | varchar(8) | ISO 3166-1 alpha-2 country code. |
| fatf_status | varchar(16) | The counterparty country FATF designation, copied on because a corridor rule reads it per payment. |
| is_offshore_centre | varchar(16) | Whether the counterparty sits in an offshore financial centre. |
| account_reference | varchar(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.
| Column | Type | Description |
|---|---|---|
| payment_id | varchar(24) | Payment key. Primary key of the spine. |
| payment_reference | varchar(24) | Fourteen character reference as it appears on the message and the statement. |
| account_id | varchar(24) | Stable identifier for account; use it for declared joins. |
| entity_id | varchar(24) | Stable identifier for entity; use it for declared joins. |
| counterparty_id | varchar(24) | Stable identifier for counterparty; use it for declared joins. |
| payment_type | varchar(24) | Instrument used. Joins aml_payment_types. |
| direction | varchar(16) | inbound or outbound from the customer point of view. |
+11 more columns in aml_payments. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| cash_id | varchar(24) | A cash deposit or withdrawal, which is where placement actually happens and where a payment file cannot see. |
| account_id | varchar(24) | Stable identifier for account; use it for declared joins. |
| entity_id | varchar(24) | Stable identifier for entity; use it for declared joins. |
| cash_direction | varchar(24) | cash_deposit or cash_withdrawal. |
| transacted_at | varchar(32) | When the cash moved, UTC. |
| transaction_date | date | transaction date as an ISO 8601 calendar date. |
| transaction_month | varchar(16) | Year and month of the movement. |
+6 more columns in aml_cash_transactions. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| document_id | varchar(24) | An invoice, bill of lading or letter of credit supporting a trade payment. |
| entity_id | varchar(24) | Stable identifier for entity; use it for declared joins. |
| counterparty_id | varchar(24) | Stable identifier for counterparty; use it for declared joins. |
| document_type | varchar(24) | Commercial invoice, bill of lading or letter of credit. |
| invoice_reference | varchar(16) | Reference as it appears on the document. |
| issued_on | date | issued on as an ISO 8601 calendar date. |
| issued_month | varchar(16) | Year and month the document was issued. |
+7 more columns in aml_trade_documents. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| label_id | varchar(24) | One payment inside one confirmed laundering window. The ground truth table. |
| payment_id | varchar(24) | Stable identifier for payment; use it for declared joins. |
| entity_id | varchar(24) | Stable identifier for entity; use it for declared joins. |
| pattern_id | varchar(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_code | varchar(32) | Stable code for typology; its companion description carries the meaning. |
| laundering_stage | varchar(16) | placement, layering or integration, copied from the typology. |
| window_from | date | First day of the confirmed window. |
+4 more columns in aml_laundering_labels. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| alert_id | varchar(24) | One alert the incumbent monitoring raised. |
| entity_id | varchar(24) | Stable identifier for entity; use it for declared joins. |
| alerted_at | varchar(32) | When the alert fired, UTC. |
| alert_date | date | alert date as an ISO 8601 calendar date. |
| alert_month | varchar(16) | Year and month the alert fired. |
| rule_code | varchar(8) | The primary rule that fired. Joins aml_rules. |
| alert_score | integer | Score the estate assigned, 0 to 999. |
+5 more columns in aml_alerts. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| hit_id | varchar(24) | One rule firing on one alert. An alert usually has several. |
| alert_id | varchar(24) | Stable identifier for alert; use it for declared joins. |
| rule_code | varchar(8) | Stable code for rule; its companion description carries the meaning. |
| rule_score | numeric(6,3) | What that rule scored on this alert. |
| is_primary_rule | varchar(16) | True on the rule that raised the alert; false on the others that co-fired. |
| Column | Type | Description |
|---|---|---|
| case_id | varchar(24) | Investigation reference in the CS-year-number form an analyst quotes. |
| entity_id | varchar(24) | Stable identifier for entity; use it for declared joins. |
| opened_at | varchar(32) | When the case was opened, UTC. |
| opened_date | date | opened date as an ISO 8601 calendar date. |
| opened_month | varchar(16) | Year and month the case opened. |
| closed_at | varchar(32) | When the case closed. Empty on a case still open at the end of the window. |
| case_outcome | varchar(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.
| Column | Type | Description |
|---|---|---|
| action_id | varchar(24) | One step in the investigation, in order. |
| case_id | varchar(24) | Stable identifier for case; use it for declared joins. |
| action_at | varchar(32) | When the step was taken, UTC. Steps are in order within a case. |
| action_type | varchar(32) | What the investigator did. Requesting source of funds is a different act from refreshing know your customer, and both appear. |
| investigator_id | varchar(16) | Stable identifier for investigator; use it for declared joins. |
| action_note | text | Investigator note. Empty where the action speaks for itself. |
| Column | Type | Description |
|---|---|---|
| sar_id | varchar(24) | A suspicious activity report as filed. |
| case_id | varchar(24) | Stable identifier for case; use it for declared joins. |
| entity_id | varchar(24) | Stable identifier for entity; use it for declared joins. |
| filed_at | varchar(32) | When the report was filed, UTC. |
| filed_date | date | filed date as an ISO 8601 calendar date. |
| filed_month | varchar(16) | Year and month it was filed. |
| sar_reason | varchar(32) | Ground for the report. Joins aml_sar_reasons. |
+4 more columns in aml_sars. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| daml_id | varchar(24) | A defence against money laundering request under the UK consent regime. |
| sar_id | varchar(24) | Stable identifier for sar; use it for declared joins. |
| entity_id | varchar(24) | Stable identifier for entity; use it for declared joins. |
| requested_at | varchar(32) | When consent was sought. |
| decided_at | varchar(32) | When the decision came back. Empty while awaiting. |
| daml_outcome | varchar(24) | consent_granted, consent_refused, or deemed_consent where the statutory notice period expired without a refusal. |
| value_held_gbp | numeric(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.
| Column | Type | Description |
|---|---|---|
| escalation_id | varchar(24) | A referral above the investigator. |
| case_id | varchar(24) | Stable identifier for case; use it for declared joins. |
| entity_id | varchar(24) | Stable identifier for entity; use it for declared joins. |
| escalated_at | varchar(32) | When the referral was made, UTC. |
| escalated_to | varchar(32) | mlro, financial_crime_committee, group_compliance or board. |
| escalation_outcome | varchar(24) | What the escalation decided, from no action through enhanced monitoring to a recommendation to exit. |
| Column | Type | Description |
|---|---|---|
| flow_id | varchar(24) | One entity, one month. |
| entity_id | varchar(24) | Stable identifier for entity; use it for declared joins. |
| flow_month | varchar(16) | Year and month. |
| payment_count | integer | Payments that month. Zero outside the twelve month detail window, where only the aggregate survives. |
| inbound_gbp | numeric(11,2) | Money in that month, in sterling. |
| outbound_gbp | numeric(11,2) | Money out that month, in sterling. |
| net_gbp | numeric(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.
| Column | Type | Description |
|---|---|---|
| corridor_id | varchar(24) | One country, one month, one direction. |
| country_code | varchar(8) | ISO 3166-1 alpha-2 country code. |
| flow_month | varchar(16) | Year and month. |
| direction | varchar(16) | inbound or outbound from the customer point of view. |
| payment_count | integer | Payments on the corridor that month. |
| value_gbp | numeric(13,2) | Value on the corridor that month, in sterling. |
| fatf_status | varchar(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.
| Column | Type | Description |
|---|---|---|
| balance_id | varchar(24) | One account, one month. |
| account_id | varchar(24) | Stable identifier for account; use it for declared joins. |
| entity_id | varchar(24) | Stable identifier for entity; use it for declared joins. |
| balance_month | varchar(16) | Year and month the row closes. |
| closing_balance_gbp | numeric(11,2) | Balance at month end. |
| credits_gbp | numeric(11,2) | Money in during the month. |
| debits_gbp | numeric(11,2) | Money out during the month. |
+2 more columns in aml_account_monthly_balances. The full schema ships with the download.
| Column | Type | Description |
|---|---|---|
| correspondent_id | varchar(16) | A correspondent banking relationship through which cross-border payments settle. |
| correspondent_name | varchar(32) | Human-readable correspondent name. All people and organisations are modelled. |
| bic | varchar(16) | SWIFT BIC. Structurally valid and assigned inside this dataset; not the code of any real institution. |
| country_code | varchar(8) | ISO 3166-1 alpha-2 country code. |
| relationship_kind | varchar(16) | nostro is the bank account held abroad, vostro is the account another bank holds here, both is a two way relationship. |
| opened_on | date | opened on as an ISO 8601 calendar date. |
| enhanced_review_flag | varchar(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.
| Column | Type | Description |
|---|---|---|
| branch_id | varchar(16) | Stable identifier for branch; use it for declared joins. |
| branch_name | varchar(56) | Human-readable branch name. All people and organisations are modelled. |
| city_id | varchar(16) | Stable identifier for city; use it for declared joins. |
| sort_code | varchar(16) | Six digit UK sort code in nn-nn-nn form, assigned inside this dataset. |
| opened_on | date | opened on as an ISO 8601 calendar date. |
| Column | Type | Description |
|---|---|---|
| manager_id | varchar(16) | The relationship manager who owns the customer. |
| manager_name | varchar(24) | Human-readable manager name. All people and organisations are modelled. |
| branch_id | varchar(16) | Stable identifier for branch; use it for declared joins. |
| portfolio_segment | varchar(32) | Which book the manager covers. A single manager holding several cases is a supervision signal in its own right. |
| joined_on | date | joined on as an ISO 8601 calendar date. |
| Column | Type | Description |
|---|---|---|
| typology_code | varchar(32) | The laundering pattern, in the vocabulary a UK financial intelligence unit uses. |
| typology_name | varchar(40) | Human-readable typology name. All people and organisations are modelled. |
| laundering_stage | varchar(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_description | varchar(120) | Human-readable meaning of typology. |
| base_rate_per_mille | numeric(4,1) | Incidence per thousand entities used to drive the simulation. Published so the class balance is reproducible. |
| Column | Type | Description |
|---|---|---|
| rule_code | varchar(8) | Identifier of a monitoring rule in the incumbent estate. |
| rule_description | varchar(72) | What the rule looks for, in the words an analyst would read on the alert. |
| target_typology | varchar(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_sensitivity | numeric(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. |
| Column | Type | Description |
|---|---|---|
| risk_band | varchar(16) | Customer due diligence band under the money laundering regulations. |
| risk_band_name | varchar(16) | Human-readable risk band name. All people and organisations are modelled. |
| severity_order | integer | Sort order, 1 lowest. Sort on this rather than alphabetically. |
| policy_note | varchar(112) | What the band obliges the bank to do. |
| Column | Type | Description |
|---|---|---|
| entity_type | varchar(32) | Legal form of the customer. |
| entity_type_name | varchar(40) | Human-readable entity type name. All people and organisations are modelled. |
| legal_nature | varchar(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_risk | numeric(4,1) | Risk the form carries before anything else is known about the customer. |
| Column | Type | Description |
|---|---|---|
| sic_section | varchar(8) | UK SIC 2007 section letter. |
| sic_section_name | varchar(56) | Official title of the section. |
| industry_risk | numeric(4,1) | Industry risk weight a money laundering reporting officer would apply. Cash-intensive and asset-holding sectors sit highest. |
| Column | Type | Description |
|---|---|---|
| product_type | varchar(32) | Account product. |
| product_type_name | varchar(32) | Human-readable product type name. All people and organisations are modelled. |
| product_class | varchar(24) | deposit, credit or correspondent. A correspondent relationship carries another bank customers, not the bank own. |
| Column | Type | Description |
|---|---|---|
| payment_type | varchar(24) | Payment instrument. |
| payment_type_name | varchar(40) | Human-readable payment type name. All people and organisations are modelled. |
| settlement_class | varchar(16) | cross_border, domestic, cash or internal. |
| Column | Type | Description |
|---|---|---|
| sar_reason | varchar(32) | Ground on which a suspicious activity report was filed. |
| sar_reason_name | varchar(56) | Human-readable sar reason name. All people and organisations are modelled. |
| report_class | varchar(16) | standard, or consent where the bank is seeking a defence against money laundering before proceeding. |
| Column | Type | Description |
|---|---|---|
| list_code | varchar(24) | Screening list an entity is checked against. |
| list_name | varchar(48) | Human-readable list name. All people and organisations are modelled. |
| list_class | varchar(24) | sanctions, pep, adverse_media or enquiry. Only the first is a legal prohibition; the rest inform risk. |
| match_severity | integer | How seriously a hit on this list is treated, 1 to 4. |
| Column | Type | Description |
|---|---|---|
| relationship_type | varchar(16) | How one party relates to another. |
| relationship_type_name | varchar(32) | Human-readable relationship type name. All people and organisations are modelled. |
| relationship_class | varchar(16) | ownership or control. A nominee holds neither in substance, which is the point of using one. |
| Column | Type | Description |
|---|---|---|
| document_type | varchar(24) | Identity or registration document. |
| document_type_name | varchar(40) | Human-readable document type name. All people and organisations are modelled. |
| applies_to | varchar(16) | Whether the document identifies an individual or a legal entity. |
| Column | Type | Description |
|---|---|---|
| city_id | varchar(16) | Stable identifier for city; use it for declared joins. |
| city_name | varchar(24) | Human-readable city name. All people and organisations are modelled. |
| region_name | varchar(32) | Human-readable region name. All people and organisations are modelled. |
| population | integer | Approximate urban population, used to weight where the customer and branch estate is. |
| Column | Type | Description |
|---|---|---|
| country_code | varchar(8) | ISO 3166-1 alpha-2 country code. |
| country_name | varchar(32) | Country name in English. |
| currency_code | varchar(8) | Stable code for currency; its companion description carries the meaning. |
| fatf_status | varchar(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_centre | varchar(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_risk | numeric(4,1) | Composite country risk used by the simulation, 1.0 being an ordinary onshore jurisdiction. A modelling input, not a published index. |
| corridor_share | numeric(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.
| Column | Type | Description |
|---|---|---|
| currency_code | varchar(8) | ISO 4217 alphabetic currency code. |
| currency_numeric | integer | ISO 4217 numeric currency code. |
| currency_name | varchar(24) | Human-readable currency name. All people and organisations are modelled. |
| gbp_rate | numeric(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_reference | value_at | amount_gbp | payment_type | counterparty_country | is_cross_border | in_laundering_window | typology_code |
|---|---|---|---|---|---|---|---|
| L1R3GIVXJ3ZI00 | 2025-07-01T00:00:43Z | 5619.17 | bacs | GB | N | N | |
| FMP56IYG5OQ411 | 2025-07-01T00:03:05Z | 866.93 | faster_payment | GB | N | N | |
| CNAY0DU4A7A311 | 2025-07-01T00:03:43Z | 1017.93 | bacs | GB | N | N |
Version History
| v1.0.0 | 2026-09-01 | v1.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
Consumer Credit Risk and Lending Decisioning Set (GB)
FinanceFINCRD995 is a deterministic synthetic UK consumer lender: 46,000 applicants, 65,000 applications and 15,000 agreements across the real Bank Rate cycle, and the counterfactual outcome for every applicant it turned down.
Digital Operational Resilience and ICT Third-Party Risk Analytics Set (EU)
FinanceFINICT999 is a deterministic synthetic EU financial-sector resilience warehouse connecting regulated entities, business functions, ICT assets, providers, contracts, risks, controls, incidents, recovery, testing, audit, remediation and financial effects.
Insurance Underwriting and Claims Analytics Set (GB)
FinanceFININS998 is a deterministic synthetic UK general insurance warehouse: twenty-eight thousand policyholders, ninety-three thousand policy years across fourteen product lines, seventeen thousand claims and a counter-fraud estate, with ground-truth fraud labels that carry the honest value alongside the claimed one.