Skip to main content

Manage subscriptions

Beta

Subscriptions are in beta. The API, payload shapes, and this Developer Console UI may change.

Jest allows you to sell recurring subscriptions to your game using the payments SDK methods. Subscriptions are a good fit for ad removal, premium tiers, or recurring access to additional content.

Subscriptions are configured in the Developer Console and then retrieved in your game using JestSDK.payments.getSubscriptions().

To manage subscriptions, open the Developer Console and navigate to:

Games > Manage Game > Subscriptions

How subscriptions work

Each subscription represents an ongoing entitlement granted to a player's wallet for as long as billing succeeds.

You define:

  • SKU – A unique identifier used in your game code.
  • Name – The display name shown during checkout and in your game's UI.
  • Description (optional) – A short description shown during checkout.
  • Price – The recurring cost in USD.
  • Billing period – How often the player is billed (monthly or yearly).
  • Free trial (optional) – A trial length in days (up to 14). Leave blank or 0 for no trial. See Free trials.
  • Intro offer (optional) – A discounted price for the first N months (monthly subscriptions only). See Introductory offers.

When your game calls:

  • getSubscriptions() – The configured subscriptions are returned, each annotated with the player's current entitlement status (active or inactive).
  • beginSubscription({ subscriptionSku }) – The player can subscribe to a specific SKU.

For details on the full subscription lifecycle (checkout, entitlement, recovery) and signed-token verification, see the Subscriptions SDK documentation.

Add a subscription

To create a new subscription:

  1. Click Create Subscription.
  2. Enter:
    • SKU (required)
    • Name (required)
    • Price in USD (required)
    • Billing period (required) – monthly or yearly
    • Description (optional)
    • Free trial in days (optional) – up to 14; leave blank or 0 for no trial
    • Intro offer (optional) – a discounted intro price and a duration in months (1–12); monthly subscriptions only
    • Retention offer (optional) – a discounted price a cancelling subscriber can claim once via your game; monthly subscriptions only. See Retention discounts.
  3. Click Create Subscription.
note

The SKU and billing period cannot be changed after creation. If you need to modify either, archive the existing subscription and create a new one.

tip

To offer the same tier at both cadences, create two subscriptions — e.g. premium_monthly billed monthly and premium_yearly billed yearly.

warning

This is by design: the platform treats every subscription SKU as an independent product and does not relate them, even when they unlock the same thing in your game. Entitlement and free-trial eligibility are tracked per SKU, so nothing on the platform side stops a player who subscribed to premium_monthly from also subscribing to premium_yearly — they would be billed for both.

Your game is responsible for not offering a subscription that grants the same entitlements once the player has signed up for one of them. Check each SKU's status via getSubscriptions() and hide or disable the equivalent offers while any one of them is active. If you offer a free trial on a tier, configure it on only one of that tier's SKUs.

Edit a subscription

To update a subscription:

  1. Click Edit next to the subscription.
  2. Update the name, description, or free-trial length.
  3. Save your changes.
note

Price and billing-period changes are not applied to existing subscribers. To change pricing, archive the existing subscription and create a new one at the new price; existing subscribers continue to be billed at the price they signed up for until they cancel or it expires.

note

Free-trial changes apply to future checkouts only. Editing or removing the trial length does not affect players who are already subscribed or currently mid-trial.

Free trials

You can offer a free trial on any subscription by setting a trial length of up to 14 days when you create or edit it. Leave it blank or set it to 0 for no trial.

How trials behave:

  • First-time only. A trial is offered only to wallets that have never subscribed to that product before. A player who has subscribed to it previously — even if their subscription has since lapsed — is billed immediately with no trial. The SDK exposes this per-wallet eligibility as a trialEligible flag on each subscription so your game can show a "Start free trial" CTA only when the player will actually get one.
  • The entitlement is active during the trial. From your game's perspective the subscription is "active" for the whole trial, so the player has full access. See your SDK's free-trials reference (HTML5, Unity, Godot) for how to read entitlement.
  • Billing starts automatically at trial end. The player provides a payment method at checkout, and the platform charges the subscription price when the trial ends. Normal recurring billing continues from there.
  • Cancelling during the trial. If the player cancels before the trial ends, they keep the entitlement until the trial period is over and are never charged.

