I’m building an embedded app using Shopify’s Remix template. On the initial app load, my loader calls billing.check()
to confirm whether the store has an active subscription to my app. This works smoothly for most stores.
"@shopify/shopify-api": "^11.3.0",
"@shopify/shopify-app-remix": "^3.2.0",
export const loader = async ({ request }: LoaderFunctionArgs) => {
const auth = await authenticate.admin(request);
const shop = auth.session.shop;
try {
const plans = await auth.billing.check();
However, I’ve run into an issue with stores that give users permission to access the app but don’t enable the “Approve app charges” permission. In these cases, calling billing.check()
results in an access denied error from Shopify—even though I’m not requesting approval for a new charge, just verifying if an active subscription exists.
For those of you using the Remix template, how are you verifying active subscriptions in this scenario? I could simply catch the error, but then I would be in a scenario where I have no idea what plan that user is subscribed to.