Skip to content

Don't offer free trial to users who have previously subscribed #411

@gaidheal1

Description

@gaidheal1

Feature Request

Before offering a free trial on the upgrade page, check whether the user has had a previous Stripe subscription. If they have, do not show the trial offer.

Motivation

Free trials are intended for new users. A returning user who previously subscribed and cancelled should not be offered another trial — both to protect revenue and to maintain consistency with Stripe's trial eligibility model (Stripe itself prevents duplicate trials on the same customer in some configurations).

Proposed Behaviour

  • When rendering the upgrade page, check the user's Stripe customer history for any previous subscription (active, cancelled, or expired)
  • If a previous subscription exists: show the standard upgrade/payment flow without any trial offer or trial-related copy
  • If no previous subscription exists: show the current free trial offer as normal

Implementation Notes

  • Stripe's Customer object retains subscription history; a list of past subscriptions can be retrieved via the Stripe API (stripe.Subscription.list(customer=..., status='all'))
  • The backend can expose a flag (e.g. has_previous_subscription) on the subscription status endpoint, computed once per request
  • The frontend upgrade page reads this flag and conditionally renders trial vs. standard copy
  • Consider caching this flag on the Player or payments model to avoid repeated Stripe API calls

Acceptance Criteria

  • Backend detects whether the Stripe customer has any prior subscription (any status)
  • A has_previous_subscription (or equivalent) flag is returned to the frontend
  • Upgrade page hides trial offer and trial-specific copy when the flag is true
  • Upgrade page shows trial offer as normal when the flag is false (new user)
  • Existing tests cover both cases

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels
    No fields configured for Feature.

    Projects

    Status
    On dev branch

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions