> For the complete documentation index, see [llms.txt](https://guides.paynow.gg/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://guides.paynow.gg/products/revoking-and-expiry.md).

# Revoking and Expiry

Quick answers about packages. For full setup instructions see [Creating a Product](/products/creating-a-product.md).

## How do I revoke a package from a customer?

From the [customer's page](/customers/managing-customers.md#inventory), in the **Inventory** section. Two limits apply:

* Expired packages cannot be revoked. The option is gone.
* Non-expiring packages can be revoked, but only if an **On Expiry Action** is set. Without one, revocation won't go through.

That second rule catches people out too late. If you sell a permanent package you might ever need to take back, for a chargeback say, set an **On Expiry Action** when you build the product. Adding it later doesn't help with purchases already made.

## What happens when a package expires?

Any **On Expiry Actions** fire, removing roles, executing commands, and so on.

**If no expiry action is set, nothing happens automatically.** The package shows as expired in the dashboard, but whatever it granted in game stays granted. That's the most common reason a "1 month VIP" package turns out to be permanent VIP.

## Can I create subscription-based packages?

Yes. Set a billing cycle when configuring the product and customers are charged automatically at that interval. Not all payment methods support subscriptions, so check which are available for recurring billing when setting up the product. See [Settings](/store-settings/store.md).

## Does revoking a package remove a Discord role?

Yes, if the role is set to be removed on expiry.

**Revoking runs the On Expire stage.** That is the whole answer, and it's why you won't find a separate "on revoke" option anywhere. A manual revoke fires exactly what an expiry fires: your On Expire commands, and any Discord action with **Expiration** ticked under **Remove role access on**.

So the role comes off if **Expiration** is ticked on that product's Discord action, and it is ticked by default. If someone unticked it, nothing removes the role, on expiry or on revoke.

The same logic applies to commands. A product whose only removal command sits on On Refund leaves the customer holding their in-game rank after you revoke, because a revoke is not a refund. See [Commands & Placeholders](/integrations-and-commands/commands.md).

What is separately documented is that a [ban](/customers/bans.md) on its own does not remove access to items the customer already bought — those have to be revoked manually.

## How do I assign multiple deliverable actions to a package?

When creating or editing a package, scroll to **Deliverable Actions** and click **Add Action**. Actions stack, so you can combine a Discord role, a [game server command](/integrations-and-commands/global-commands.md), a [gift card](/marketing/gift-cards.md), and access to downloadable files. Ready-made templates: [Steam](/integrations-and-commands/steam-templates.md) · [Minecraft](/integrations-and-commands/minecraft-templates.md).

Webhooks are configured separately on the [Webhooks](/integrations-and-commands/webhooks.md) page, not as a deliverable action.

## Need more help?

Ask in the [PayNow Discord](https://discord.gg/paynow).
