Unaffiliated

Home Documentation & Help
Steamworks Documentation
Recurring Subscriptions
NOTE: Recurring Subscriptions is not a fully supported feature. It may not be possible to test all configurations fully prior to the release of your game or software.

Overview

It is possible to configure recurring subscription billing for a game or software in Steam, though it is not well supported at this time. If you need this in order to distribute your game on Steam, please contact us by submitting a ticket via the Steamworks category, and please be patient. It takes a bunch of manual configuration on Valve's end and may not be possible to test fully prior to the release of your game or software.

In many cases, we urge you to consider whether recurring subscription is really the right path for your product. Many products have set off down this path and discovered that customer appetite for signing up to be billed on a recurring basis is limited and as a result many products have subsequently switched to a traditional single up-front payment method.

Methods For Managing Recurring Subscriptions

Below are three general methods for managing recurring subscriptions on Steam. There are some additional options described further below that can work in conjunction with one or more of these methods.

1. Initiated by Steam store and managed by Steam

Steam just checks if the user has license to launch the app they are trying to launch.

General Experience:
  • User can choose which subscription to pay for and checks out through Steam cart.
  • This package grants the customer a license for the application, so the app is now in the user's Steam Library.
  • Steam keeps track of the billing period and renews the subscription at the end of the previous period.
  • Developer can extend the license at any time by calling AdjustAgreement.
  • The user can change their subscription interval and the next time Steam renews, it would bill at the new level.
  • Steam knows if the license has expired and then revokes the license for the user.
  • User would no longer be able to launch the app through Steam.
  • If the app is doing a Steam ownership check, it would fail too.

Configuration:
This is basically configured as a set of specially-configured packages with prices. Valve needs to configure this. See Setting up Method 1 and 2 below for details.

2. Initiated by Steam store, but managed by game

This is if the game is purchased up front or acquired for free and then needs a subscription to unlock gameplay or specific access within the game.

General Experience:
  • User should first acquire a license for the game by purchasing the game up front, or clicking to install a free to play game.
  • User can then choose which subscription to pay for (monthly, ½ yearly, yearly, etc).
  • Developer-operated Service keeps track of when time runs out for their subscription.
  • When subscription is expired, Developer-operated Service makes a ISteamMicroTxn/ProcessAgreement Web API call to charge the next period.
  • Based on what subscription the user chose when they first signed up, or whatever subscription period they might have switched to in the meantime, the Developer-operated Service adds time to the user’s account.
  • User is allowed to change the terms or cancel any time.

Configuration:
This is basically configured as a set of specially-configured packages with prices. But there also needs to be an initial paid or Free package that grants the user a license for the base game. Valve needs to configure this. See Setting up Method 1 and 2 below for details.

Note that if using this method an itemID must be attached to each subscription prior to release in order for purchase to succeed. This itemID is also necessary for the Developer-operated service to understand when the user subscribed and which length of time they signed up for.

3. Entirely in-game managed (Microtransactions)

The game started a recurring billing by invoking an in-game purchase and confirmed by customer through a Steam webpage. This is configured and managed entirely by the game. Please see Recurring In-Game Billing for details on getting this set up.

General Experience:
  • The game is typically a free-to-play, but could also work with a standard purchaseable game.
  • From within the game, a user would find a purchase option to sign up for a recurring subscription. This would be configured and managed by the developer.
  • Developer-operated Service interfaces with Steam to initiate a subscription, with a renewal period/amount defined.
  • User must approve through the Steam client.
  • Service keeps track of when time runs out for their subscription.
  • When subscription is expired, Service make a ProcessAgreement WebAPI call to charge the next period.
  • Service is not allowed to charge more than the agreed amount in the period (so if the user agreed to $20 a month, they cannot charge more than $20 each month – but may charge less).
  • User is only allowed to cancel this type of subscription.

Configuration:
This is entirely configured and managed from within the game. Please see Recurring In-Game Billing for details on getting this set up.

Additional Options

In addition to the methods described above, there are some options that may be desirable for your configuration.

Base app can be free

By default for methods 1 and 2 above, the game is generally activated by the customer purchasing a recurring subscription. But it is possible to make the base application free and then unlock additional content based on the recurring subscription.

This may be desirable, for example, if you have a recurring subscription that unlocks premium content or allows access to different servers.

To configure this, the base application is typically marked as free and then a DLC item (and not the base app) is added to the recurring packages. The base application would then need to check for ownership of the DLC item to know whether the user is licensed to access the content or not.

Base app can require up-front purchase

