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
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?