Payment Fraud Detection Dataset
This dataset contains detailed synthetic payment transaction records, each labeled with ground-truth indicators of fraud. It includes transaction metadata, customer and merchant identifiers, payment methods, device and location context, and fraud reasons, making it ideal for developing and benchmarking machine learning models for payment fraud detection and risk mitigation.
Sample rows
preview · 8 of 200 rows · all 19 columns| transaction_idstring | customer_genderstring | amountfloat | fraud_labelboolean | fraud_reasonstring | transaction_datetimedatetime | currencystring | customer_idstring | merchant_idstring | payment_methodstring | device_idstring | ip_addressstring | customer_countrystring | merchant_countrystring | is_internationalboolean | transaction_statusstring | entry_modestring | merchant_category_codestring | customer_ageinteger |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TXN000001 | female | 249.99 | false | blank | 2024-03-14T10:07:23Z | USD | CUST0001 | MCH0001 | credit_card | DEV0001A | 192.168.1.101 | US | US | false | completed | chip | 5311 | 29 |
| TXN000002 | male | 19.95 | false | blank | 2020-11-28T18:22:14Z | GBP | CUST0002 | MCH0002 | debit_card | DEV0002B | 203.0.113.5 | GB | GB | false | completed | chip | 5812 | 33 |
| TXN000003 | unknown | 0.01 | true | testing_abuse | 2023-07-02T13:15:44Z | INR | CUST0003 | MCH0003 | ewallet | blank | 10.0.0.21 | IN | IN | false | failed | online | 5999 | 0 |
| TXN000004 | female | 85.44 | false | blank | 2022-02-11T20:35:12Z | EUR | CUST0004 | MCH0004 | credit_card | DEV0004C | 198.51.100.8 | DE | DE | false | completed | contactless | 5411 | 41 |
| TXN000005 | male | 1250 | false | blank | 2024-01-05T08:12:36Z | USD | CUST0005 | MCH0005 | bank_transfer | blank | 172.16.0.4 | US | CA | true | completed | online | 6012 | 54 |
| TXN000006 | female | 57.43 | false | blank | 2023-11-17T15:05:55Z | EUR | CUST0006 | MCH0006 | ewallet | blank | 217.160.0.12 | FR | DE | true | pending | online | 5732 | 27 |
| TXN000007 | male | 15000 | true | high_value_outlier | 2022-09-10T19:49:26Z | USD | CUST0007 | MCH0007 | prepaid_card | DEV0007D | 203.0.113.111 | US | MX | true | reversed | manual | 7995 | 83 |
| TXN000008 | male | 720.5 | false | blank | 2021-08-23T23:58:10Z | AUD | CUST0008 | MCH0008 | credit_card | DEV0008E | 8.8.8.8 | AU | AU | false | completed | chip | 5541 | 35 |
| TXN000009 | female | 100 | false | blank | 2020-05-14T09:53:41Z | USD | CUST0009 | MCH0009 | debit_card | DEV0009F | 192.0.2.1 | US | CA | true | pending | swipe | 5814 | 25 |
| TXN000010 | male | 347.5 | false | blank | 2024-04-07T22:40:32Z | USD | CUST0010 | MCH0010 | credit_card | DEV0010G | 172.217.14.206 | US | US | false | completed | contactless | 5942 | 62 |
| TXN000011 | male | 0 | true | testing_abuse | 2021-03-10T02:17:13Z | SGD | CUST0011 | MCH0011 | crypto | blank | blank | SG | SG | false | failed | online | 7999 | 41 |
| TXN000012 | female | 99.99 | false | blank | 2023-12-25T15:25:45Z | USD | CUST0012 | MCH0012 | ewallet | blank | 185.32.1.12 | US | CA | true | completed | online | 5816 | 30 |
| TXN000013 | female | 483.95 | false | blank | 2024-02-20T07:32:06Z | USD | CUST0013 | MCH0013 | debit_card | DEV0013H | 203.0.113.45 | US | US | false | completed | swipe | 5813 | 28 |
| TXN000014 | male | 999.99 | false | blank | 2022-12-13T12:12:25Z | EUR | CUST0014 | MCH0014 | credit_card | DEV0014I | 185.33.44.55 | DE | FR | true | completed | chip | 5815 | 34 |
| TXN000015 | female | 48 | false | blank | 2020-06-16T16:44:51Z | SEK | CUST0015 | MCH0015 | debit_card | DEV0015J | 192.168.100.10 | SE | SE | false | completed | chip | 5912 | 52 |
| TXN000016 | unknown | 99999999.99 | true | high_value_outlier | 2023-06-30T11:11:11Z | USD | CUST0016 | MCH0016 | crypto | blank | 255.255.255.0 | US | GR | true | completed | online | 7011 | 120 |
| TXN000017 | female | 27.1 | false | blank | 2021-09-19T21:09:33Z | JPY | CUST0017 | MCH0017 | prepaid_card | DEV0017K | 203.0.113.116 | JP | JP | false | completed | manual | 4789 | 24 |
| TXN000018 | male | 3500 | false | blank | 2022-10-14T14:14:14Z | USD | CUST0018 | MCH0018 | debit_card | DEV0018L | 203.0.113.215 | US | ZA | true | completed | chip | 5943 | 45 |
| TXN000019 | female | 15.75 | false | blank | 2023-01-08T03:03:23Z | EUR | CUST0019 | MCH0019 | bank_transfer | blank | 203.0.113.201 | FR | DE | true | pending | online | 4111 | 59 |
| TXN000020 | other | 5 | true | testing_abuse | 2024-06-01T05:43:22Z | BRL | CUST0020 | MCH0020 | ewallet | blank | blank | BR | BR | false | failed | online | 5995 | 22 |
What the 200 rows show
from the 200-row sampleUnknown (customer gender) stands out: 22 of its 22 rows have fraud_
- 27%fraud_
label = true - 100.0median amount
- 4transaction statuses
- 5entry modes
- 6payment methods
- 11currencies
Unknown (customer gender)'s mean amount is 13,636,935, against 7,047 for male, 3,049 for female and 4,777,159 for other.
Median 100.0, from 0.0 to 100,000,000.
- string 14
- integer 1
- float 1
- datetime 1
- boolean 2
Columns
19 columns in four groups| column | type | description | example |
|---|---|---|---|
| Text 14 columns | |||
transaction_id | string | Unique identifier for each payment transactionunique | TXN000001 |
currency | string | ISO 4217 currency code used for the transaction (e.g., USD, EUR)11 currencies | USD |
customer_id | string | Unique identifier for the customer making the transaction | CUST0001 |
merchant_id | string | Unique identifier for the merchant receiving the payment | MCH0001 |
payment_method | string | Payment method used (e.g., credit_card, debit_card, bank_transfer, ewallet)6 values | credit_card |
device_id | string | Identifier for the device used to initiate the transactionoptional | DEV0001A |
ip_address | string | IP address from which the transaction was initiatedoptional | 192.168.1.101 |
customer_country | string | Country code of the customer (ISO 3166-1 alpha-2)optional | US |
merchant_country | string | Country code of the merchant (ISO 3166-1 alpha-2)optional | US |
transaction_status | string | Status of the transaction (e.g., completed, failed, pending, reversed)completed · failed · pending · reversed | completed |
fraud_reason | string | Short code or description indicating the reason for fraud label (e.g., stolen_card, account_takeover, synthetic_identity)6 reasons · optional | testing_abuse |
entry_mode | string | How the payment information was entered (e.g., chip, swipe, online, contactless)chip · swipe · online · contactless · manual · optional | chip |
merchant_category_code | string | Merchant Category Code (MCC) indicating the type of merchantoptional | 5311 |
customer_gender | string | Gender of the customermale · female · other · unknown · optional | female |
| Numbers 2 columns | |||
amount | float | Monetary value of the transaction0 or more | 249.99 |
customer_age | integer | Age of the customer at the time of transaction0 to 120 · optional | 29 |
| Dates and times 1 column | |||
transaction_datetime | datetime | Date and time when the transaction occurred | 2024-03-14T10:07:23Z |
| True or false 2 columns | |||
is_international | boolean | Indicates if the transaction is cross-border (customer and merchant in different countries)optional | false |
fraud_label | boolean | Ground-truth label indicating if the transaction is fraudulent (true) or legitimate (false) | false |
15 SQL practice questions for the Payment Fraud Detection Dataset
Written for this data and checked against it: 12 SQL and 3 Power BI exercises from beginner to advanced. Try the first three free; the practice kit has all 15, a starter .sql file and an answer key with every expected result.
Completed fraudulent transactions
Return transaction_id, amount, currency and fraud_reason for every transaction where fraud_label = 1 and transaction_status is 'completed'. Order the results by transaction_id ascending.
Tables: payment_fraud_detection_dataset · your result: 4 columns, 12 rowsDistinct fraud reasons
Return the distinct non-null fraud_reason values in a single column named fraud_reason, sorted alphabetically.
Tables: payment_fraud_detection_dataset · your result: 1 columns, 6 rowsTransactions per payment method
Count the transactions for each payment_method. Return payment_method and txn_count, ordered by txn_count descending and then by payment_method ascending.
Tables: payment_fraud_detection_dataset · your result: 2 columns, 6 rows
- 04Average amount by currencyBeginner
- 05Fraud count by entry modePower BI
- 06Countries with high fraud countsIntermediate
- 07Amount size bucketsIntermediate
- 08Fraud rate by yearIntermediate
- 09Methods above the overall average amountIntermediate
- 10International fraud rate by methodPower BI
- 11Rank merchant countries by fraudAdvanced
- 12Days since previous fraudAdvanced
- 13Running fraud amount by yearAdvanced
- 14Fraud reason shareAdvanced
- 15Top amount per payment methodPower BI
Get the practice kit: the full dataset, all 15 exercises, a starter .sql and the answer key. One-time $3.99.
Get the practice kit · $3.99Use it for
A finance dashboard
The fraud_
label rate, amount by customer_ gender and a breakdown of fraud_ reason. Excel, Power BI or Tableau. Why do 54 of 200 rows have fraud_
label = true? A root-cause class exercise
Hand out the rows and one question. The answer is in the data, not in the brief.
- Transactions200TXN000001249.99femaleTXN0000030.01unknownTXN00000715000male
A software demo
Believable transactions with transaction_
datetime, amount and currency to fill a screen in front of a buyer.
blueprint · payment-fraud-detection-dataset
Behind this dataset
Same schema. As many rows as you need.
These 200 rows came out of a blueprint — 19 columns with generation rules behind each one. Open it in Data Factory to retune a column, add your own, wire in foreign keys, and run it at the size you actually need.
- Include customer demographics
- Label each transaction as fraud/non-fraud
- Simulate account relationships
- Vary fraud patterns over time
1 credit per row. Preview 20 rows free. Buy rows for the full run.
- Exports
- CSV, JSON, JSONL, Parquet, SQL, Excel, TSV, XML
- Licence
- yours to use, including commercially
- API slug
- payment-fraud-detection-dataset