If you want to check my working, it’s all here. I’ve left in the parts that don’t flatter me: a safety check that turned out to be contaminated, and two accounts I had to kill after they’d already passed.
share of all CFPB dispute complaints, per month. Window 2022-11 to 2026-08, 46 usable months; 2026-09 dropped as part-published. Three CFPB issue types across all products. I compare the first third of that window against the last third. Same length on both sides, so neither end gets an easier ride.
Issues counted: Problem with a purchase shown on your statement; Problem with a lender or other company charging your account; Problem with a purchase or transfer
The main test is a seasonal Mann-Kendall. It only looks at the order the numbers come in, not how far apart they are, which matters here because these counts jump around far more than most tests assume. It also compares each January against other Januaries, so a busy December can’t fake a trend. I run the plain version alongside it. If the two disagree I go with the seasonal one and show you the disagreement.
Test 74 companies and one or two will look significant on luck alone, so I correct for that (Benjamini-Hochberg, q=0.05) across all of them rather than across a shortlist I’d already picked. The cutoff that applied was p < 0.01419.
Before trusting any of this I checked the test could clear its own bar: the smallest p it can produce is 1e-11, comfortably under the cutoff. I’ve been caught by that before, and a gate that can’t open looks exactly like a finding.
Ranked by how big the move was, with what happened to each one afterwards. Getting through the maths is only the start. Two of these were killed later.
How to read it: share before / now is their slice of every US dispute complaint, then and lately. Extra a quarter turns that into real complaints at today’s volumes. Luck is the chance a pattern this clear turned up by accident, so smaller is better and anything above 0.01419 was thrown out.
| Company | Share before | Share now | Extra a quarter | Luck | Recent window | Review | Tier |
|---|---|---|---|---|---|---|---|
| Chime Financial Inc | 3.62% | 6.37% | +286 | 5e-06 | holds | WEAKEN | Warm |
| CAPITAL ONE FINANCIAL CORPORATION | 7.75% | 9.96% | +230 | 0.005 | holds | REFUTE_SUBSTANCE | DQ |
| GOLDMAN SACHS BANK USA | 2.67% | 4.16% | +156 | 3e-04 | full window only | HOLD | ICP |
| CITIBANK, N.A. | 9.38% | 10.55% | +121 | 0.003 | full window only | REFUTE_SUBSTANCE | ICP |
| Paypal Holdings, Inc | 1.12% | 1.87% | +78 | 5e-06 | holds | HOLD | Hot |
| Klarna AB | 0.09% | 0.66% | +59 | 2e-09 | holds | HOLD | Watchlist |
| ROBINHOOD MARKETS INC. | 0.08% | 0.59% | +53 | 6e-07 | holds | HOLD | Hot |
| FinCo Services Inc DBA Current | 0.23% | 0.61% | +40 | 3e-05 | holds | HOLD | Watchlist |
| NAVY FEDERAL CREDIT UNION | 2.02% | 2.35% | +35 | 0.003 | full window only | REFUTE_SUBSTANCE | ICP |
| Affirm Holdings, Inc | 0.29% | 0.58% | +30 | 3e-05 | holds | WEAKEN | Watchlist |
| CLGF Holdco 1, LLC | 0.21% | 0.35% | +14 | 3e-04 | full window only | REFUTE_SUBSTANCE | DQ |
| Branch Messenger, Inc. | 0.05% | 0.16% | +12 | 0.001 | full window only | REFUTE_SUBSTANCE | ICP |
“Recent window” asks whether it still holds if I throw away the oldest third of the data. For five of the twelve it doesn’t. I’ve marked which five rather than quoting you a percentage, because you need to know which company you’re about to email.
| Company | Reason | Share before | Share now |
|---|---|---|---|
| CLGF Holdco 1, LLC | Cannot identify account | 0.21% | 0.35% |
| CAPITAL ONE FINANCIAL CORPORATION | Data artifact - its step at 2026-04 is DISCOVER BANK ceasing to report separately, not a change at this company | 7.75% | 9.96% |
| DISCOVER BANK | Data artifact - stops reporting from 2026-04; its complaints are filed elsewhere | 3.98% | 2.18% |
| UPGRADE, INC. | Signal reversed - share falling, not rising | 0.19% | 0.09% |
| PENTAGON FEDERAL CREDIT UNION | Signal reversed - share falling, not rising | 0.20% | 0.08% |
| FIRST NATIONAL BANK OF OMAHA | Signal reversed - share falling, not rising | 0.33% | 0.20% |
| Netspend Corporation | Signal reversed - share falling, not rising | 0.59% | 0.40% |
| REGIONS FINANCIAL CORPORATION | Signal reversed - share falling, not rising | 0.50% | 0.24% |
| FIFTH THIRD FINANCIAL CORPORATION | Signal reversed - share falling, not rising | 0.65% | 0.36% |
| U.S. BANCORP | Signal reversed - share falling, not rising | 2.07% | 1.74% |
| ALLY FINANCIAL INC. | Signal reversed - share falling, not rising | 0.53% | 0.18% |
| CITIZENS FINANCIAL GROUP, INC. | Signal reversed - share falling, not rising | 0.77% | 0.36% |
| Incomm Holdings Inc. | Signal reversed - share falling, not rising | 0.79% | 0.32% |
| TRUIST FINANCIAL CORPORATION | Signal reversed - share falling, not rising | 1.33% | 0.79% |
| BARCLAYS BANK DELAWARE | Signal reversed - share falling, not rising | 3.14% | 2.29% |
| Bread Financial Holdings, Inc. | Signal reversed - share falling, not rising | 2.57% | 1.28% |
| JPMORGAN CHASE & CO. | Signal reversed - share falling, not rising | 11.03% | 8.58% |
| WELLS FARGO & COMPANY | Signal reversed - share falling, not rising | 9.35% | 6.69% |
Read those two rows together. Discover stops filing and Capital One jumps in the same month. Neither company changed; the complaints just moved from one name to the other. So don’t read Discover as a company that fixed its dispute problem. An earlier version of this page did exactly that, and it was wrong.
Two measures of what happened to each complaint, from the same database: how often the customer got money back, and how often the company filed its reply late. A rate only counts if it went up on its own and went up faster than the market did. Beating the market can take credit away from a company; it can never hand credit to one that declined.
Market: refunds 24.02% → 21.55% (-2.47 pts) · late replies 0.86% → 1.24% (+0.37 pts). Both windows are 12 months; a company window needs 50 closed complaints for its rate to be used at all.
How to read it: refunds is how often the customer got money back, late is how often the company filed its reply late, each shown as then → now. The vs market column next to each is how that compares with everyone else over the same period. A plus means they moved worse than the market, which is the direction that counts here.
| Company | Refunds | vs market | Late | vs market | Signal |
|---|---|---|---|---|---|
| Chime Financial Inc | 9.3% → 6.8% | -0.0 | 0.00% → 0.00% | -0.4 | neutral |
| CAPITAL ONE FINANCIAL CORPORATION | 20.6% → 17.0% | -1.2 | 0.00% → 0.02% | -0.3 | neutral |
| GOLDMAN SACHS BANK USA | 49.0% → 30.9% | -15.6 | 0.00% → 0.00% | -0.4 | neutral |
| CITIBANK, N.A. | 45.2% → 41.9% | -0.7 | 0.00% → 0.00% | -0.4 | neutral |
| Paypal Holdings, Inc | 23.1% → 36.5% | +15.8 | 0.00% → 0.12% | -0.3 | confirms |
| Klarna AB | 5.7% → 17.8% | +14.6 | 5.68% → 6.60% | +0.5 | confirms |
| ROBINHOOD MARKETS INC. | 0.0% → 0.0% | +2.5 | 1.72% → 2.77% | +0.7 | confirms |
| FinCo Services Inc DBA Current | 7.6% → 5.2% | +0.1 | 7.61% → 21.09% | +13.1 | confirms |
| NAVY FEDERAL CREDIT UNION | 20.3% → 18.9% | +1.0 | 0.00% → 0.00% | -0.4 | neutral |
| Affirm Holdings, Inc | 0.0% → 0.0% | +2.5 | 0.00% → 0.00% | -0.4 | neutral |
| CLGF Holdco 1, LLC | 34.7% → 20.9% | -11.3 | 0.00% → 0.00% | -0.4 | neutral |
| Branch Messenger, Inc. | 0.0% → 0.0% | +2.5 | 0.00% → 0.00% | -0.4 | insufficient |
A 0.00% rate in both windows means the field is empty, not that they’re coping. Plenty of large issuers never file a late response at all. Insisting on a real rise takes care of that, since zero to zero isn’t a rise. And be clear what this signal is: a second question asked of the same database, not a second source. Job listings would be properly independent, but I could only read 2 of 12 boards.
I wrote these down before I’d written the scorer. If any one of them fired, the plan was to bin the method rather than patch around it.
Each one is a way the whole approach could have been fooling me. If any had fired, the list would not exist.
| Condition | Result | Verdict |
|---|---|---|
| K1 — is it secretly measuring size? | rank correlation between the trend statistic and company volume is -0.245, limit 0.30. The superseded volume method scored +0.78 on this test and was refuted for it. | pass |
| K2 — is it just the tide? | a synthetic company growing at exactly the pool rate scores p=0.541 and is correctly invisible; one genuinely rising scores <1e-16. | pass |
| K3 — does it reproduce what is known? | Truist, ranked strongest by three earlier passes, is not a lead (-0.546 pts). Capital One ranks high (+2.209 pts). Both were later overturned by review, and that is recorded rather than hidden. | pass |
| K4 — are there enough to be a list? | 12 leads against a pre-registered minimum of 5; 9 excluded as new entrants. | pass |
| K5 — is the window doing the work? | 12 leads over the full window, 10 over the recent two thirds, 7 in common. | pass |
K3 has an asterisk and it deserves it. I set it up from an earlier probe that covered the same merger, so its Capital One half just confirmed the artifact a second time instead of testing the scorer. The Truist half is fine. I’d rather tell you a check was contaminated than quietly let it pass.
Fair question, so here are both bars moved in both directions. The scorer prints this itself, which means you can check it rather than take my word for it.
The first bar is how small a company has to be before I stop testing it. The second is how strict I am about ruling out luck.
| Smallest company tested complaints a year | Companies tested | Companies that passed |
|---|---|---|
| 1 | 425 | 31 |
| 6 | 149 | 36 |
| 12 | 110 | 27 |
| 24 | 74 | 21 |
| 36 | 61 | 16 |
| 60 | 47 | 13 |
| 120 | 35 | 13 |
Look at the shape. Dropping the floor too far actually loses leads, because testing hundreds of near-empty companies makes the correction harsher for everyone. Past a point, loosening the rules just makes the list worse.
| How strict the luck filter is lower is stricter | Companies that passed |
|---|---|
| 0.01 | 15 |
| 0.05 | 21 |
| 0.1 | 24 |
| 0.2 | 28 |
One agent writes the strongest honest case it can for each account. Then a different model is told to find the hole in it. The second one never sees the first one’s own list of doubts, because if you hand someone a list of known flaws they check that list and stop looking. 181 tests across the twelve, all recorded.
| Outcome | N | Meaning |
|---|---|---|
| WEAKEN | 2 | stands, an element corrected |
| REFUTE_FIXABLE | 5 | one rewrite permitted, then final |
| REFUTE_SUBSTANCE | 5 | not a real buying signal — dropped |
The five repairable accounts got one rewrite each, then went to a final reviewer who could only say hold or drop. 5 held, 0 dropped, but every one came back with specific wording it had to fix first. 24 corrections in all. They’re applied.
Things the reviewers caught that the analysts missed: a whole account whose rise was just a merger; another that only passed because it was big enough to make a tiny move look significant; a claim that had the sign backwards against its own source file; and a “recent” turning point that was really just the last date the search was able to return.
I wrote the rules down before I built the scorer. Four times I then changed one, and each change had to be recorded in that file with a date and a reason. Here they are, pulled straight out of it — the codes are my own filing, so ignore them and read the sentences. If I’d moved a bar without writing it down, it couldn’t appear in this list.