Subject: How to prevent trial/temp stores from subscribing via the Billing API?

Lately, we’ve seen a pattern where new stores (likely still in trial) install our app, approve the highest-tier subscription via the Billing API, and shut down within 14 days. We never get paid.

The issue:
There’s no reliable way to detect that a store is in trial or unpaid — the plan_name often shows as “advanced” or “unlimited”, even for these stores.

What we need:
A way to identify trial or unpaid stores before allowing them to activate a paid subscription, to prevent abuse.

Is there a recommended approach or workaround?

One thing we noticed is by checking the store creation date and “lock” them to only the smallest plan if the store was created < 14 days ago.

Check the Store’s plan name in the Admin API to inspect the plan_name field. Development stores typically have the plan_name set to affiliate. By detecting this, you can restrict or modify the subscription options available to these stores. ​
Shopify

Thanks Drew,
But it seems it’s not the case, here’s an example response

shop {
  ...
  domain: 'xxx.myshopify.com',
  myshopify_domain: 'xxx.myshopify.com',
  created_at: '2025-04-04T15:57:57+02:00',
  updated_at: '2025-04-10T18:49:51+02:00',
  plan_display_name: 'Advanced',
  plan_name: 'unlimited',
  eligible_for_payments: true,
  requires_extra_payments_agreement: false,
  password_enabled: true,
  has_storefront: true,
  finances: true,
  setup_required: false,
  pre_launch_enabled: false,
}

The plan_name and plan_display_name are “unlimited” and “advanced”
The subscription was confirmed on 2025-04-04T16:30:00, i.e. just 45 minutes after the store was created.
Seems like the solution to blocking those would be to check a combination of fields together:

  • created_at time
  • domain/myshopify_domain if a store doesn’t have its own domain might suggest it’s a fake store
  • password_enabled / has_storefront to check if the store is actually active

Does anyone have a different experience with this?

Oh shoot, you are right… That is only for development stores built by Shopify partners. I apologize.