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

# Subscriptions

> Sell products on recurring billing, control what each renewal delivers, and manage subscribers once they are running.

A subscription charges the buyer every billing cycle instead of once. Set it up per variant, so the same product can sell outright and on a monthly plan side by side.

Requires a plan that includes subscriptions. Live subscriptions are listed under [**Subscriptions**](https://dash.sellauth.com/subscriptions) in the dashboard.

## How renewals are charged

This decides how much ongoing work a subscription product takes, so it is worth settling before you build one.

| Payment method | What happens each cycle |
| - | - |
| **Stripe** and **PayPal Checkout** | The customer is charged automatically |
| **Everything else** | The customer is emailed a renewal invoice before the period ends, and has to pay it |

If subscriptions are central to your shop, connect [Stripe](/guides/payment-methods/stripe) or [PayPal Checkout](/guides/payment-methods/paypal). Manual renewals lapse more often, since every cycle asks the buyer to decide again rather than continuing on its own.

Free trials need automatic billing, so they only work on those two.

## Setting it up

Subscription settings sit on the variant, under its subscription section.

### Mode

| Mode | Behaviour |
| - | - |
| **Disabled** | Ordinary one-off purchase |
| **Optional** | The buyer chooses: buy once, or subscribe |
| **Subscription only** | The variant can only be bought as a subscription |

Optional suits products that still make sense as a single purchase, and lets buyers choose the recurring option themselves. Subscription only suits access that has no meaning as a one-off.

### Price and interval

**Subscription price** is charged every cycle. Leave it empty to reuse the variant's price, or set it lower to make subscribing the better deal.

**Billing interval** is a number and a unit: every 1 month, every 2 weeks, every 90 days. The count goes up to 90 and the unit can be days, weeks, months or years.

**Trial days** gives free access before the first charge, up to 365. Automatic billing methods only.

<Note>
  Changing the price affects new subscribers only. Everyone already subscribed keeps the price they signed up at, so a price rise never surprises an existing customer.
</Note>

### What each renewal delivers

For serial and dynamic products, **Renewal Delivery** decides what the buyer gets when a cycle is paid.

| Option | Result |
| - | - |
| **Deliver again every cycle** | A new item each period, such as a fresh key each month |
| **Nothing new** | The original delivery stays valid, for access-style products |

Choose by asking whether what you delivered expires on its own. A monthly key that stops working needs redelivery. A Discord role or an account that keeps working does not.

Dynamic products call your webhook on every renewal regardless of this setting. Returning an empty response means the existing access was extended rather than replaced. See [Dynamic Delivery](/developers/dynamic-delivery).

Every paid cycle creates its own invoice, linked to the subscription, so your [invoice history](/guides/invoices) stays complete.

## Managing subscribers

The Subscriptions page lists every subscriber with their billing amount and interval, next renewal date, cycles completed, and whether renewal is automatic or manual.

| Status | Meaning |
| - | - |
| **Active** | Paid and running |
| **Trialing** | In a free trial, not yet charged |
| **Past Due** | A renewal has not been paid |
| **Cancelled** | Cancelled, no further charges |
| **Expired** | Ran to its end without renewing |
| **Pending** | Not started yet |

**Past Due** is the status to watch. On manual methods it usually means the renewal invoice went unpaid, and a reminder often recovers it. On automatic methods the card failed. On Stripe, the customer dashboard shows a **Pay now** link to the failed invoice, and Stripe keeps retrying the card on its own schedule.

### Cancelling

Cancelling from the dashboard ends the subscription **at the end of the paid period** by default, so the customer keeps what they already paid for. Tick **Cancel immediately** to end access at once, which you would normally only do for abuse or at the customer's request.

## What customers can do themselves

Buyers manage their own subscriptions from the customer dashboard on your storefront, which shows each subscription's product, price, interval, status and next renewal date.

From there they can:

* **Pay a renewal**, on manual methods, through a link on the subscription
* **Cancel**, which schedules the end of the paid period rather than cutting access instantly
* **Resume** a subscription they cancelled, while the period is still running
* **Update their card** on automatically renewing Stripe subscriptions, through **Manage billing**, which opens Stripe's customer portal and returns them to your storefront afterwards

Because resuming is possible until the period ends, a customer who cancels and changes their mind can keep the subscription without buying again.

<Note>
  The customer dashboard comes from your storefront theme. If subscribers cannot find this page, check [your theme version](/guides/storefront-basics#keep-your-theme-up-to-date).
</Note>

<Warning>
  **Manage billing** uses the customer portal on your own Stripe account. Save its settings once in the Stripe Dashboard under Settings, Billing, Customer portal, or Stripe refuses to open it. If your Stripe API key is a restricted key, give it write access to the customer portal. When the portal cannot be opened you receive a Shop Error notification with Stripe's reason.
</Warning>

## Staying informed

Turn on the subscription events in [Notifications](/guides/notifications) to hear about new subscriptions, cancellations, expiries and failed or overdue renewals. Route failed renewals somewhere you check often, since each one is lost revenue that produces no other signal.

## Troubleshooting

**Renewals are not charging automatically.** The subscription is on a method other than Stripe or PayPal Checkout. Those customers get a renewal invoice by email instead.

**Trial days are ignored.** Trials require an automatic billing method.

**A renewal delivered nothing.** Renewal Delivery is set to nothing new, which is correct for access-style products. Switch it to deliver again if each cycle should hand over a fresh item.

**A renewal ran out of stock.** Redelivery consumes stock like any sale. Keep serial stock topped up ahead of renewal dates.

**Price change did not apply to existing subscribers.** Working as designed. Only new subscribers get the new price.

## Next steps

<CardGroup cols={2}>
  <Card title="Products and variants" icon="box" href="/guides/products">
    The variant that carries the subscription.
  </Card>

  <Card title="Discord roles" icon="discord" href="/guides/discord-roles">
    Timed access that expires with the billing cycle.
  </Card>

  <Card title="How delivery works" icon="truck" href="/guides/delivery">
    What renewals deliver, per product type.
  </Card>

  <Card title="Managing invoices" icon="receipt" href="/guides/invoices">
    The invoice each paid cycle creates.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.