Unlisted public app - is Shopify Billing API mandatory, or can we use Stripe?

There’s another path that might work better for your use case.

Instead of a public app, your customers could create custom apps in their own Dev Dashboard and share the Client ID and Client Secret with your platform. Your platform then uses the client credentials grant to generate access tokens on their behalf. This is essentially the same as the old flow where merchants shared static access tokens, except the tokens now expire after 24 hours and need to be refreshed.

The upside is that custom apps don’t require App Review or Billing API. The downside is slightly more onboarding friction (merchant creates app, copies credentials to your platform) and your platform needs to handle token refresh. But if you’re already set up to store credentials per-merchant, adding a token refresh call every 24 hours is straightforward. This tutorial has code examples for how to handle the grant.

This was confirmed as a valid approach in this thread where Kellan explicitly mentioned it as an option for similar use cases.