We could offer our customers both options and let them choose which one is best.
Stripe also says not to do it:
> Your API keys give you access to Stripe’s systems and a global financial network. That access is what card testers want to exploit, so it’s important to keep your keys safe and put safeguards around the functionality those keys provide to prevent fraud and other malicious activity.
https://stripe.com/docs/card-testing#stripe-mitigations
> Your secret API key can be used to make any API call on behalf of your account, such as creating charges or performing refunds. Treat your secret API key as you would any other password. Grant access only to those who need it. Ensure it is kept out of any version control system you may be using.
Flouting the rules is the basis for a lot of successful businesses.
I think though that there's a point where you need to move past the bad practice and find, or create the right way to do what you're trying to do.
https://zapier.com/help/doc/how-get-started-stripe
It looks like this documentation might predate Stripe's auto-generated API keys, which generates a separate API key for each successive app, and then you are able to identify the app and revoke only those keys:
The only drawback comes into play with marketplace and platform apps. The platform itself may already be using OAuth with their customer.
We could offer our customers both options and let them choose which one is best.
A couple of dashboard screenshots:
Stripe key collection:
https://i.imgur.com/q6evqlT.png
Plan Upgrade:
https://i.imgur.com/nwBZ2wL.png
EDIT: In the case of Stripe keys, I wonder if it's a strategy to bypass Stripe's "carding" detection? It seems like spreading out test transactions across multiple stripe accounts would make detection more difficult.
https://stripe.com/docs/card-testing