Skip to content

AI & TechnologyPlay Billing Library 9: Migration Guide and 2027 Deadline

Simon Dziak
Simon Dziak
Founder & developer, App369
LinkedIn
October 18, 20266 min

Key takeaways

  • Google's deprecation table sets August 31, 2027 for new apps and updates on Billing Library 8, with an extension deadline of November 1, 2027. Version 9 is the next supported version, and its own row says August 31, 2028.
  • Version 9.0.0 (May 19, 2026) brings four changes from 8, including: blocked Play Store apps now return BILLING_UNAVAILABLE instead of ERROR, getLinkUri() can be null, and targetSdkVersion is 35. Version 9.1.0 (June 18, 2026) adds Billing Choice APIs.
  • Google's migration guide for 8 to 9 says to update the dependency to 9.1.0, handle new sub-response codes, and use AndroidX Core 1.9 or later for the new error code.
  • As of October 18, 2026, Flutter's in_app_purchase_android 0.5.4 still depends on Billing Library 8.0.0, and RevenueCat's latest Android SDK in purchases_flutter 10.16.0 uses 8.3.0. I found no Flutter plugin on version 9 yet.
  • Google says existing apps keep working. The deadline applies to new apps and updates, so an app still on version 8 can't ship an update after its deadline unless the plugin you use has moved.

Pricing an app? Try the free app cost calculator or get a range for your project in the instant quote.

Google's deprecation table gives Play Billing Library 8 a deadline of August 31, 2027 for new apps and updates, with an extension deadline of November 1, 2027, so version 9 is the one to move to. Google says existing apps keep working. The rule applies to new apps and updates. If you ship with Flutter, the practical question is when your plugin moves, because as of today the official plugin and RevenueCat still use version 8.

The dates below come from Google's deprecation page and release notes, and the plugin facts from the flutter/packages and RevenueCat repositories and pub.dev, as listed in the sources. I checked each one on October 18, 2026.

Disclosure: App369 is my studio. I build and fix apps, including in-app purchases and subscriptions in Flutter, and the last section mentions what I sell. Google and RevenueCat don't pay me for anything on this page.

The deadlines

Google gives every Billing Library version a two-year deprecation cycle. Its table:

VersionNew apps and updates must move byExtension deadline
5August 31, 2024November 1, 2024
6August 31, 2025November 1, 2025
7August 31, 2026November 1, 2026
8August 31, 2027November 1, 2027
9August 31, 2028November 1, 2028

Source: Google Play Billing Library version deprecation, last updated September 9, 2026.

Google's FAQ also says:

  • Existing apps still work. Unmaintained APKs don't need updates. New apps and updates must use supported versions.
  • The extension form is in Play Console. An app on an unsupported version gets a warning. Open its details on the Policy status page to find the form.
  • Check the manifest if a warning stays. The merged AndroidManifest.xml must contain com.google.android.play.billingclient.version.

If your app is still on version 7, read the version 7 to 8 guide first.

What changed in version 9

Version 9.0.0 was released on May 19, 2026. Per Google's release notes:

Change in 9.0.0What it means
Error codes for blocked Play Store activityWhen the system blocks the Play Store app, for example in OEM-customized kids mode, the response code changes from ERROR to BILLING_UNAVAILABLE. The BillingResult carries a Play Store is blocked debug message. This needs AndroidX Core 1.9 or later
DeveloperProvidedBillingDetails.getLinkUri() is @NullableHandle both null and an empty string before parsing the link or launching a browser intent
targetSdkVersion updated to 35Stated in the release notes
In-app messaging for opt-in price increasesUsers can confirm an upcoming opt-in price increase without leaving the app. The message is shown from the first day the user can accept, at most once every 7 days

Version 9.1.0 was released on June 18, 2026. It adds Billing Choice APIs, including BillingClient.getBillingChoiceInfoAsync(), BillingChoiceInfo and BillingClient.showBillingProgramInformationDialog(). Google's release notes list no later 9.x release as of October 18, 2026.

How Google says to migrate

Google's guide for moving to version 9 uses 9.1.0 in its examples. The steps:

  1. Update the dependency to com.android.billingclient:billing:9.1.0. For Kotlin extensions, add billing-ktx.
  2. Skip the queryProductDetailsAsync change if you are on 8. Google says the onProductDetailsResponse signature change applies only to upgrades from version 7.
  3. Remove the old APIs, if you still use any. Google's list includes SkuDetails, querySkuDetailsAsync, BillingClient.SkuType (use ProductType), QueryPurchaseHistoryParams, the no-argument enablePendingPurchases() and queryPurchasesAsync(String, listener). My reading: most of these were already removed in version 8, so an app that moved to 8 cleanly has probably dealt with them. Check your code for any that remain.
  4. Consider automatic service reconnection. Google recommends it.
  5. Handle new sub-response codes on the BillingResult from launchBillingFlow(): PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS, USER_INELIGIBLE and NO_APPLICABLE_SUB_RESPONSE_CODE.
  6. Account for the error-code change and the nullable link from the table above.

