> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shoppex.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Switch from one-time codes to recurring access

> Move a product line from single-use serials to subscriptions without losing existing customers.

You're selling something today as **single-use codes** — Steam keys, activation tokens,
month-long access codes you generate manually. You want to switch the same product line to a
**recurring subscription** that auto-renews on the buyer's gateway.

This playbook walks through the safest migration path: keep the old product running, launch
the new one, move customers over the renewal cycle.

## Why not just edit the existing product?

Technically Shoppex allows changing a product's `type` (the type field is mutable on update).
But changing `SERIALS` to `SUBSCRIPTION` on a live product doesn't carry over what you
actually need: there's no automatic Stripe-plan creation, no migration of past buyers to the
new billing terms, no handling of pending serial deliveries.

The clean path is to **create a new subscription product** alongside the old one, then
deactivate the old one once customers have moved.

## Step 1 — Create the subscription product

Open **Products → New product**:

* **Type:** Subscription
* **Title:** the new name (e.g. "Pro Access — Monthly")
* **Price:** monthly amount
* **Billing interval:** Day / Week / Month / Year (and a count, e.g. interval=Month, count=1
  for monthly)
* **Trial period:** optional, up to 60 days

In the **Discord** section (if applicable), bind a supporter role with **Assign Role** so
subscribers get access automatically. See
[Discord supporter tier](/merchants/playbooks/discord-supporter-tier) for the full Discord
setup.

If your old product delivered files or serials on each purchase, set the subscription
product's **delivery type** to match — subscriptions can deliver `SERIALS`, `FILE`,
`SERVICE`, or `DYNAMIC` content on each renewal.

Save. The subscription is live on your storefront.

## Step 2 — Announce the change to existing buyers

Email or message your existing customer list. Be explicit:

* The old product (one-time codes) is staying available through a specific date.
* The new subscription product is now live with \[whatever benefits — lower per-month price,
  better access, automatic renewal].
* After the cutover date, only the subscription product will be sold.

Tools you have at your disposal: the built-in email marketing (**Marketing → Email**),
Telegram broadcasts if you have a bot, Discord announcements.

## Step 3 — Move the old buyers

There's no automated way to convert a buyer's past one-time purchase into a subscription —
the payment method changed (one-off vs. recurring), the gateway agreement is different. The
buyer has to actively subscribe.

The most reliable way to nudge them: offer a discount coupon on first month of subscription,
restricted to existing customers. Create the coupon at **Discounts** (`/coupons`):

* Type: `PERCENTAGE` (or `FIXED`)
* Value: whatever feels right (20-50% on first month is typical for migration)
* `validUntil`: a hard cutoff
* `maxUses`: total count to cap exposure

Share the code in the same announcement.

## Step 4 — Wind down the old product

When the cutover date arrives, **archive the old product** (don't delete — that breaks
historical order references). From the old product's settings, toggle it inactive. It
disappears from your storefront but the past orders, delivered codes, and customer records
all stay intact.

## What about Discord roles already granted?

If the old product granted a Discord role, those grants stay. The buyer keeps the role until
you remove it manually. Most merchants either:

* Let the old grants stand as a goodwill gesture (existing customers keep access forever).
* Set a date and bulk-revoke from the Discord side, with a clear announcement.

Subscription-bound roles are auto-revoked on cancel (when **Remove role on cancel** is on for
the subscription product), so going forward the role lifecycle is managed.

## Common questions

**"Will the new subscription auto-charge buyers who had recurring billing somewhere else?"**
No. Recurring billing is per-product per-buyer per-gateway. The new subscription is a fresh
authorization — the buyer goes through checkout once to set it up.

**"Can I keep both running indefinitely?"** Yes. Some merchants keep a one-off purchase
option for buyers who hate subscriptions, alongside the subscription as the default. Just
make sure the pricing makes the subscription the clearly better deal.
