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.

  • opened 12 times
  • last updated 29 Jul 2025
  • by GoMask
The brief that made it

Training and evaluating machine learning models for payment fraud detection

Sample rows

preview · 8 of 200 rows · all 19 columns
transaction_idstringcustomer_genderstringamountfloatfraud_labelbooleanfraud_reasonstringtransaction_datetimedatetimecurrencystringcustomer_idstringmerchant_idstringpayment_methodstringdevice_idstringip_addressstringcustomer_countrystringmerchant_countrystringis_internationalbooleantransaction_statusstringentry_modestringmerchant_category_codestringcustomer_ageinteger
TXN000001female249.99falseblank2024-03-14T10:07:23ZUSDCUST0001MCH0001credit_cardDEV0001A192.168.1.101USUSfalsecompletedchip531129
TXN000002male19.95falseblank2020-11-28T18:22:14ZGBPCUST0002MCH0002debit_cardDEV0002B203.0.113.5GBGBfalsecompletedchip581233
TXN000003unknown0.01truetesting_abuse2023-07-02T13:15:44ZINRCUST0003MCH0003ewalletblank10.0.0.21ININfalsefailedonline59990
TXN000004female85.44falseblank2022-02-11T20:35:12ZEURCUST0004MCH0004credit_cardDEV0004C198.51.100.8DEDEfalsecompletedcontactless541141
TXN000005male1250falseblank2024-01-05T08:12:36ZUSDCUST0005MCH0005bank_transferblank172.16.0.4USCAtruecompletedonline601254
TXN000006female57.43falseblank2023-11-17T15:05:55ZEURCUST0006MCH0006ewalletblank217.160.0.12FRDEtruependingonline573227
TXN000007male15000truehigh_value_outlier2022-09-10T19:49:26ZUSDCUST0007MCH0007prepaid_cardDEV0007D203.0.113.111USMXtruereversedmanual799583
TXN000008male720.5falseblank2021-08-23T23:58:10ZAUDCUST0008MCH0008credit_cardDEV0008E8.8.8.8AUAUfalsecompletedchip554135

What the 200 rows show

from the 200-row sample

Unknown (customer gender) stands out: 22 of its 22 rows have fraud_label = true, against 32 of 178 for the rest.

  • 27%fraud_label = true
  • 100.0median amount
  • 4transaction statuses
  • 5entry modes
  • 6payment methods
  • 11currencies
Fraud label rate by customer_genderfraud_label = true
0%50%100%15%male12 of 814%female3 of 7681%other17 of 21100%unknown22 of 22

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.

amount200 rows, in bands of 10M
0100200196000000004050M100Mamount →

Median 100.0, from 0.0 to 100,000,000.

fraud_reason54 rows with a value · 146 left blank
  1. testing_abuse22
  2. high_value_outlier12
  3. synthetic_identity9
  4. card_not_present5
  5. stolen_card3
  6. account_takeover3
19 columns by typefrom the column list below
  • string 14
  • integer 1
  • float 1
  • datetime 1
  • boolean 2

Columns

19 columns in four groups
blueprint · 19 columns
columntypedescriptionexample
Text 14 columns
transaction_idstringUnique identifier for each payment transactionuniqueTXN000001
currencystringISO 4217 currency code used for the transaction (e.g., USD, EUR)11 currenciesUSD
customer_idstringUnique identifier for the customer making the transactionCUST0001
merchant_idstringUnique identifier for the merchant receiving the paymentMCH0001
payment_methodstringPayment method used (e.g., credit_card, debit_card, bank_transfer, ewallet)6 valuescredit_card
device_idstringIdentifier for the device used to initiate the transactionoptionalDEV0001A
ip_addressstringIP address from which the transaction was initiatedoptional192.168.1.101
customer_countrystringCountry code of the customer (ISO 3166-1 alpha-2)optionalUS
merchant_countrystringCountry code of the merchant (ISO 3166-1 alpha-2)optionalUS
transaction_statusstringStatus of the transaction (e.g., completed, failed, pending, reversed)completed · failed · pending · reversedcompleted
fraud_reasonstringShort code or description indicating the reason for fraud label (e.g., stolen_card, account_takeover, synthetic_identity)6 reasons · optionaltesting_abuse
entry_modestringHow the payment information was entered (e.g., chip, swipe, online, contactless)chip · swipe · online · contactless · manual · optionalchip
merchant_category_codestringMerchant Category Code (MCC) indicating the type of merchantoptional5311
customer_genderstringGender of the customermale · female · other · unknown · optionalfemale
Numbers 2 columns
amountfloatMonetary value of the transaction0 or more249.99
customer_ageintegerAge of the customer at the time of transaction0 to 120 · optional29
Dates and times 1 column
transaction_datetimedatetimeDate and time when the transaction occurred2024-03-14T10:07:23Z
True or false 2 columns
is_internationalbooleanIndicates if the transaction is cross-border (customer and merchant in different countries)optionalfalse
fraud_labelbooleanGround-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.

  1. 01BeginnerFreeSELECT · WHERE · ORDER BY

    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 rows
  2. 02BeginnerFreeDISTINCT · IS NOT NULL

    Distinct 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 rows
  3. 03BeginnerFreeGROUP BY · COUNT

    Transactions 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
  1. 04Average amount by currencyBeginner
  2. 05Fraud count by entry modePower BI
  3. 06Countries with high fraud countsIntermediate
  4. 07Amount size bucketsIntermediate
  5. 08Fraud rate by yearIntermediate
  6. 09Methods above the overall average amountIntermediate
  7. 10International fraud rate by methodPower BI
  8. 11Rank merchant countries by fraudAdvanced
  9. 12Days since previous fraudAdvanced
  10. 13Running fraud amount by yearAdvanced
  11. 14Fraud reason shareAdvanced
  12. 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.99

Use it for

  • fraud label27%54 of 200 rowsmean amount by custom…7kmale3kfema…4.8Mother13.6Munkn…

    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.

  • A software demo

    Believable transactions with transaction_datetime, amount and currency to fill a screen in front of a buyer.

Not quite right?

Make it yours.

Same 19 columns, your size and your rules. See 20 rows before you pay.

Preview 20 rows free

1,000 rows: $1.99 · 10,000: $12.99One-time. No subscription. All prices

This dataset200 rows19 columns
Yours1,000 rows19 columnsip_address: UK only

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.

Rules it was built with
  • Include customer demographics
  • Label each transaction as fraud/non-fraud
  • Simulate account relationships
  • Vary fraud patterns over time
Rows
Open the blueprint in Data Factory

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

What should your data show?

Preview 20 rows free
No signup. No card.