Off-platform billing shown to Shopify merchants during onboarding

Our app supports multiple platforms (Shopify, WooCommerce, Magento) and uses both Shopify Billing API and Stripe depending on where the merchant came from.

The problem: When a Shopify merchant installed our app, they were redirected to create an account on our website. After registration, the onboarding showed a plan selection page that defaulted to Stripe checkout - because at that point we hadn’t yet identified them as a Shopify user. This triggered the rejection.

Our fix:

  • Removed billing/plan selection from the onboarding flow entirely. All new users start on the Free plan.

  • When the embedded Shopify app links to our standalone site, we pass a shopify_reconnect URL param and persist it in localStorage so the Shopify origin survives registration and email verification redirects.

  • Once the user is authenticated, we auto-set billingProvider: 'shopify' on their account so they only ever see Shopify Billing when upgrading.

Does this approach comply with Shopify’s billing requirements? Any feedback appreciated.

Hey @Andrei_A - thanks for reaching out.

Your updated approach sounds like the right direction here. The important part is that a merchant who installs through Shopify should never be sent to Stripe or any other off-platform checkout for app-related charges. If they start free and only see Shopify Billing when they upgrade, that aligns much better with the Billing API requirement.

The one thing I’d be careful with is relying only on localStorage to preserve the Shopify origin through registration/email verification. Ideally server-side durability or a signed continuation token tied to the registration flow would be best here, so cases like incognito mode, cleared storage, or email verification redirects can’t accidentally drop the Shopify context and fall back to Stripe.

For App Review, I’d include clear test notes and a screencast showing:

  1. Install from Shopify
  2. Redirect/register on your site
  3. Complete email verification if applicable
  4. Land on the free plan
  5. Upgrade only through Shopify Billing

If existing Stripe customers can later install the Shopify app, I’d also make sure you have logic to detect that and avoid double billing, for example by migrating/crediting them before creating a Shopify Billing subscription.

Hope this helps, but let me know if I can clarify anything on our end here.

Thank you very much @Alan_G. I really appreciate it.