Shopify App Review keeps rejecting our free read-only connector app for “external billing” without showing any actual in-app billing flow

Hi everyone,

I’m posting here because I’m stuck in a loop with Shopify App Review and frontline support, and I want to know whether anyone else has dealt with this exact situation.

We built BrandKity: Brand Asset Manager, which is a Shopify embedded admin app. The app’s purpose is very simple:

  • Merchant connects their existing BrandKity account using an API key

  • Merchant browses existing brand kits and brand assets

  • Merchant imports selected assets into Shopify Files

  • The app is read-only with respect to BrandKity

  • It does not create kits

  • It does not edit kits

  • It does not write data back to BrandKity

That functionality is documented in our implementation docs and app structure. The app is basically an import connector for existing assets, not a billing app, not a checkout app, and not a SaaS upgrade surface.

Important business context

BrandKity is a separate SaaS outside Shopify. Yes, our SaaS has paid plans. But the Shopify connector feature itself is free for all BrandKity users, including users on the Free plan. Merchants are not required to upgrade to any paid BrandKity tier in order to use the Shopify integration. The API key access used by the Shopify connector is available to all plans in our dashboard settings.

What Shopify review keeps saying

Our app has now been rejected multiple times over billing.

First, support kept telling us that because our platform has paid tiers, the Shopify app must use Shopify Billing or Shopify App Pricing, even though the app itself is free and does not gate paid features inside Shopify. Shopify’s billing docs do say App Store apps that charge merchants should use Shopify-managed billing, and community discussions show this is a frequent review issue for SaaS connector apps.

Then support changed the explanation and said the real issue was this:

  • the review team saw an external billing flow

  • specifically a BrandKity Dashboard > Billing page

  • and an Upgrade button opening LemonSqueezy checkout

  • and concluded that this billing flow was reachable from inside our embedded Shopify app

Here is the problem

That claim has never been backed with actual evidence.

Our Shopify app does not have:

  • any billing page

  • any billing nav item

  • any upgrade button

  • any route to our billing page

  • any link to LemonSqueezy

  • any redirect to external checkout

Not now, not earlier, not “hidden somewhere.”

The screencast shared by the review team starts directly on our external BrandKity Dashboard > Billing page and then shows the Upgrade button opening LemonSqueezy. It does not show:

  • where that page was opened from

  • any navigation path from the Shopify embedded app

  • any in-app route

  • any UI element inside the Shopify app that triggered it

Here is the screencast they shared:
https://screenshot.click/18-36-30076-67344.webm

So from my perspective, Shopify is asserting that an external billing flow is reachable from the app, but the evidence they shared does not actually demonstrate that. It only demonstrates that our separate SaaS billing page exists, which was never the question.

Why this is so frustrating

We have repeatedly asked the same very specific questions:

  1. What exact Shopify app route contains this alleged billing flow?

  2. What exact button, menu item, or UI element inside the embedded app opens it?

  3. Can Shopify provide a screencast that starts from inside the Shopify app and shows the full path?

We have not received an answer to those questions.

Instead, the responses keep looping between:

  • “all apps with paid platform tiers must use Shopify Billing”

  • “the billing page is reachable from inside the app”

  • “remove any billing links from the app”

But no one is actually showing where those links are.

Another problem: no-reply review emails

We were also repeatedly told by support to “reply directly to the rejection email and ask the reviewer.” But the rejection email came from a no-reply address that does not accept responses. So we literally cannot do the one thing support keeps telling us to do, and that is part of why this has turned into a long support loop instead of a clear review fix.

What I want to know from other devs

Has anyone here dealt with a Shopify App Store review where:

  • your app was just a connector/integration,

  • your SaaS had separate billing outside Shopify,

  • your Shopify connector itself was free,

  • but review still treated your external SaaS billing as an in-app billing violation?

If yes:

  • how did you prove there was no in-app billing flow?

  • did you have to remove all traces of external billing from your whole platform, even outside the app?

  • did you end up making the app fully non-embedded?

  • or was this ultimately just a reviewer misunderstanding?

My current understanding

At this point, the actual issue seems to be one of these:

  • the reviewer manually opened our external billing page and assumed it was reachable from the embedded app,

  • there is some hidden path or route they have not identified to us,

  • or support is repeating the reviewer’s conclusion without verifying whether the screencast actually proves it.

What I’m asking Shopify to clarify

I’m not even arguing policy anymore. I’m asking for something much simpler:

Show the exact in-app entry point.

If there is a billing link inside the app, I will remove it immediately. But after multiple rejections and multiple support conversations, Shopify still has not shown:

  • the route,

  • the element,

  • or a proper screencast starting from inside the app.

That is the part I find impossible to work with.

If anyone from Shopify or any dev who has gone through this can offer concrete guidance, I’d really appreciate it.

You’re assuming that because there’s no link in your app that there cannot be an external billing flow. This is not the issue though.

The issue is that there IS an external billing flow. I’m not representing Shopify, but pretty sure that you don’t need to provide a link to get to it in the app to violate the terms. Just the fact that you have one hints you may be violating it. It’s a “gateway app” meaning, the app is somewhat of a “front” to another billing system. If you say it’s not then you will likely need to provide proof on how it isn’t aside from “we don’t link to it so it’s OK”.

That’s my impression and how I read what you said against what the reviewer said and shows. Hope that at least helps to see another view.

Thanks for sharing your view. I get why it looked that way from the outside, but Shopify has now reviewed the screencast again and acknowledged that the evidence they were relying on did not show a billing flow originating from the embedded app. Their latest support email explicitly says the video “solely displays your external BrandKity dashboard” and “does not depict a merchant navigating from the Shopify embedded app to that billing page,” and they also admitted it was an oversight to tell us to reply to a no-reply review email.

So the core point we were making turned out to be correct: the screencast showed our external SaaS billing page existing, but it did not prove that the Shopify app linked to it or exposed that checkout flow from inside the embedded app. That distinction was exactly what we had been asking Shopify to verify the whole time.

We’re now waiting on the App Review Team to re-check the case with that clarification in front of them. Appreciate you taking the time to respond anyway.

That’s great! Thanks for the clarification as well. It’s good to know their true intention and what does/does not violate their terms.

Glad it’s heading toward a resolution. One thing that’s saved us hassle on subsequent reviews after gateway-style flags: front-load the screencast with explicit “where billing does not appear” moments. Reviewers process flows in 2-3 minutes and default to “show me where the link is” rather than “prove there isn’t one.”

Concretely: open the embedded app, walk through every page, hover every CTA, end on the merchant landing page. Add captions if it helps (“no upgrade prompt here”, “this opens Shopify Files modal, no external nav”). The negative-space proof carries more weight than the written explanation.

Same logic applies to API key fields - reviewers sometimes assume the field itself implies a billing setup step. Showing the connection succeed without any plan-tier interaction cuts that off.