Skip to content

Most visited

Recently visited


Sell subscriptions with Play In-app Billing

Sell subscriptions through Google Play Billing to provide users with access to content and features on an ongoing basis.

Why it works

Google Play's subscription platform gives you the tools and actionable intelligence to grow your subscription businesses. You can quickly and easily get set up with Google Play Billing, and then Google Play handles the checkout details so your app never has to process financial transactions. You'll have access to customizable subscription options and management features to help you attract and retain more customers. And, because your app will use the same checkout flow that is used for content purchases on Google Play, users will get a familiar, reliable, and secure experience.

Key features

  • Flexible billing frequencies: Set your billing period to weekly, monthly, quarterly, half-yearly, or annually.
  • Free trials: Let users try your app before subscribing by offering a trial period for a duration of your choosing.
  • Introductory pricing: Specify an initial, discounted price that applies to a set number of billing periods.
  • Local pricing: Customize the price for each locale and bill users in their local currency.
  • Grace periods: Allow your subscribers to update their payment method if a recurring payment is declined.
  • Account holds: Block access to your content or service if a user's form of payment fails until they update their payment information.
  • Upgrades and downgrades: Add the ability for users to switch from one plan to another (for example, from a basic to a premium subscription) or to re-sign up to keep access.
  • Server-side API: See fine-grained details about each subscription, such as expiration date, payment status, cancellation reason, and more.
  • Real-time developer notifications: Receive notifications as soon as a subscriber's state changes.
  • Subscription restore: Allow users to restore a subscription directly from the Play Store.
  • Conversion analytics: See which channels bring in the largest number of paid users.
  • Billing reports and dashboards: Measure how much you're earning every month from each subscription tier you offer and track how long you're retaining your subscribers.

Best practices


  • Use the Google Play Billing Library to simplify development. The library provides an interface for sending in-app billing requests, and managing in-app billing transactions using Google Play.
  • Configure all of your subscriptions SKUs at the app level using the Google Play Console, instead of having to manage all of your SKUs individually.
  • Use license test accounts to test purchases without spending real money. We provide a “good” test instrument and a “bad” test instrument for each account so you can make secure and convenient test purchases during development or in preparation for launch. For more information on testing, visit the Help Center.
  • Record purchase tokens and order IDs to make sure you're tracking users appropriately. Order IDs appear in financial reports, and tokens are required for using Play Billing APIs and validating purchases.



  • Monitor subscriber state changes using real-time developer notifications (RTDN). To enable RTDN, you'll need to integrate your backend with Cloud Pub/Sub using your own Google Cloud Platform (GCP) project, and indicate in Google Play Console the Pub/Sub topic to which Play should publish notifications. Whenever an RTDN is received, call the server-side API to get the latest subscription state. Then, sync the state with your database. This should be done even for notification types you haven't seen before.
  • Notify your users when their payment information needs updating, which helps to reduce involuntary churn as a result of payment failures. When paymentState is 0, the user needs to update their payment information.
  • Implement grace periods for your apps. Setting up a grace period helps with retention by allowing you to give your users an extra 3 or 7 days to fix payment issues when their renewal declines. Developers who use a grace period see a 57% higher recovery rate from renewal declines. This can be configured in the Play Console.
  • Help prevent involuntary churn by enabling account holds. With account holds, you put subscribers with payment failures in a suspended state and block access to content until they update their form of payment, which hopefully motivates them to do so. We see the best results when developers enable both grace periods and account holds for their subscriptions.
  • Allow users to easily restore a subscription from the subscription management page in the Play Store by enabling subscription restore in the Play Console.
  • Transition users from one SKU to another. In the event a user tries to cancel, let them select another subscription plan by switching from one SKU to another.
  • Analyze the cancelReason and cancellation time so you can correlate cancellations with user behavior to try and prevent it from happening in the first place.
  • Defer billing through the Google Play Developer API to give existing users free service for a temporary period of time. Deferring billing is as a gesture of goodwill while also helping you to address outages or service issues.
  • Use the Play Console to measure performance. The subscription dashboard and reports in the Play Console give you data and insight into your business performance to help guide your decisions.


This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields


Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience. (Dec 2017 Android Platform & Tools Survey)