In May 2022, we introduced changes in the way subscription products are defined and managed in Play Console. If you have existing subscriptions and want to know how these changes affect them, see Recent changes to subscriptions in Play Console.
Using Google Play's billing system, you can offer in-app products that charge users for content or services on a recurring basis, known as subscriptions. Subscriptions can include items like a collection of apps, games, or other content for a recurring fee within your app on Google Play.
The Google Play subscriptions system provides flexibility in the ways you create, manage, and sell subscriptions. Using Play Console or the Subscription Publishing API, you can configure a single subscription with multiple base plans, each with multiple offers. Subscription offers can have various pricing models and eligibility options. You can create offers across the subscription lifecycle using a wide variety of auto-renewing and prepaid plans. You can also create an in-app product, which charges users on a one-time basis.
This article describes subscription functionality. To understand how to create and manage subscriptions in Play Console, go to Create and manage subscriptions. To understand how to implement subscriptions in your Android app and backend, visit the Android Developers site.
Important: In addition to the information in this page, you should refer to Google Play's Developer Program Policies, including the Subscriptions policy.
Overview of subscriptions
This section introduces subscription concepts, objects, and functionality.
The three subscription object types are as follows:
- Subscription: A subscription object defines a set of benefits that users can access during a stated time period.
- Base plan: A base plan defines a subscription's billing period, renewal type (auto-renewing or prepaid), and price. A single subscription can have multiple base plans.
- Offer: Offers define a discount available to eligible users. A single base plan can have multiple offers.
The image below shows how subscription object types are structured:
Subscription
A subscription is a set of benefits that users can access during a stated time period. You can have multiple subscriptions within the same app, either to represent entirely different benefits (for example, a streaming video app could have separate news and sports subscriptions), or different tiers of a single set of benefits (for example, a cloud storage app could have 100 GB, 1 TB, and 10 TB subscriptions).
Users gain access (or entitlement) to a subscription by purchasing a base plan or offer, either in your app or on Google Play.
Base plan
Subscriptions contain one or more base plans. A base plan specifies a unique set of attributes for a given billing period and renewal type. You can specify whether a subscription renews automatically (auto-renewing) or is non-renewing (prepaid plan).
A subscription can have multiple base plans. As an example, for a single "Premium Membership" subscription, you could create the following base plans:
- A monthly, auto-renewing base plan.
- A monthly, prepaid base plan.
- An annual, auto-renewing base plan.
Note: For each subscription, you can create a combined total of up to 250 base plans and offers, with a maximum of 50 active at the same time. The remainder must be in draft or inactive states.
Auto-renewing
Users can purchase an auto-renewing base plan to obtain subscription entitlement for a specified billing period, with automatic charges and entitlement extensions at the end of each billing period. An auto-renewing base plan provides uninterrupted subscription entitlement until canceled. Subscriptions can be canceled by the user, by the developer, or by Google Play's billing system.
Prepaid
Users can purchase a prepaid base plan to obtain subscription entitlement for the specified billing period that does not automatically renew. Users can subsequently top up to extend the plan's end date and maintain uninterrupted access to subscription content.
When topping up, users can purchase any prepaid base plan available for the same subscription to top-up, including durations different from the original purchase. For example, a user with a $12.99 prepaid one-month plan can purchase a $59.99 prepaid top-up that extends the subscription by one year.
In addition to top-ups, users can also switch between prepaid and auto-renewing subscription plans as desired. Users can make these purchases either through your app or through the Google Play Store's subscriptions center.
Installments
Users can purchase an installments base plan to obtain subscription entitlement for a specified billing period, paid out in monthly installments. Installments subscribers pay a fixed monthly amount for the duration of the subscription period. This can provide a convenient alternative for users who may prefer to spread out the cost of a subscription over time.
You specify the monthly payment amount and the commitment period when creating an installments base plan. For example, if you wanted to offer a 12-month subscription to your fitness app normally priced at $99.99, you could implement an installments base plan with a monthly payment amount of $8.33 for a commitment period of 12 months.
All installment subscriptions are paid in monthly intervals; users and developers cannot adjust the frequency or timing of payments. Developer payouts will happen as users make their monthly payments. Developers are not paid upfront when the user signs up for the subscription.
Base plan attributes
The table below lists and explains the fields you'll define when setting up your base plan in Play Console:
Field | Description |
Billing period |
The duration of the subscription entitlement. |
Renewal type |
Whether a subscription renews automatically, is prepaid, or is paid in installments (available to users in select countries/regions). |
Regional availability |
A base plan contains a list of regional configurations that define where the plan is available along with the price for each region. You can control availability and pricing individually for each country or region, and configure whether your base plan or offer should be made available to any new locations which Google Play may support in the future. |
Grace period | If a renewal payment is declined, Google will ask the user to fix the payment issue and periodically retry the renewal charge. By default, this recovery period consists of a grace period, followed by an account hold period. You can specify the length of the grace period, during which the user retains subscription entitlement. |
Account hold | After any grace period has ended with the payment issue unresolved, the subscription can enter an account hold period. You can specify the length of account hold, during which the user should not have subscription entitlement. If the account hold period ends with the payment issue unresolved, the subscription is automatically expired. |
Base plan and offer changes |
If a user currently has this subscription and switches to this base plan or any of its offers, this determines when the user is charged. This setting doesn’t apply if a subscriber switches to a different subscription. |
Resubscribe |
If active, users can repurchase an expired auto-renewing subscription in the Play Store. |
Tags |
A tag is an optional label of up to 20 characters that you can use to mark or group base plans and offers and identify them in the API. Tags can be used to determine which offer to show when the user is eligible for more than one. You can add up to 20 tags. Users cannot see tags. |
Offer
Eligible users can purchase an offer to obtain access to a subscription at a discounted price. While any user can purchase a base plan, offers are only available to users who meet the eligibility criteria you define. Offers can provide the user with free trials and/or introductory pricing through one or more offer phases.
For each subscription, you can create up to 250 total base plans and offers, with a maximum of 50 active at the same time. The remainder must be in draft or inactive states.
Notes:
- You can only create offers for auto-renewing base plans.
- For each subscription, you can create a combined total of up to 250 base plans and offers, with a maximum of 50 active at the same time. The remainder must be in draft or inactive states.
Offer eligibility
You can provide offers to users based on their subscription status in your app. You do this by specifying eligibility requirements. There are three supported use cases:
Use case | Criteria |
New customer acquisition |
The user has never had entitlement to this subscription, or the customer has never had entitlement to any subscription in this app. |
Upgrade |
The user currently has a specified subscription and billing period in this app. As an example, you can define an offer that provides an introductory price for a "Gold" subscription tier to users who are currently subscribed to a "Silver" tier. |
Developer determined |
You decide the business logic and determine eligibility in your app. Examples include second-chance free trials, or win-back offers for lapsed subscribers. Since the logic resides in your app, developer determined offers cannot be sold outside of your app. |
Offer phases
Offers contain one or more offer phases. Each phase defines a free or introductory price period. For example, an offer may have a 7-day free trial phase, followed by an introductory phase of $2 for one month. After the discounted offer phases complete, subscriptions auto-renew using the subscription’s base plan pricing.
Free trialsA free trial pricing phase provides a specified number of days, weeks, or months at no charge. Free trial phases can range from 3 days to 3 years.
Note: For an installments base plan, the free trial phase does not count as part of the initial commitment.
Introductory pricing phases provide the user with a discounted price for a fixed duration. Introductory pricing phases must be the same or less than the base plan price. They can be absolute or relative to the base plan price. Relative prices can make future price changes simpler. Prices can be specified as follows:
- An absolute amount, such as $5
- A fixed discount, such as $5 off the base price
- A percentage discount, such as a 50% discount off the base price
All prices are subject to Google Play minimum and maximum pricing in the region the price is available. Go to Supported locations for distribution to Google Play users to learn more.
Note: The relative nature of an introductory price is not currently shown in the purchase cart. For example, there is no strikethrough display of the base plan price.
Introductory price phases can include one or more payments:
- Single payment: A pricing phase that charges the user once for a specific number of days, weeks, or months.
- Multiple payments: A pricing phase that provides a discount for between 1 and 52 recurrences of the base plan’s billing period.
Note: For an installments base plan, the introductory pricing phase does count as part of the initial commitment. For example, a discount for three recurrences would count as three of the payments out of the initial commitment.
Offer attributes
The table below lists and explains the additional fields you'll define when setting up your offer in Play Console:
Field | Description |
Regional availability |
Offers default to the same regional availability as their base plan. You can instead choose a subset of those regions. |
Tags |
A tag is an optional label of up to 20 characters that you can use to mark or group base plans and offers and identify them in the API. Tags can be used to determine which offer to show when the user is eligible for more than one. Offers return both their own tags, as well as their base plan's tags. You can add up to 20 tags. Users cannot see tags. Tip: We recommend using tags to identify the offers created with developer-determined eligibility to help differentiate between them when showing the collection of offers available to the user. |
Offer and base plan availability
Over time, you can create and modify many subscriptions, base plans, and offers. While some might become obsolete, historical data can be useful for analytics and reporting purposes. Likewise, you might want to create alternatives for experimentation or switch from one offer to another depending on seasons or other factors. The new subscription system supports these use cases with subscription object states. To ensure information is always available for reporting and analysis purposes, you can't delete subscriptions, base plans, and offers, or reuse their IDs.
Subscription statusSubscription objects can have the following states:
- Draft: The subscription is being defined and is not yet active. When a subscription is in the draft state, any base plans or offers that are created are also in Draft state.
- Active: The subscription exists and supports existing purchases. If there are any active base plans, the subscription also allows new purchases.
Offers and base plans can have the following states:
- Draft: The base plan or offer is being defined and is not yet active.
- Inactive: The base plan or offer exists, but is not available for new purchases. Existing subscriptions continue until canceled. You can toggle offers between active and inactive as needed.
- Active: The base plan or offer exists and supports both existing and new purchases.
Common use cases for base plans and offers
This section provides configuration examples of common base plans and offers. Click on a section below to expand it and view an example.
Monthly plan available to any userThe following example defines a basic subscription with a single monthly base plan for all users in the specified regions. There aren’t any offers at this point.
Subscription info:
- Title: "All access"
- User benefits:
- "Unlimited access to all channels"
- "Ad-free"
Base plan info:
- Billing period: Monthly
- Renewal type: Auto-renewing
- Region availability:
- US
- Canada
- Türkiye
- Price per region:
- US: $9.99
- Canada: CA$10.99
- Türkiye: 155 TRY
- Grace period: 7 days
The following offer builds on the previous example (Monthly plan available to any user), adding a free trial for new subscribers by defining the following offer in Play Console. Note the offer is limited to a subset of base plan regions–it doesn’t include Türkiye.
Offer info:
- Eligibility criteria: New customer acquisition
- Never had any subscription in this app
- Region availability: (note that Türkiye is not included)
- US
- Canada
- Pricing phase 1:
- Type: Free trial
- Duration: 7 days (then goes to base plan)
Here's how this would work for the user:
- New subscribers (in the US and Canada only) will receive a 7-day free trial.
- After the trial is over, the subscriber will auto-renew onto the standard base plan price.
- Any users who have previously purchased any of this app's subscriptions are ineligible for the offer, so they can only purchase the base plan.
The following example builds on the base plan in the previous example (Monthly plan available to any user), adding an offer with two pricing phases:
Offer info:
- Eligibility criteria: New customer acquisition
- Never had any subscription in this app
- Region availability: (note that Türkiye is not included)
- US
- Canada
- Pricing phase 1:
- Type: Free trial
- Duration: 7 days
- Pricing phase 2:
- Type: Single payment
- Duration: 1 month
- Price override: Fixed amount
- Price per region:
- U.S.: $1.99
- Canada: CA$1.99
Here's how this would work for the user:
- New subscribers (in the U.S. and Canada only) will receive a 7 day free trial, followed by 1 month for $1.99/CA$1.99.
- After the trial is over, the subscriber will auto-renew onto the standard base plan price.
- Any users who have previously purchased any of this app's subscriptions are ineligible for the offer, so they can only purchase the base plan.
Google Play offers support for common eligibility use cases, such as new customer acquisition. Your app can also evaluate against your own eligibility criteria, either in addition to or instead of Play-determined eligibility. This means that you can build additional logic on top of Play-evaluated eligibility criteria and decide which offers you want to prioritize and surface to users. For example, you can limit an offer to past subscribers who have previously canceled with the aim of winning them back.
The following example builds on the base plan in the previous example (Monthly plan available to any user), adding a developer-determined offer for 3 months half-price:
Offer info:
- Eligibility criteria:
- Developer determined
- Region availability:
- US
- Canada
- Pricing phase 1:
- Type: Recurring payment
- Billing periods: 3
- Price override: Percentage discount
- Discount percentage per region:
- US: 50%
- Canada: 50%
- Tag: WINBACK-50-OFF
Here's how this would work for the user:
- Users (in the U.S. and Canada only) presented with this offer using in-app logic will receive 50% off their price for 3 months (that is, $4.99/CA$4.99).
- After the offer is over, the subscriber will auto-renew onto the standard base plan price
Note: Any offers available for purchase outside of the app, including featured subscriptions, cannot have developer-determined criteria.
Tip: We recommend using tags to identify the offers created with developer-determined eligibility to help differentiate between them when showing the collection of offers available to the user.
Changing base plan and offer prices
You can change the price of any base plan or offer. The new price applies immediately for any new purchases, including prepaid plan top-up purchases.
If you change the price of an auto-renewing base plan, any users who were paying the previous price are placed into a new legacy price cohort. Users in a legacy price cohort continue paying their current price until they change subscription plans or until you decide to move them to the current price. Each time you change the price, a new legacy price cohort is created.
Ending legacy pricing
You can decide to end a legacy price cohort, moving those users to the current base plan price. However, note the following:
- Ending a legacy price cohort only affects the base plan price; it's not possible to change the price of any offer phase after purchase.
- It's also not possible to move a legacy cohort to any price, only to the current base plan price.
- Ending a legacy price cohort also ends any previous cohorts for the same base plan.
Note: For an installments base plan, if a developer wants to change the price (or if a user wants to cancel), the change takes effect at the end of a commitment period.
Decreasing prices
If the new price is lower, the resulting price decrease is automatic and does not require user approval. Users are notified and charged the lower price at their next renewal date.
Increasing prices
If the new price is higher, the resulting price increase is either opt-in or opt-out.
Opt-in price increases
With opt-in price increases, the user must agree to the price increase before it takes effect. If they do not, their subscription is automatically canceled before the first charge at the higher price. Users will have at least a 30-day notification period to opt-in, which may result in their next charge remaining at the current price.
Opt-out price increases
In certain cases, you can increase the price with advance notification to users, but without requiring them to take any additional action. This is described as an opt-out price increase.
Users can cancel their subscription if desired, otherwise they’re charged the new price on their next renewal following a notification period. This period is a minimum of either 30 days or 60 days, depending on the country/region. The notification period may result in additional renewals at the current price.
Opt-out price increases must meet all of the following criteria:
- Opt-out price increases are only available in certain countries/regions, and only to developers in good standing on Google Play. To learn more, see supported countries/regions and their minimum advance notification periods.
Opt-out price increases are also limited in frequency and amount. These criteria are enforced in the Console UI:
- Each subscription base plan can only have a single opt-out price increase per country/region in the last 365 days.
- The maximum price increase amount in all countries/regions is the greater of:
- 50% of the price the user is currently paying; or
- 17 USD cents per day (converted to local currency as needed)
You are responsible for ensuring that an opt-out price increase meets the following criteria. When starting each opt-out price increase, you must certify in Play Console that:
- Your app’s terms of service must reserve your right to increase the price of subscriptions via advanced notice and provide clear and valid reasons for such increases.
- At least 30 days before the price increase goes into effect, you will show each affected user a prominent, in-app notice that includes, at minimum: the name of the user’s subscription, the current price and the new price, the date the new price automatically goes into effect, and information on how to cancel.
Important: This notice must be displayed on all device types where the app is available, including mobile, TV platforms, and streaming devices. The sole exception is watch devices, for which the notice is recommended but not required.
If a price increase does not meet all of the above criteria, you cannot perform an opt-out increase. Instead, you can proceed with opt-in increases for the selected cohorts, or leave these cohorts at their current price.
Overlapping price increases
Once started, migrations cannot be stopped. However, if you're migrating a legacy cohort with a price increase, and then start another migration for the same user, the first migration is effectively halted. It will not affect users who haven't resolved the first price increase (either by accepting an opt-in increase, or by having their opt-opt increase notification period end). For those users, only the newer price increase applies.
Test price changes
You can use the Play Billing Lab app and license testers to test subscription price changes without affecting other active subscribers.
See the testing guide on the Android Developers site to learn more about testing price changes.
Declined payments, grace periods, and account hold
If a renewal charge is declined, Google will prompt the user to fix the payment issue and periodically retry the renewal charge. By default, this recovery period consists of a grace period, followed by an account hold period. You can specify the length of the grace period, during which the user retains subscription entitlement.
After any grace period has ended with the payment issue unresolved, the subscription can enter an account hold period. You can specify the length of account hold, during which the user should not have subscription entitlement. If the account hold period ends with the payment issue unresolved, the subscription is automatically expired.
By default, all auto-renewing base plans have account hold enabled. You can adjust the account hold length or disable it from the Google Play Console. The account hold and grace period must total 30 days or more.
Specifying period lengths less than the default values may reduce the number of subscriptions recovered from payment declines.
Enabling subscription pauses
You can prevent voluntary churn by enabling users to pause their subscription. When you enable the pause feature, users can choose to pause their subscription for a period of time between one week and three months instead of canceling, depending on the recurring period. Once enabled, the pause option surfaces both in the subscriptions center and in the cancellation flow. Note that annual subscriptions and free trials cannot be paused.
To enable users to pause their subscription:
- Open Play Console and go to the Monetization setup page (Monetize with Play > Monetization setup).
- In the "Subscription settings" section, change "Pause" to Enabled.
- Click Save changes.
A subscription pause takes effect only after the current billing period ends. While the subscription is paused, the user doesn't have access to the subscription. At the end of the pause period, the subscription resumes, and Google attempts to renew the subscription. If the resume is successful, the subscription becomes active again.
Learn more about subscription pauses and pause implementation requirements on the Android Developers site.
Subscription cancellation requirement
To comply with upcoming changes to Google Play's Subscriptions policy, your app must include an easy-to-use, online method for subscribers to cancel. In your app’s account settings (or equivalent section), you can meet this requirement by including the following:
- a link to Google Play’s Subscription Center (if your app uses Google Play’s billing system); and/or
- direct access to your cancellation process.
The requirement is described in full in the Subscription management & cancellation section of the Subscriptions policy.