Introductory offers

You can offer new subscribers a discounted price for the start of their subscription — for example, $4.99/mo instead of $9.99/mo for the first 3 months — by setting an intro price and an intro duration in months (1–12) when you create or edit a subscription.

How intro offers behave:

  • Monthly subscriptions only. Intro offers cannot be configured on yearly subscriptions.
  • Combinable with a free trial. The discount window is measured from signup, trial included, but with trials capped at 14 days the subscriber always receives every configured discounted month after the trial ends.
  • First-time only. Like trials, the intro price is offered only to wallets that have never subscribed to that product before. The SDK exposes the offer as a nullable introOffer field (price and durationPeriods) on each subscription, populated only when the player is eligible, so your game can advertise the offer only when the player will actually get it.
  • Automatic transition. The player pays the discounted price for the configured number of months, then transitions to the standard price automatically. No action is needed from you or the player.
  • The intro price must be at least $0.50 and lower than the standard price. The console validates this when you create or edit the subscription, including when you later change the standard price.
  • Changes apply to future checkouts only. Players who subscribed under an intro offer keep the terms they signed up with.

Retention discounts

You can configure a retention discount alongside the intro offer: a discounted price (at least $0.50 and lower than the standard price) and a duration in months (1–12), for monthly subscriptions only. It is never applied automatically — it exists for your game's own cancel flow.

How retention discounts behave:

  • Claimed by the game, once per player. While a subscriber is entitled and eligible, the SDK exposes the offer as a nullable retentionOffer field on their subscription; your game applies it with claimRetentionOffer when the player accepts your pitch. Each player can claim it once per subscription, and not during a free trial or while an introductory offer window is still running.
  • Same subscription throughout. The discount applies to the player's existing subscription starting at their next renewal; after the configured months the standard price returns automatically. There is no second product to manage and nothing for the player to re-purchase.
  • Current terms, grandfathered basis. A claim always grants your current retention price and duration — including for subscribers who joined before you configured or last edited the offer. What's grandfathered is their own standard price: the discount is applied against what they actually pay, and a subscriber is only eligible while the retention price is below it.
  • Changes apply to future claims only. Players who already claimed a discount keep the terms it was claimed with.

See Retention discounts in the SDK docs for the game-side recipe.

Archive a subscription

To remove a subscription from sale:

  1. Click Archive next to the subscription.

Archived subscriptions:

  • Are no longer returned by getSubscriptions() to players who do not currently have an active entitlement for them.
  • Cannot be newly subscribed to.
  • Continue to be returned (with status: "active") to existing subscribers until their entitlement expires, so your game can keep honoring the entitlement they paid for.

If your game attempts to start checkout for an archived or invalid SKU, beginSubscription will return an invalid_subscription error. See the Subscriptions SDK documentation for error details.

Testing subscriptions

When using a sandbox user, the player still has to complete the Stripe checkout flow, but the order total is $0 and no real charge is made. Once checkout is completed, the entitlement behaves as if the player had subscribed normally, so you can test both the subscribed and unsubscribed flows end-to-end without making real payments.

If the subscription has a free trial, a sandbox user receives it on their first subscribe just like a real player (at $0, with no payment method required), so you can exercise the trial flow too.

Guests cannot subscribe. If your game targets the beginSubscription call at a guest player, the platform automatically shows a signup gate prompting the player to register, then returns a guest_not_allowed error. Your game does not need to build its own registration prompt — just handle the error gracefully.

See Subscriptions for details on entitlement recovery and best practices.