Skip to content

Most visited

Recently visited


Sell subscriptions with Play In-app Billing

Use Google Play In-app Billing to sell users access to content and features through a subscription for an ongoing revenue stream.

Why it works

When you use Google Play In-app Billing to sell a subscription, Google Play handles the checkout details so your app never has to process financial transactions. Your app will use the same checkout flow that is used for content purchases on Google Play, so users will get a familiar, reliable, and secure experience. Google Play also helps you attract and retain more customers with customizable subscription options and management features.

Key features

  • Flexible billing frequencies: Set your billing period to weekly, monthly, quarterly, half-yearly, seasonally, 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 market and bill users in their local currency.
  • Grace periods: Allow your subscribers to update their payment method if a recurring payment is declined.
  • Account hold: Block access to your content or service if a user's form of payment fails until they update it.
  • Upgrades and downgrades: Add the ability for users to switch from one plan to another (for example from a basic to a premium subscription).
  • Real-time developer notifications: Receive notifications as soon as a subscriber's state changes.
  • 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

  • Test In-App Billing implementation with a licensed test account. Testing is an important part of implementing In-App Billing, but doing so with real accounts can be pricey. Use our In-App Billing Sandbox during development or in preparation for launch to make large-scale, secure, and convenient test purchases with authorized user accounts so you're not spending real money during testing. Visit our Help Center for more information on testing In-app Billing.
  • Check subscriptions regularly from your server. A user's subscription state changes, so make sure to check your server at suitable intervals. For example, you should check after a purchase to ensure it completes successfully. Check again three to five days before a subscription is due to renew to anticipate cancellations so that you can try to re-engage. You should also check at renewal time to ensure successful renewal and catch any issues.
  • Store purchase tokens and order IDs. To make sure you're tracking users appropriately, record both purchase tokens and order IDs. OrderID appears in financial reports, and tokens are required for using Play Billing APIs and validating purchases.
  • Attract users with introductory pricing. Introductory pricing allows you to offer a discounted price to new users for a set period. Along with local and custom pricing and free trials, introductory pricing helps you acquire more subscribers and grow your subscription business.
  • Track and notify your users when their payment information needs updating. Tracking "paymentState" and notifying your users when their payment state is 0: "Payment pending" helps to reduce involuntary churn as a result of payment failures.
  • 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 done simply by flipping a switch in the Play Console without any coding involved.
  • 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.
  • Monitor cancellations. The cancelReason and cancellation time provide the reason for the cancellation and time it occurred, so you can correlate cancellations with user behavior to try and prevent them from happening in the first place.
  • Use the "deferred API" to give existing users free service. Address outages or service issues using the "deferred API" to defer payments as a gesture of goodwill to your users.
  • 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)