By default for methods 1 and 2 above, the game is generally activated by the customer purchasing a recurring subscription. But it is possible to make the base application available only after an initial purchase and then either unlock additional content based on the recurring subscription, or unlock ongoing access to the game itself based on the recurring subscription.

This may be desirable, for example, if customers may play your game for a few months, take a break, and come back again in the future and you wish for them not to have to re-purchase the full price to get back into the game.

To configure this, the base application needs its own regular package that contains the base application. The recurring packages would then contain just an item of DLC that the base application must check for to know whether the user should have access to the game or additional content.

Subscription can drop or unlock items or currency

With a recurring subscription, it is sometimes desired to be able to unlock additional content or drop certain types of items within the game based on the period of recurring subscription the user has purchased. The main example of this is dropping proportional amounts of currency used in game (eg. 100 gold for 1 month, 300 gold for 3 months, etc.).

This can be done by attaching a unique itemID to each set of recurring packages and then having the game use ISteamMicroTxn/GetReport Web API to see which and how many itemIDs are returned.

The itemID should be defined by the developer so they know what value they are checking for, but then it must be configured by Valve on the package.

Pricing For Recurring Subscriptions

Consider your approach to pricing carefully. While you can lower recurring pricing over time as necessary, we do not support increasing the price of a recurring subscription.

Setting up Method 1 and 2

These are things that Valve will need to set up for a product that wishes to use recurring billing. This information is provided so that you may understand how your subscriptions are organized.

For each recurring interval option:

  • Create package of type 2 (Bill Monthly) usually named in format of "Game Name Subscription - 1 Month"
    Put this stuff in the extended section. The package id here references the Type 9 package created in the next step
    "extended" { "RecurringPackageOption" "109839" }
  • Create package of type 9 (Recurring Billing) usually named in format of "Game Name Subscription - 1 Month Recurring"
    - Put this stuff in the extended section.
    - The RecurringOptions is a comma-separated list of packages (including itself) that make up the list of available interval options available to customers.
    - The BillingAgreementType is usually set to "Steam" unless the game wants to entirely control when to prompt the user to renew. If using method 2 above, this should be set to "Game" and the developer must have a system that tracks the time remaining for the user and when to bill again.
    "extended" { "InitialTimeUnit" "Month" "InitialPeriod" "3" "BillingAgreementType" "Steam" "RecurringOptions" "109839" }
  • Configure Store Page display of packages - This needs to be defined in the 'special settings' section of the store config. Each initial package ("Subscription - 1 Month") should be added as a drop-down option.
  • Developer will need to enter pricing - For both sets of packages.

    For games with upfront purchase in addition to recurring subscription.

    If a game requires an initial purchase and then subsequent subscription, then the recurring packages will need to be configured a little differently.
    • Recurring subscription packages should not grant the same base appID as the initial upfront purchase (Eg. EVE Online requires you buy the base game and then subscribe). If the base game purchase grants AppID 1000, and the subscription also grants AppID 1000, it will not let you purchase the recurring portion. These need to be different AppIds (Eg. 1000 for game, 1010 for subscription), usually achieved by creating a DLC appID to put into the recurring subscription packages.
    • The recurring subscription packages then need to be added as “Accessories” in the AppID 1000’s store page under 'special settings' (a Valve-only option). This allows you to purchase both together (but not two subscriptions)
    • You'll also need to remove the DLC AppId (Eg. 1010) from appearing on the base store page and you probably don't want the store page to be visible for the DLC item if that item is only used for checking ownership. We don’t want the subscription to show up as a DLC purchase option as the context would be incorrect and we've already configured it to appear as a subscription drop-down above.

    Frequently Asked Questions

    Q: Why is OrderID come up as "0" when calling GetReport?
    A: Recurring subscriptions that were initiated from the Steam store won't have an OrderID, since this field is typically populated when establishing a microtransaction using InitTxn. You can use the transID instead.

    Q: What payment methods does recurring billing support?
    A: Recurring payments can be paid with a credit card, PayPal, or Steam Wallet funds.

    Q: Why is payment failing to process when calling ProcessAgreement?
    A: If the customer does not have a valid payment method on file, does not have sufficient Steam Wallet funds, or has used an expired payment method most recently, then it may fail when you call ProcessAgreement.

    Q: Do users get notified when payment has failed?
    A: Yes, the user should receive an e-mail when their recurring payment has failed. This should instruct them to visit their account page to update their payment information on file.

    Q: How often should I try calling ProcessAgreement for a user that has previously failed?
    A: We recommend making this call once a day for at most a week before giving up. If the user has not updated their payment method on file by then, they are likely not coming back.

    Q: What do customers need to know about recurring subscriptins?
    A: There is a customer support FAQ here with some additional information.