Issue with Subscription Activation for Some Merchants

Topic summary

A developer is experiencing inconsistent subscription activation behavior in their Shopify app. While one merchant’s subscription activates successfully, another merchant’s subscription appears active in GraphQL queries but doesn’t register as active in their system.

Key Details:

  • The subscription shows in event details as “Advanced Plan - $15.00 USD (Test)” with a valid Subscription ID
  • The developer suspects the issue may relate to the isTest flag or plan configuration

Code Implementation:
Their billing check uses billing.check() with the isTest parameter set based on a BILLING environment variable.

Community Response:
Another user questioned the logic of tying isTest to the BILLING environment variable, suggesting it should instead depend on NODE_ENV. This configuration mismatch could potentially explain why test subscriptions aren’t being recognized consistently across different merchants.

The discussion remains open with no definitive solution yet provided.

Summarized with AI on October 28. AI used: claude-sonnet-4-5-20250929.

Hi everyone,

We’re encountering an issue with the subscription feature in our app. One of our merchants has successfully activated the subscription, and it’s working as expected. However, when another merchant activates the same subscription, it doesn’t reflect as active in our system—even though, when we query via GraphQL, the subscription appears to be active.

In the event details, it shows:
Advanced Plan - $15.00 USD (Test)
Subscription ID: [ID]

Is there anything we might be missing or should double-check on our end? Could this be related to the isTest flag or the plan configuration?

Any insights would be greatly appreciated.

Looking forward to your suggestions,
Thanks in advance!

We’re using the following code to check the billing status:

export const loader = async ({ request }) => {
  const { billing } = await authenticate.admin(request);
  const isTestBilling = process.env.BILLING === "true";

  const { hasActivePayment, appSubscriptions } = await billing.check({
    plans: [MONTHLY_PLAN],
    isTest: isTestBilling,
  });

  return json({
    hasActivePayment,
    appSubscriptions,
    collectionFunctionId: process.env.SHOPIFY_ADVANCED_COLLECTIONS_DISCOUNT_ID || "",
  });
};

Hi @oscprofessional

why isTest depeneds on BILLING env variable?
I think isTest only depends on NODE_ENV env