Stripe shut down my indie word game and won't clarify why

17 points by DamnInteresting a day ago

I've been putting some finishing touches on my daily web-based word game Omiword (https://www.omiword.com/). It was even discussed on HN in a recent Show HN thread[1]. The idea is for the player to drag tiles within sectors to spell four common English words.

After sharing the game with some people, and receiving mostly positive feedback, one of the frequently requested features was the ability to pay a small one-time fee to unlock access to the puzzle archive. I decided I should get that working before I announce the game to the intended wider audience.

I've been using Stripe for these sorts of projects for over 10 years, and it seemed like a perfect fit for this little game. I created a payment link, coded a webhook, and with a few days of coding and testing, it seemed to be working swimmingly. A few early adopters even elected to pay the $5 USD fee to unlock the archive.

Then on 08 May 2025, I received an email from Stripe:

> We’re writing to let you know that we have determined that your business, Omiword (account ID: [redacted]), is in violation of the Stripe Services Agreement. Specifically, we are unable to accept payments for the use of Stripe in a manner inconsistent with its intended use such as misusing data, or using it to store value, as mentioned on our Restricted Businesses list.

I looked through the Stripe restricted business list[2], and I don't see anything resembling Omiword. I wrote back, explaining that this is just a free daily word game, and players have the option to pay to unlock access to older puzzles. No gambling, no in-game currency, no adult content. Stripe eventually wrote back to say:

> Unfortunately, following an additional review of your account we’re still unable to support your business as it falls under one of our restricted businesses categories.

After further exchanges with their support, I finally got a hint what the issue might be: the initial handful of charges on the account were to my own credit card. I explained that these were just test transactions, getting the webhook working properly in production. I wasn't aware this was an issue. On 13 May they replied:

> We're able to continue accepting payments for your business moving forward as long as all future transactions come from customers and not from you.

Okay, I acknowledged and agreed to this stipulation. I've stuck to it. Nevertheless, Stripe kept sending me automated messages about my account's imminent closure. I contacted support again, and they just kept replying along the lines of, "My team and I are reviewing the details. We're committed to completing this review as soon as possible."

Today, about two weeks after the initial notice, I received this from Stripe:

> This is our final notice, informing you that we’ve determined that your business, Omiword (account ID: [redacted]) is in violation of the Stripe Services Agreement. [...] As a result, your account has now been closed and can no longer accept payments.

Sure enough, the payment link in Omiword now leads to a "Something went wrong" page.

In my experience, Stripe used to be great. But now they spend weeks "investigating" a simple web-based indie game. Further, this game is owned by a Stripe customer with over 10 years in good standing. At this point they've wasted hours of my life, and I have to start over with another payment provider, or give up my modest monetization hopes for this game (speaking of which, any recommendations for a payment alternative?).

I know that Stripe is not obligated to do business with anybody, including me. They're not even required to explain themselves. But if they are going to offer their services, and then cause enormous hassles for people who take them up on it in good faith, their actions should have appropriate consequences for their reputation.

[1] https://news.ycombinator.com/item?id=43654350

[2] https://stripe.com/legal/restricted-businesses

josephcsible a day ago
  • bruce511 11 hours ago

    Stripe's problem is that they operate inside a global banking framework which is both highly regulated and obsessively monitored.

    Problem 2 is that a world of crime, and hence money laundering exists. They're expected, nay required, to detect and prevent that. Which is (of course) nigh impossible.

    From your side, as a customer, you are offering only the tiniest amount of value (and obviously this product even less.)

    So when you (innocently) indulge in behavior which mimics a money launderer, the system complains. There's no real motivation for a human to set the "this is not a money launderer" flag because they're then on the hook when it turns out you were deliberately setting up the account for money laundering later on.

    There is a lesson here. And it's a valuable one to share. Don't purchase your own stuff with your own card. Most payment processors have defined test card numbers for this purpose.

    I'm sorry you encountered this issue.

    • josephcsible 11 hours ago

      > There is a lesson here. And it's a valuable one to share. Don't purchase your own stuff with your own card. Most payment processors have defined test card numbers for this purpose.

      This seems like victim blaming. And although the OP in this case did that, it didn't happen in the rest of the ones I linked.

      Also, did you miss this part?

      > We're able to continue accepting payments for your business moving forward as long as all future transactions come from customers and not from you.

      He kept his end of the bargain, but Stripe didn't keep theirs.

      • bruce511 10 hours ago

        Clearly one can litigate this specific case, and numerous other individual cases.

        But equally clearly that approach does not scale. Even more so when this goes into a 'low value customer ' bucket.

        Imagine if the list of cases above wasn't 10 cases, but 10 000 cases. How then might your approach to investigating each one be different?

        It's easy yo see this case as a simple customer service issue. But in the banking industry it's a lot more complicated than that.

        • josephcsible 10 hours ago

          > Imagine if the list of cases above wasn't 10 cases, but 10 000 cases. How then might your approach to investigating each one be different?

          That should be Stripe's problem to figure out, and they shouldn't get to punt by saying "guilty until proven innocent".

          • bruce511 10 hours ago

            It is Stripe's problem to figure out, and it seems they have (to their satisfaction. )

            >> they shouldn't get to punt by saying "guilty until proven innocent".

            That's certainly an opinion, and almost certainly a common small-customer opinion.

            Unfortunately in the real world, that's not how it works. In the real world businesses fo not operate with a "innocent until proven guilty" attitude. Quite the reverse.

            Pretty much any security starts with "guilty" and moves up from there. For example my building has a buzzer, not an open door. I assume all visitors are nefarious unless someone in the building vouches for them by buzzing them in.

            A small business has scope to individually vet each customer. For high value transactions we do due diligence (on both sides) looking for possible problems.

            A business like Stripe at scale necessarily doesn't behave like two individuals would. You can wish it so, but that's not enough.

            Understanding this imbalance between the size of the consumer and the size of the supplier is helpful. (It's one reason big customers tend to favor big suppliers. )

            I too wish that my bank could bend to my needs and requirements. I wish the world treated me in good faith assuming only good intentions. Alas thats not the world I live in, and understanding that has made me more content.

  • DamnInteresting 21 hours ago

    Yikes, that sure looks like a pattern. Back in 2015 when I first started using Stripe, they seemed so welcoming and easy to work with. The enshittification is real.

atmosx a day ago

My guess is that it’s an AI-generated block and falls within the acceptable margin of error they’ve set.

v5o a day ago

[dead]