Premium · 2,500 US households at five banks and seven card issuers, two years
US Bank and Card Transactions
Five banks' raw statement lines, with every label behind them
7,627,186 rows in 14 linked tables: 2,500 customers with 2,500 checking, 1,531 savings and 4,522 credit card accounts, 4,096,158 posted transactions and 3,097,327 card authorizations over two years (1 October 2024 to 30 September 2026), each line written the way Chase, Bank of America, Wells Fargo, Citi or Capital One prints it, with the clean merchant, category, recurring stream and fraud case beside it.
Bank data is what fintech products are built on and the one thing nobody can share. Public card datasets give a merchant id, an amount and a fraud flag. A bank feed carries lines like CHECKCARD 0202 UBER *TRIP HELP.UBER.COM CA 25923273181631516699791 at one bank and Recurring Card Purchase 05/08 Apple.Com/Bill 866-712-7753 CA Card 5493 at another (both from these files), ACH lines in Nacha's layout, pay that arrives on a payday, bills that bounce and come back, overdraft fees under each bank's own rules, authorizations that never post and disputes that take weeks. This dataset is that feed for 2,500 households, every line with the answer a data team would otherwise label by hand.
Uses
What it is built for
Transaction enrichment
turn 2,187,649 distinct raw lines into merchant, category and MCC, across five banks' wrappers and the processors in them (Square, Toast, Clover, PayPal, Stripe), with the clean label on every row to train and score against.
Recurring payment and subscription detection
36,962 recurring streams are the truth, with first and last dates and why each ended (cancelled, price change, the customer switched card), so a detector is scored against what really recurred, not a guess.
Cash-flow underwriting and income verification
payroll on its payday with raises, bonuses and job changes, unemployment insurance, Social Security on its Wednesday, gig payouts, and the overdrafts, returned items and charge-offs that follow from them, on running balances.
Card fraud and authorization models
3,097,327 authorizations with 1.77% declined and the ISO response code for each, card testing, card-not-present runs at real online merchants, cloned cards far from home and lost or stolen cards nearby, each joined to its fraud case.
Disputes and chargebacks
9,716 disputes with Visa and Mastercard reason codes, Regulation E and Regulation Z timelines, provisional credit and outcomes, including holders who claimed their own purchase.
Overdraft, fees and credit cards
each bank's overdraft fee, threshold, daily cap and grace period, monthly fees and their waivers, savings rates that follow the Fed, and card statements with interest, minimum due, late fees and autopay.
Building and demoing fintech products
a budgeting app, an aggregator, a bank's own app or a lending dashboard, filled with lines that read like the real thing.
Teaching
SQL, pandas and modelling courses on data shaped like a bank's, with nothing confidential in it.
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 TabFormer | Sparkov (Kaggle) | PaySim | BankSim | |
|---|---|---|---|---|---|
| Raw statement lines as banks print them | yes, five banks and seven card issuers | no | no | no | no |
| Real merchant names | yes, 148 brands and 163,647 merchants | numeric ids | invented names | ids | ids |
| Checking, savings and credit cards per customer | yes | cards only | cards only | mobile money | card payments |
| Pay, bills and transfers by ACH, Zelle and check | yes | no | no | transfers and cash-out | no |
| Running balance on every line | yes | no | no | yes, and it gives fraud away | no |
| Authorizations and declines apart from postings | yes, with ISO response codes | an error column | no | no | no |
| Statements, interest, fees, overdrafts, returned items | yes | no | no | no | no |
| Disputes under Regulation E and Z | yes | no | no | no | no |
| Fraud cases with detection and card replacement | yes | a flag | a flag | a flag | a flag |
| Truth of what recurs | yes | no | no | no | no |
| Period | Oct 2024 to Sep 2026 | 1991 to 2020 | 2019 to 2020 | one month | six months |
In the data
What the full files show
Computed from every row of the full dataset when it was packaged, not drawn as a target. The free preview is a slice of the same data.
Card spending each month, debit and credit
- Debit card
- Credit card
Where card spending goes
- food and drink31.4%
- shopping29.9%
- travel9.3%
- transportation8.5%
- entertainment5%
- cash4.3%
- personal care3.5%
- health2.8%
- bills utilities2.5%
- insurance1.8%
Why card authorizations are declined
- over credit limit39.8%
- insufficient funds29.8%
- suspected fraud11.9%
- invalid card number8.2%
- card blocked: reported lost, stolen or compromised4.6%
- card not active3.4%
- account closed2.3%
Overdrawn and returned items per account a year
- 077.6%66.6%
- 1-38.1%14.5%
- 4-106%9.7%
- 11-203.5%4.2%
- 21+4.8%4.9%
- This dataset
- CFPB
Answer key
The labels behind every raw line
Each statement line comes with what a data team would otherwise label by hand. These columns carry it:
- transactions.descriptionThe raw statement line, as the account's bank prints it: what a model reads.2,187,649 distinct
- transactions.merchant_nameThe clean merchant or counterparty behind the line.21,350 values: Amazon, Starbucks, Uber…, 7.1% empty
- transactions.categoryWhat the money was for, with a finer subcategory beside it.21 values: food_and_drink, transportation, shopping…
- transactions.mccThe merchant category code the card network carried.742 to 8,661, mean 5,606.1, 25.5% empty
- transactions.stream_idThe recurring stream the line belongs to; recurring_streams says what recurs, how often and why it ended.36,217 values: RS00022500001, RS00232100001, RS00112000001…, 81.9% empty
- transactions.is_fraudA fraudster's charge, not the holder's, joined to its case by fraud_case_id.true on 0.1% of rows
- authorizations.decline_reasonWhy a declined authorization was declined, beside its ISO response code.7 values: over credit limit, insufficient funds, suspected fraud…, 98.2% empty
- fraud_cases.detected_byWho noticed the fraud: the customer or the bank's rule, and when.2 values: bank_rule, customer, 0.2% empty
- disputes.friendly_fraudA holder who claimed their own purchase as fraud.true on 0.062% of rows
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.
- Debit card fraud is 17.7 basis points of card value (the Federal Reserve measured 17.6 for 2023); credit card fraud is 33.1, 1.9 times debit (the Fed's 2016 survey: 17.13 against 9.15, 1.9 times).
- 4.39 dollars are disputed for every $1,000 spent on cards: 2.57 in fraud claims and 1.83 in claims against merchants (the CFPB reports 3.03 dollars disputed per $1,000 of credit card spending in 2024, without saying how much of it is fraud).
- 78% of checking accounts have no overdrawn or returned item in a year; 8% have one to three, 6% four to ten and 8% more (the CFPB's account-level study: 67%, 14%, 10% and 9%, measured before most large banks cut or dropped their fees).
- 12% of checking accounts paid an overdraft fee in 2025 (the Atlanta Fed's 2025 survey: 9% of people with a bank account). Accounts with no fee in a year: Chase 90%, Bank of America 83%, Wells Fargo 87%, Citi 100%, Capital One 100%.
- 39% of credit card accounts are charged interest in most of their last six statements (the CFPB: 49% of accounts revolve); statements that charge interest carry an average APR of 23.31% (the Fed's G.19, Q2 2026: 22.15%). The average credit line is $9,371 (the CFPB: $8,400).
- A household makes 50 card purchases a month across its cards (the Atlanta Fed's diary: 47.2 payments a month per person, 65% of them by card).
- Of card authorizations, 36% are contactless, 29% chip, 29% online or card on file and 2.6% swiped. 1.77% are declined: over credit limit 40%, insufficient funds 30%, suspected fraud 12%, invalid card number 8% of declines.
- Checking accounts see 1.27 returned items a year, concentrated in households whose spending outruns their income; 42 accounts were charged off.
Audit
50 of 50 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; every customer has one checking account; replacement cards point at the card they replace;
- every line's balance follows from the line before it, on every account (4,096,158 lines, no breaks), and every monthly statement reconciles from opening to closing balance;
- every card line traces to an approved authorization on its account, falls inside its card's life, and nothing posts after an account closed;
- ACH posts only on Federal Reserve business days, Social Security on its published days, and payroll lines read
PAYROLLfrom 20 March 2026; - each bank's overdraft fee, small-item threshold and daily cap hold on every fee, and Citi and Capital One charge none;
- every dated descriptor change, store closure, card acceptance rule (Costco takes only Visa among credit cards, WinCo no credit, Chick-fil-A shuts on Sunday) and Netflix price holds on the dates it applies;
- fraud cases are independent of the holder's age (chi-square p = 0.58) and income (p = 0.46).
All 50 checks
- ✓ customer_id is unique 2,500 rows
- ✓ account_id is unique 8,553 rows
- ✓ card_id is unique 11,710 rows
- ✓ stream_id is unique 36,962 rows
- ✓ statement_id is unique 185,291 rows
- ✓ overdraft_id is unique 7,258 rows
- ✓ return_id is unique 6,368 rows
- ✓ dispute_id is unique 9,716 rows
- ✓ fraud_case_id is unique 1,506 rows
- ✓ merchant_id is unique 163,647 rows
- ✓ accounts belong to customers
- ✓ cards belong to accounts
- ✓ streams belong to accounts
- ✓ every customer has one checking account
- ✓ replacement cards point at a real card
- ✓ transaction_id is unique and every row's balance follows from the row before 4,087,652 rows chained, 0 breaks
- ✓ transactions reference real accounts 0 dangling
- ✓ transactions reference real customers 0 dangling
- ✓ transactions reference real cards 0 dangling
- ✓ transactions reference real streams 0 dangling
- ✓ transactions reference real fraud_cases 0 dangling
- ✓ transactions reference real merchants 0 dangling
- ✓ every fraud transaction belongs to a fraud case
- ✓ ACH entries post only on Federal Reserve business days 0 off-day postings
- ✓ nothing posts after its account closed 0
- ✓ card purchases fall inside their card's active life 0
- ✓ payroll credits read PAYROLL from 20 March 2026 (Nacha) 32,344 of 32,344
- ✓ no 'AMZN Mktp US' line after February 2025 0
- ✓ Target's 'TARGET T-' form only from 11 May 2026, the old form only before 0 early, 0 late
- ✓ Lyft's dated form only from 17 April 2026 0 early, 0 late
- ✓ Max bills as HBOMAX.COM from 9 July 2025 0 late, 0 early
- ✓ no Rite Aid purchase after its last stores closed (3 Oct 2025) 0
- ✓ no Big Lots purchase while every store was shut (Feb to mid-April 2025) 0
- ✓ Social Security pays on its published days (2nd to 4th Wednesday, or the 3rd) 18,900 of 18,900
- ✓ disputes point at real transactions 9716 of 9716
- ✓ Netflix charges are the list price of their date, plus state tax where it applies 18,866 of 18,866
- ✓ Chick-fil-A takes no card on a Sunday 0
- ✓ Costco accepts Visa only among credit cards 0
- ✓ WinCo takes no credit cards 0
- ✓ every authorized posting traces to an approved authorization on its account 0 of 3,030,759
- ✓ every timestamp is written to the second, in one form {'transactions': 0, 'authorizations': 0}
- ✓ deposit statements reconcile: opening + credits - debits - fees + interest = closing 0 off
- ✓ card statements reconcile: opening + purchases + fees + interest - credits = closing 0 off of 96,839
- ✓ card minimum due is the larger of $40 or 1% plus interest and fees, capped at the balance
- ✓ overdraft fees per day stay within each bank's cap
- ✓ overdraft fees are each bank's published fee
- ✓ no overdraft fee on items at or under each bank's threshold
- ✓ Citi and Capital One charge no overdraft fees
- ✓ fraud cases are independent of income_quintile (chi-square) p = 0.464
- ✓ fraud cases are independent of age (chi-square) p = 0.580
Tables
14 tables, 7,627,186 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 posting as the bank prints it: the raw statement line, transaction and posted dates, amount, running balance, and the labels behind the line (merchant, category, MCC, channel, payment method, recurring stream, fraud case)4,096,158 rows · 24 cols
- authorizationsEvery card authorization, approved or declined: the descriptor the network carried, MCC, entry mode, wallet, card present or not, the ISO response code and the reason for a decline, fuel and hotel holds3,097,327 rows · 21 cols
- statementsMonthly statements for every account: opening and closing balance, credits, debits, fees, interest earned or charged, and for cards the minimum due, due date, limit and APR185,291 rows · 16 cols
- merchantsEvery merchant and counterparty seen: clean name, an example descriptor, MCC, category, city and state, brand, processor (Square, Toast, Clover and others) and how its descriptor is evidenced163,647 rows · 11 cols
- recurring_streamsThe truth of what recurs: pay, benefits, rent, utilities, phone, insurance, loans, subscriptions, transfers, with counterparty, method, frequency, typical amount, first and last date and why it ended36,962 rows · 15 cols
- cardsEvery plastic: debit and credit, network, last four digits, issued, expiry, the day it stopped working and why (reissued before expiry, lost, stolen, compromised, account closed), the card it replaced and the digital wallet it sits in11,710 rows · 12 cols
- disputesEvery dispute: fraud and merchant claims, the Visa or Mastercard reason code, Regulation E or Z, provisional credit, resolution and outcome, and claims a holder made on their own purchase9,716 rows · 16 cols
- accountsChecking and savings at one of five banks and credit cards at seven issuers: product, opened and closed dates, status at the end (open, closed, charged off), overdraft opt-in and protection, credit limit, APR, annual fee, statement day, network, rewards, how the holder pays8,553 rows · 20 cols
- overdraftsEach overdraft fee and the item it was charged on, under each bank's fee, threshold and daily cap7,258 rows · 8 cols
- returned_itemsACH debits and checks returned unpaid: insufficient funds (R01), re-presented at most twice, or an account closed (R02)6,368 rows · 10 cols
- customersAccount holders: age, place and time zone, household income and its quintile, housing, work, earners, marriage, children, vehicles, credit score, primary bank, when they joined and, for some, when they left2,500 rows · 25 cols
- fraud_casesEach compromised card: how it was compromised, the attempts (approved and declined), who noticed (the customer or the bank's rule), when the card was blocked and its replacement1,506 rows · 15 cols
- brandsThe 148 national and regional brands: category, MCC, parent, sales weight, the states they serve, store closures and reopenings, and the date a descriptor format changed148 rows · 13 cols
- charge_offsChecking accounts closed by the bank after 60 days overdrawn, with the amount written off42 rows · 5 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
4,096,158 rows · 24 columns · 7 foreign keys
- “Deposit Made In A Branch/Store”
- “ATM Withdrawal authorized on 07/23 3817 WASHINGTON ST MAR…”
- “Non-WF ATM Withdrawal Fee”
- Amazon5.3%
- Starbucks5.2%
- Uber4.8%
- Zelle3.9%
- McDonald's3.6%
- 21345 more values · 77%
- food_and_drink34%
- transportation15%
- shopping13%
- income5.4%
- bills_utilities5.3%
- 16 more values · 27%
- fast_food13%
- coffee8.5%
- rideshare6.1%
- online_marketplace5.3%
- p2p4.9%
- 98 more values · 62%
- in_store52%
- online22%
- ach17%
- zelle3.6%
- bank3.0%
- 5 more values · 2.3%
- debit_card38%
- credit_card37%
- ach17%
- zelle3.6%
- interest1.9%
- 5 more values · 2.4%
- NEW YORK2.2%
- New York2.1%
- CHICAGO1.7%
- Dallas1.5%
- Chicago1.4%
- 413 more values · 91%
- CA22%
- WA10%
- TX9.3%
- NY9.2%
- FL5.3%
- 50 more values · 44%
Keys
How the tables join
35 foreign keys, 31,591,648 references checked against the table each one points at.
accounts
- customer_idcustomers.customer_id8,553 rows checked0 orphans
authorizations
- card_idcards.card_id3,091,690 rows checked0 orphans
- account_idaccounts.account_id3,097,327 rows checked0 orphans
- customer_idcustomers.customer_id3,097,327 rows checked0 orphans
- merchant_idmerchants.merchant_id3,097,327 rows checked899 orphans
- fraud_case_idfraud_cases.fraud_case_id7,514 rows checked0 orphans
cards
- account_idaccounts.account_id11,710 rows checked0 orphans
- customer_idcustomers.customer_id11,710 rows checked0 orphans
charge_offs
- customer_idcustomers.customer_id42 rows checked0 orphans
disputes
- transaction_idtransactions.transaction_id9,716 rows checked0 orphans
- account_idaccounts.account_id9,716 rows checked0 orphans
- customer_idcustomers.customer_id9,716 rows checked0 orphans
- fraud_case_idfraud_cases.fraud_case_id4,147 rows checked0 orphans
fraud_cases
- customer_idcustomers.customer_id1,506 rows checked0 orphans
- account_idaccounts.account_id1,506 rows checked0 orphans
- card_idcards.card_id1,506 rows checked0 orphans
- replacement_card_idcards.card_id1,495 rows checked0 orphans
overdrafts
- account_idaccounts.account_id7,258 rows checked0 orphans
- customer_idcustomers.customer_id7,258 rows checked0 orphans
- transaction_idtransactions.transaction_id7,258 rows checked0 orphans
recurring_streams
- customer_idcustomers.customer_id36,962 rows checked0 orphans
- account_idaccounts.account_id36,962 rows checked0 orphans
- merchant_idmerchants.merchant_id35,388 rows checked4,346 orphans
returned_items
- account_idaccounts.account_id6,368 rows checked0 orphans
- customer_idcustomers.customer_id6,368 rows checked0 orphans
- stream_idrecurring_streams.stream_id4,485 rows checked0 orphans
statements
- account_idaccounts.account_id185,291 rows checked0 orphans
- customer_idcustomers.customer_id185,291 rows checked0 orphans
transactions
- account_idaccounts.account_id4,096,158 rows checked0 orphans
- customer_idcustomers.customer_id4,096,158 rows checked0 orphans
- card_idcards.card_id3,053,305 rows checked0 orphans
- auth_idauthorizations.auth_id3,030,759 rows checked0 orphans
- merchant_idmerchants.merchant_id3,586,122 rows checked0 orphans
- stream_idrecurring_streams.stream_id743,588 rows checked0 orphans
- fraud_case_idfraud_cases.fraud_case_id4,161 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.
- DATA_DICTIONARY.md: every table and column, how the systems join, the status codes.
- INTEGRITY.json: the 50 audit checks and their results, with audit.py, the script that ran them.
All 20 files
- customers.csv516 KB
- accounts.csv1.2 MB
- cards.csv1.1 MB
- transactions.csv987.3 MB
- authorizations.csv530.6 MB
- statements.csv21.4 MB
- recurring_streams.csv5.0 MB
- overdrafts.csv557 KB
- returned_items.csv631 KB
- charge_offs.csv2 KB
- disputes.csv1.7 MB
- fraud_cases.csv224 KB
- merchants.csv19.0 MB
- brands.csv13 KB
- README.md21 KB
- DATA_DICTIONARY.md19 KB
- SOURCES.md44 KB
- SOURCES.json68 KB
- INTEGRITY.json8 KB
- audit.py22 KB
Before you use it
Things to know
- Everything is synthetic. Names may match a real person's by chance; such a match means nothing. Emails are on the reserved
.exampledomain (gmail.example), so none reaches a real inbox. Card numbers are kept as the last four digits and the network; account masks, ACH company ids, reference and confirmation numbers are made up. - Real company names are labels only, used because statement lines carry them. No bank, issuer, network, merchant, biller or employer supplied, reviewed or endorses this data, and none of the figures describe them. Trademarks belong to their owners.
- The view is an aggregator's: each customer's checking and savings at one bank and their credit cards at up to seven issuers. Loans, mortgages and brokerage accounts appear only as the payments and transfers that reach these accounts.
amountis from the holder's side: negative takes money out (a purchase, a bill, a fee), positive brings it in (pay, a refund, a transfer). On a credit card account a purchase is negative, a payment positive, andbalance_afteris what is owed.transaction_dateis when the card was used, the check written or the ACH entry took effect;posted_dateis when it reached the account. Times (authorized_at) are on the customer's home clock (customers.tz), to the second.- Read codes and ids as text:
response_code(00,51),mcc,zip,account_mask,last4andcheck_numberkeep their leading zeros that way. - Wells Fargo, Citi and Capital One statement wording rests on fewer published examples than Chase's and Bank of America's; fee and interest wording is partly inferred at every bank.
- The overdraft rules are each bank's published terms in the window. Citi and Capital One charge no overdraft fees; Bank of America charges $10 with no debit card overdraft coverage. The share of accounts opted in to cover debit card purchases is an assumption, as no bank publishes it.
- 2,500 households cannot carry every rare event: a brand, a biller or a fraud pattern may appear only a few times.
Questions
Before you buy
Is this real data?
What do I get?
Can I try it before buying?
How was it checked?
Are these real bank statements?
What labels come with the raw lines?
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 9- transactions, rows per monthMay 2025 – Oct 2026
AML Transaction Monitoring
$5launch priceOne UAE bank, 10,000 customers, eighteen months
A UAE bank's whole trail from KYC to STR, with the laundering nobody caught
Answer key
- is_suspicious
- typology
- ring_id
- +7 more
- Rows
- 11,711,393
- Tables
- 16
- Checks
- 129 of 129
Free previewProfile and preview Weekly 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 preview