Flutter apps: where the plugins stand

I found no Flutter plugin on version 9 yet. A pull request to update in_app_purchase_android to 9.1.0 (flutter/packages #12781), opened September 8, 2026, was still open and unmerged on October 18, 2026. As of October 18, 2026:

PackageLatest version (published)Billing Library it uses
in_app_purchase_android0.5.4 (October 13, 2026)8.0.0, per its build.gradle.kts on main. Its changelog lists the move from 7.1.1 to 8.0.0 in 0.5.0
in_app_purchase3.3.1 (September 18, 2026)Depends on in_app_purchase_android ^0.5.0
purchases_flutter (RevenueCat)10.16.0 (October 14, 2026)Bundles Android SDK 10.27.0
purchases-android (RevenueCat)main branchbillingClient = "8.3.0" in libs.versions.toml

Two details:

  • in_app_purchase_android 0.5.4 needs a recent Flutter. Its pubspec requires Flutter 3.44 or later and Dart 3.12.
  • My advice: a plugin on version 8 is fine until Google's version 8 deadline. The deadline for new apps and updates is August 31, 2027. That leaves time for the plugin authors to move.

My advice: don't force version 9 into a Flutter app by overriding the plugin's Gradle dependency until the plugin supports it. The plugin's Dart and Kotlin code is built against the version 8 API. Wait for the release, then upgrade the package.

What to do now

This section is my advice, not Google's.

  1. Find the version you ship. In a native app, check com.android.billingclient:billing in build.gradle. In Flutter, check in_app_purchase_android or purchases_flutter in pubspec.lock.
  2. Watch the plugin changelogs. Check the in_app_purchase_android and RevenueCat changelogs once a month. When one mentions Billing Library 9, plan the upgrade.
  3. Keep your Flutter version current. Each plugin release raises its minimum Flutter, and a late jump can mean fixing other build errors first.
  4. Upgrade early in the cycle, not at the deadline. Google's extension to November 1, 2027 is a safety net, not a plan.
  5. Test purchases and restores before you ship. Use Play Console license testers to buy, cancel and restore each product type.

For every other dated Apple, Google Play and Firebase requirement in 2026 and 2027, see App Store and Google Play deadlines for 2026 and 2027. The related Android target level requirement is in the target API 36 guide.

Need a hand?

If your in-app purchases break during the Billing Library upgrade, or you're not sure what your plugins need, the App Fix Ticket covers it in two fixed-price steps. A $450 Diagnosis gives you the root cause with evidence and a fixed repair quote within 3 business days, credited toward the fix. If you go ahead, the $1,200 Fix takes 5 business days and comes as a pull request. Or send me a short description.

Frequently asked questions

When must I move to Play Billing Library 9?
Google's deprecation table gives version 8 a deadline of August 31, 2027 for new apps and updates, and an extension deadline of November 1, 2027. After that, an update has to use a supported version, and version 9 is the next one.
What changed between version 8 and version 9?
Google's 9.0.0 release notes list four changes: Play Store blocked by the system now returns BILLING_UNAVAILABLE instead of ERROR, DeveloperProvidedBillingDetails.getLinkUri() is @Nullable, targetSdkVersion is 35, and in-app messaging can announce an upcoming opt-in price increase. Version 9.1.0 adds Billing Choice APIs.
Can I use Billing Library 9 in a Flutter app today?
Not through the official plugin as of October 18, 2026. in_app_purchase_android 0.5.4, published October 13, 2026, still builds against com.android.billingclient:billing 8.0.0. A Flutter plugin has to move first, or you add a native override yourself.
Do I need to rewrite my purchase code for version 9?
Google's guide says only the queryProductDetailsAsync signature change applies just to upgrades from version 7. It lists removed APIs without a version 8 exemption, so an app on version 8 that still calls any of them must change those calls. The other steps are the dependency bump, new sub-response codes, the error-code change and the nullable link.
How do I ask for the extension?
Google says an app on an unsupported version gets a warning in Play Console. Open the warning's details on the Policy status page and use the extension form there.

Sources

  1. flutter/packages on GitHub, pull request #12781 (in_app_purchase_android to Billing Library 9.1.0)
  2. Android Developers, Google Play Billing Library release notes
  3. Android Developers, Migrate to Billing Library 9
  4. Android Developers, Google Play Billing Library version deprecation (last updated September 9, 2026)
  5. flutter/packages, in_app_purchase_android changelog
  6. flutter/packages, in_app_purchase changelog
  7. pub.dev API, in_app_purchase_android
  8. RevenueCat purchases-flutter changelog on GitHub
  9. RevenueCat purchases-android on GitHub (libs.versions.toml)
Tags
#play billing library 9 #play billing library 9 migration #play billing library 8 deprecation #billing library deadline august 31 2027 #billing library extension november 1 2027 #in_app_purchase_android billing 9 #purchases_flutter billing library 9 #play billing 9.1.0 #flutter in app purchase billing library update
Share:

Related Resources

Related guides