How to create and configure in-app subscriptions on Android
Tags: android, subscriptions, payments, programming
Published: 2021-01-28 09:53:01

The subscription industry is booming. Since 2016, Google has been incentivizing subscriptions, introducing subscription-only measures like [halving Google Play sales cut](https://support.google.com/googleplay/android-developer/answer/112622?hl=en) when the user is subscribed for a year or longer. Today, this bet seems victorious: according to a recent study by AppAnnie, apps with subscriptions [account for 96%](https://www.appannie.com/en/go/state-of-mobile-2020/) of consumer spend in top non-gaming apps.

In this article, we are going the full distance in introducing subscriptions for an Android app. Along the way, we will examine every tool Google has to offer while also coming up with caveats that official guidelines left uncovered. Let’s assume that you have already paid for your [Google Play merchant account](https://support.google.com/googleplay/android-developer/answer/7161426?hl=en) and have an  app, or draft for an app, available in your Google Play Console.

![Implementing in-app subscriptions](https://media.giphy.com/media/Jg8G4ve9HRSpO/giphy.gif)

## Creating a subscription from scratch

To create a subscription, you will need to start with your [app page](https://play.google.com/apps/publish) in Play Console, redirecting you to "All Apps". Select your app, go to section *Monetize –> Subscriptions*, and click on *Create subscription button* on the right.
![Subscription section in Play Console](https://lh6.googleusercontent.com/_S_LdP89PnrpMFdgy55T47S3wpvqUMc5Db8iMbAbOjx-9ZHSq1MgM21v2o7ctbBPKZ5Snbmtqz2Zwse1w5ck45hNz4Ak3PNCihORxqr_0p0itj0PgG0bKFdah1UnhnpEqaI60GH-)*Last step: choose "Create subscription" on the right*

Google will immediately ask you to provide a Product ID, which it uses to uniquely identify this particular subscription product. Every product available for purchase on Android has its Product ID. In this particular case, it will be an ID for your subscription. These IDs are not public (unlike Subscription Title), so don’t spend too much time here: we suggest you use an ID that’s easy to identify by you, and contains details about the product. However, remember that you can’t modify this and you can’t reuse a product ID inside the same app.

Product ID can contain numbers, lowercase letters, underscores, and periods. You can’t name a Product ID starting with ‘android.test’, and you can’t change as well as reuse a Product ID once the product has been created.

All the rest is to be filled in your local language. If you want to use different localizations, click on ‘Manage translations’ and fill in data for each locale. **These are the following fields, all of which will be shown on the system dialog screen at the moment of purchase:**

1. Title. Short name for an item, better to use titles up to 25 characters
2. Description. Item description, up to 80 characters
3. Default price and billing period. The latter may be weekly, every 4 weeks, monthly (yes, alongside 4 weeks option), every three months, half a year, or annually. Note that once you activated your subscription, you will not be able to change its billing period. 

This policy by Google seems quite reasonable. It would be unfair if a user one day receives an email “Dear monthly subscriber, we’ve decided you will be charged annually starting next month, please be ready or cancel''. 

Simultaneously, if developers want to update their pricing, existing subscribers will be notified of the price change by email and through a notification on Google Play 7 days after the price change occurs. Subscribers will then have 30 days to agree to the price change; otherwise, their subscription will be cancelled on their next renewal date.

1. Benefits (optional). You may provide up to four benefits, which will describe the subscription features, up to 40 characters each.
2. Benefits should highlight the features to give users a better idea of what your subscription offers, like “Full catalogue of TV shows and movies.”
3. You can’t mention free trial or promotional price since not all users are eligible for it.

We didn’t manage to find any mention by Google where the user might see these benefits, so we did our own investigation. Benefits are shown as the last resort when a user tries to cancel a subscription, on the very last system transactional page before the cancellation. Interestingly, neither benefits nor even app description is displayed when a user tries to purchase your plan – there is a title only.
![Cancel subscription pop-up in Google Play](https://dev-to-uploads.s3.amazonaws.com/i/4tvi8y2dd4svbvc03mh3.png)*Only place your users will see these benefits*

## Optional features of your subscription

Google offers a range of instruments to enhance and tailor your marketing. You may choose not to use them, but we advise you to, as most of them are necessary for a pleasant user experience.

### Free trial

Free trial lets your users try out a subscription before buying it. Free trials run for a period of time that you set, and then they automatically convert to a full subscription using the subscription’s time period and price.  By default, users can only receive one free trial across all available subscriptions on your app, but this can be changed in the Console settings.
![Subscriptions in Google Play Console](https://lh5.googleusercontent.com/eTqkrl0ikXQ8xIbX17CZbS2YY1NPCzuWnhjWP4hSCvfKNZ79WSx4pSZFqYrZHdO5BoF1x3zNESSrQRRUUJWN005eNYhZjfItDh86mikLnumeL_AuUvQK-UpYcoC1ygkgdbdRr1f_)*Free trial settings are available under “Manage subscriptions settings” button*
#### Requirements

You must let users know:

- what content or services they will be able to access with a free trial,
- how and when a free trial will convert to a paid subscription,
- how much the paid subscription will cost,
- and how to cancel if they do not want to convert to a paid subscription.

![Play Console Help section violations](https://dev-to-uploads.s3.amazonaws.com/i/eowcvgc9vnloqz93m03n.png)*Examples of common violations, available on Play Console Help section*)

You can create one free trial per subscription product. Free trials are always $0. Trial periods must be 3 days or longer; you can change the trial period at any time, but only new subscribers will use the updated trial period. Users can only get a free trial if they haven’t previously purchased the subscription it applies to. For more information and examples, see [Free Trials & Introductory Offers](https://play.google.com/about/monetization-ads/subscriptions/#!?zippy_activeEl=free-trials#free-trials) in the Developer Policy Center.

### How users start a free trial

To start a free trial, a user must complete the standard process for purchasing a subscription on Google Play. They aren’t charged at first, and they’re notified by email that the subscription includes a free trial period. Google Play records a transaction of $0.00, and the subscription is marked as purchased for the trial period or until it is cancelled.

Now comes the tricky part: Google claims that the user is charged the day after the trial period ends, which is not entirely correct. Based on our experience, the user receives a transaction notification from his bank **the day before the trial ends. **Basically, Google allows the user to cancel and get an automatic refund, with the subscription also being cancelled the next day. If the user manages to cancel during the last day of the trial, the money will return without any additional user actions.

We don’t really know whether Google charges users in advance or just pre-authorizes the necessary sum. Either way, this is usually confusing for your trial users as banks often don’t differentiate between these operations, resulting in angry letters to your customer support to get the refunds.

When the trial ends, a user’s payment method is charged for the specified subscription amount (price can be either full, discounted, or an introductory offer), which recurs using the subscription’s set time period. The payment status may display as pending for up to 24 hours, even if no [grace period](https://support.google.com/googleplay/android-developer/answer/140504?hl=en#grace) is set.

### Introductory price

With introductory pricing, you can specify an initial price that applies to a set number of days, weeks, months, or billing periods. For example, you can offer a subscription for $1 per month for the first three months. Or, you can provide an introductory price of $1 for 10 days, followed by a regular monthly price. At the end of the introductory period, users are charged the full subscription price.

**Requirements**

- You must clearly and accurately describe your offer’s terms, including the duration, pricing, and description of accessible content or services.
- Be clear about what happens when the introductory offer ends, including how much users will be charged and how they can cancel.
- The minimum introductory period is 3 days, and the maximum introductory period is 12 months.
- Introductory prices must be within the [accepted price range](https://support.google.com/googleplay/android-developer/table/3541286) and less than the subscription's full price.
- If the introductory period is a different length of time than the subscription period, the introductory price must cost less per day than the original price. For example, if a subscription costs $15 per month (or $0.50 per day), a week-long introductory price must cost less than $3.50. For these calculations, a month is always considered to be 30 days.

Also, two points to keep in mind. First, if you're offering a free trial and introductory price, your users are charged the introductory price at the end of the trial. Second, a user can only receive an introductory price for a specific subscription product (SKU) at one time.

For more information and examples, see [Free Trials & Introductory Offers](https://play.google.com/about/monetization-ads/subscriptions/#!?zippy_activeEl=free-trials#free-trials) in the Developer Policy Center.

**You have two options to add introductory price: as a single payment, or a recurring payment.**

Having chosen ‘single payment’, you can set up an introductory period of n days/weeks/months (within limits specified above) for a specific price regardless of your subscription’s original billing period. ‘Recurring payment’ is tied to the original billing period. You can only choose the number of introductory periods and introductory price itself; for example, 3 months for a monthly subscription, and a monthly price for these 3 months.
![<img src=&quot;spacer.gif&quot; alt=&quot;&quot;>](https://lh5.googleusercontent.com/5oVD11U1KqaRW5VpWMUkTXzC9nxv7Pez3_ScfUxNamUCDA-apmFHgBTX63spsSKAlOdr5iOF0I_puXGB9aE2WpOsAn9BAGWAaRBpeBl-CC-f5N_SUQbdKDQph29wEi_mHmbIohSu)Introductory pricing options in Play Console
### Grace Period

[Grace period allows](https://developer.android.com/google/play/billing/billing_subscriptions#user-is-in-a-grace-period---subscription_in_grace_period) your subscribers to update their payment method if a recurring payment is declined. This can be useful if your subscribers have an expired credit card, subscribed using a prepaid card, or cancelled a card without updating their payment information. Using grace period is usually considered more humane towards your users, and there’s no reason to turn it off.

At the start of the grace period, your subscribers will receive an email notifying them of a declined payment. They'll have time to update their payment method without interrupting their subscription. Once your subscribers update their payment method to a valid payment form, their next subscription billing date stays the same. If your subscriber's payment method is still declined by the end of the grace period, their subscription is cancelled, and they lose access to their subscription content.

Grace period could last for 3, 7, 14, 30 days, or none. If your subscription is ‘every 4 weeks’, the maximum grace period is 14 days; for ‘weekly’ subscription the maximum is 7 days.

For new subscription products, the following grace periods are set by default:

- Weekly subscriptions: 3 days
- Monthly and ‘every 4 weeks’ subscriptions: 7 days
- Other subscription periods: 14 days

### Resubscribe

Google [offers](https://developer.android.com/google/play/billing/subscriptions#restore) the option to restore an expired subscription not through the app itself, but through the Play Market. If “Enabled for all” (which is the default value), users can resubscribe to the same SKU for up to a year after expiration by clicking Resubscribe in the Google Play subscription center, which generates a new subscription and purchase token.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/glycna8s5vlfs08dzfhy.png)*Subscription section of Google Play*

### Pause and Free trial limit

When you click ‘Manage subscription settings’ button on the ‘Subscriptions’ page, you will see the following menu:
![Subscriptions page in the Play Console](https://lh5.googleusercontent.com/Yz4FA2VgcJPOY1s4fVyVbYRvZF6M_YQh8uqGvKPa2LkcgjtjYiO321lBuT-lityMk3TipJVDGVuBzQQVyjWMddDxM-WG4v77Y5zf3n3UN5mE0aSnr8zcoRO48-RReWWZboOtQOfH)
**Pause**

The default value is ‘enabled’. 

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, depending on the recurring period. Once enabled, the pause option surfaces both in the subscription center and in the cancellation flow. 

Note that annual subscriptions cannot be paused, and pause limits of one week and three months are subject to change at any time. The 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. Once the resume is successful, the subscription will become active again. If the resume fails due to a payment issue, the user enters the account hold state. Users can also choose to manually resume a subscription at any time during the pause period. When a user resumes manually, the billing date changes to the manual resume date.

![User pauses and then resumes subscription timeline from Google](https://lh4.googleusercontent.com/DhY9Sik0ro2uQJhN2Gq2DHReC8ZqZqv7DwFdC3Lv_G5AANxx0s8Gl_02W_WMpbcIVn9AfEn9pF0XaHgDWq4zdm17h-IgUNzBOOosx7cb1GgkRL7oYJo2KuMSNTMyhzAEoOUGMf1P)*Courtesy of Google’s [Android Developer](https://developer.android.com/google/play/billing/subscriptions#pause)*
**Free trial limit**

You have two options - ‘One per subscription’ or ‘One across all subscriptions’.

Overall, every field, except **product ID** and **billing period**, can be edited at any time. Billing period can be edited before you push the ‘Activate’ button. Once activated, the subscription product itself can’t be deleted.

To make your subscription visible to your testers, you need to activate it first. “Activate” button will become available once you fill in all the necessary fields and save changes, meaning your new clients can purchase it from your app. Testers can work with subscriptions without paying if you add them to License testing list by going to [your app page](https://play.google.com/apps/publish) –> Settings –> License testing.

## Google Play rules

### Subscription prices

You can choose to make certain content or services in your app available to users at a regular rate for a particular period. Users will be charged your chosen rate at your selected frequency until they decide to cancel.

For example, a user who buys a one-year subscription on Jan 1 for $10 will have access to the subscription until December 31 and will be charged $10 on the following renewal date.

### Requirements

- As a developer, you must be transparent about any subscription services or content you offer within your app.
- You must communicate your offer clearly in any in-app promotions or splash screens.
- You must be explicit about your offer terms, including the cost of your subscription, the frequency of your billing cycle, and whether a subscription is required to use the app. Users should not have to perform any additional action to review the information.
- Subscription pricing must be within the [accepted price range](https://support.google.com/googleplay/android-developer/table/3541286).
- Your subscription title must accurately reflect your offer. For example, don’t name your subscription “Free Trial”.

### Price changes

After you change the price of an existing subscription, here’s how it affects new users and existing subscribers:

- New users can immediately see the subscription’s new price and subscribe to it on Google Play.
- Existing subscribers receiving a price increase will be notified of the price change by email and through a notification on Google Play 7 days after the price change occurs. Subscribers will then have 30 days to agree to the price change; otherwise, their subscription will be cancelled on their next renewal date.

Of course, price increases may cause an increase in churn if subscribers do not accept the price change. We advise you to contact subscribers to inform them of the price increase in advance (Google recommends within a week) and give them a convincing justification. Customers will pay more if you give them a reason to do so

If you change the price multiple times before the user's next renewal date, the user only has to respond to the most recent price change. Existing subscribers receiving a price decrease will be notified and receive a lower price on their next renewal date.

### Managing price changes

- Once you change the subscription price, it can’t be reverted.
- You can change a subscription’s price multiple times, but that's not what Google recommends as you may lose some subscribers each time you change a price

If you change a subscription’s price twice in a short period of time, your subscribers will need to agree to the first price change, and then agree on the second price change for your intended price to take effect.

If you want to offer one price to existing subscribers and a different price to new users, you can create a new subscription with the price you want to offer to new users. This way, your existing subscribers can continue renewing their subscriptions without having to agree to a price change.

And that's it, you've created your subscription! Next, we will be covering how to handle it.