Preparing your apps for the latest features in Google Play’s billing system

Caren Chang
Android Developers
Published in
5 min readOct 2, 2020

--

As part of the Android 11 launch, the Google Play team announced new features to help you acquire and retain subscribers for your Android app. As part of this effort, Google Play will be changing the default settings for a few subscription features. In this post, we will take a look at these changes and how to make sure your apps are prepared.

To start, let’s take a look at the changes that will take place starting November 1, 2020.

In the rest of this article, we’ll dig into how each of these changes affects your app or game. For each feature, we will discuss how it may impact your app based on two different scenarios: 1) Your app does not track the status of subscriptions with a backend server 2) Your app has a backend server that also utilizes Real-time developer notifications to track the status of subscriptions.

Account Hold

What this feature means: When a user tries to renew a subscription but the process fails due to a payment issue, the user is put into an account hold period. This period lasts up to 30 days, and during this period the user loses access to the subscription.

If your app doesn’t track the status of subscriptions with a backend server: If your app depends on the result of queryPurchases() to get the latest status on subscriptions, you will not need to do anything extra to support account hold. BillingClient.queryPurchases() will not return subscriptions if they are in the account hold period. Once the user fixes their payment method, the subscription will be returned as part of queryPurchases() again.

If your app has a backend server that utilizes RTDN to track the status of subscriptions: The SUBSCRIPTION_ON_HOLD notification will be sent once the user enters the account hold period. Once the user fixes their payment issue and is successfully subscribed again, the SUBSCRIPTION_RECOVERED notification will be sent. Be sure your backend handles these notifications to have the most up-to-date status of a user’s subscriptions.

Read more about account hold and how to properly handle this state in the official documentation.

Account Restore

What this feature means: A user may cancel renewing a subscription before the subscription expires for the current billing period. When account restore is turned on, the user can restore their cancelled subscription before it expires by tapping the Resubscribe option in the Play Store app. This will restore the subscription as if the user had never cancelled it. If the subscription has expired, the user must resubscribe instead.

If your app doesn’t track the status of subscriptions with a backend server: If your app depends on the result of queryPurchases() to get the latest status on subscriptions, you will not need to do anything extra to support account restore. BillingClient.queryPurchases() will keep returning subscriptions until the subscription expires, even if the user has prematurely cancelled it before the next billing period.

If your app has a backend server that utilizes RTDN to track the status of subscriptions: The SUBSCRIPTION_RESTARTED notification will be sent when the user restores a subscription. If your app shows UI to notify the user about a subscription that’s about to expire, be sure to handle updating the UI once your backend receives this notification.

Read more about account restore and how to properly handle this state in the official documentation.

Account Pause

What this feature means: Users can choose to pause a subscription from one week to three months. A subscription pause will start taking effect only after the current billing period ends. When a subscription is paused, the user should not have access to the subscription’s features. Paused subscriptions are not returned in queryPurchases().

Account pause is currently not turned by default in the Play Console, but will be automatically turned on starting November 1, 2020. If your app is not yet ready to handle account pause by that date, you can manually turn the feature off in the Play Console.

If your app doesn’t track the status of subscriptions with a backend server: If your app depends on the result of queryPurchases() to get the latest status on subscriptions, you will not need to do anything extra. BillingClient.queryPurchases() does not return subscriptions that are paused.

If your app has a backend server that utilizes RTDN to track the status of subscriptions: The SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED notification is sent when the user initiates pausing their subscription. At this point, the subscription is still valid and active until the current billing period ends. When the subscription goes into the paused state, a SUBSCRIPTION_PAUSED notification is sent. When the subscription automatically resumes or if the user manually resumes the subscription, the SUBSCRIPTION_RENEWED notification is sent.

Read more about account pause and how to properly handle this state in the official documentation.

Resubscribe

What this feature means: Turning on the resubscribe feature allows your users to purchase the same subscription up to a year after the subscription has been inactive. This feature also allows users to purchase a subscription again before their current subscription ends.

The resubscribe feature is currently not turned on by default in the Play Console, but will be automatically turned on starting November 1, 2020. If your app is not yet ready to handle resubscribe by that date, you can manually turn the feature off in the Play Console.

If your app doesn’t track the status of subscriptions with a backend server: If your app depends on the result of queryPurchases() to get the latest status on subscriptions, you will not need to do anything extra. BillingClient.queryPurchases() will continue to return subscriptions until it has expired.

If your app has a backend server that utilizes RTDN to track the status of subscriptions: The SUBSCRIPTION_RESTARTED notification is sent when the user resubscribes to a subscription. Your app should handle restoring the user’s access to the subscription features once this notification is received.

Read more about resubscribe and how to properly handle this state in the official documentation.

Changes to these subscription features will take effect on November 1, 2020, so double check to make sure your apps are prepared!

--

--