It has been one of those weeks where I was busy the entire time, but seemingly not all that much came of it. A good chunk of my week went to resolving a curious problem affecting a handful of TidBITS members. While the initial days of the problem were quite frustrating, the resolution was both gratifying and a testament to how wonderfully helpful TidBITS readers can be.
The first indication we had a problem came from our support wiz, Lauri Reinhardt. She was helping a TidBITS member whose renewal was declined by the bank. He had contacted Citibank, and the customer service rep said the transaction had failed because it was being put through as cryptocurrency. (This was patently ridiculous, especially given our public distrust of the entire field—see “Understand Cryptocurrency, but Don’t Invest in It,” 20 April 2022.) His protestations fell on deaf ears, so he wrote to Lauri. She looked through the Stripe transaction logs but could find no indication of anything related to cryptocurrency. But she did notice an uptick in subscription renewal failures.
When she reported this, our developer Eli looked also and discovered that most of the failed transactions had a
transaction_not_allowed decline code, and all of those had come from Citibank. Simultaneously, I heard from one of my TidBITS Content Network subscribers about a failed renewal, and it turned out that he was using a Citibank credit card, too.
It was time to contact Stripe support. The problem might be affecting only 10 people so far this month, but it was just going to get worse, and not everyone can switch to another credit card from a different bank. At the time, I also thought it might be a more general Stripe problem, though that turned out not to be the case.
To make a long story shorter, Stripe’s email support, in the person of a guy named Tristan, was sympathetic but insistent that Stripe wasn’t doing anything wrong. During this time, more TidBITS members were having conversations with Citibank, all of which devolved to Citibank claiming that we were selling cryptocurrency, which Citibank and other credit card companies haven’t allowed for years. (I suspect this may be related to the volatility of cryptocurrency in various ways.) No one was able to get Citibank to back down and approve the transaction, with reader Brian Stone saying that he might as well have been talking to his neighbor’s dog.
I couldn’t find any way to call Citibank myself, not being a customer, so I kept asking Tristan to escalate. Eventually, I used Stripe’s support option to request a phone call and, amusingly, got a call a few minutes later from Tristan, who was on phone support that day but wasn’t expecting to talk to me. He had a strong Irish accent and was very nice, and while he continued to reiterate that he could find no indication that Stripe was doing anything wrong (which I agreed with), he did understand my point that only Stripe was in a position to resolve the problem. He promised to see if he could find someone else who could help. Next, I heard from Tony, and then from Charles, who held the party line in the face of my persistent requests to have someone at Stripe call Citibank. But when I mentioned that I’d be writing about my experience in TidBITS, Charles brought in Matt.
I don’t know if there was background communication that resulted in Matt helping me, but he was a longtime TidBITS reader who knew full well that TidBITS had nothing to do with cryptocurrency. He promised to look for contacts within Stripe who could call Citibank, but before that, he introduced something new to the discussion, the Merchant Category Code. He noted that changes to the MCC can sometimes cause problems like this, but since ours hadn’t changed recently, he didn’t think that was it.
“Hold on a moment!” I thought. I didn’t even know we had an MCC, but if ours wasn’t accurate, perhaps Citibank had changed something on their end such that they had started misidentifying our transactions. According to Matt, our MCCs had evolved through:
- Computer Software Stores (February 2018 to July 2018)
- Computer Programming (July 2018 to August 2018)
- Computers, Peripherals, and Software (August 2018 to October 2020)
- Computer Programming (October 2020 to present)
Those changes had all been made by Stripe algorithms, and none described what we do well. Noting that sometimes human intervention was necessary to get an accurate MCC, Matt provided me with a list of them. For TidBITS memberships, I chose “Miscellaneous Publishing and Printing” and (the next day, since I missed it the first time) “Digital Goods Media: Books, Movies, Music” for TidBITS Content Network. Matt changed those codes for me, after which retries of the payment requests worked instantly. Finally!
All’s well that ends well, and although I had to be pushier than I prefer, persistence paid off. By getting to a TidBITS reader in Stripe who was willing to share more of what happens behind the scenes, I finally found the key to solving the problem.
In fact, that’s the second time in the past month that a TidBITS reader has helped out. When I wrote about issues associated with Cloudflare’s Automatic Platform Optimization service in “LittleBITS: Website Changes for Speed and Security” (6 June 2022), a TidBITS reader named Jonas, who works on the tech side of Cloudflare, emailed me with some welcome advice. Thanks to both Matt and Jonas! As Eli drily noted afterward, one way to get great support is to spend 32 years building a loyal following. I like to think of it as good karma.