Key takeaways
- Every Google Play Billing Library version has a two-year deprecation cycle. For version 7, Google says the deadline for new apps and updates was August 31, 2026, and the extension deadline is November 1, 2026.
- Version 8.0.0 (June 30, 2025) removed queryPurchaseHistory(), querySkuDetailsAsync(), the no-argument enablePendingPurchases() and the queryPurchasesAsync() overload that takes a SKU type, and changed the queryProductDetailsAsync() result.
- Flutter's in_app_purchase_android moved to Billing Library 8.0.0 in version 0.5.0 (May 27, 2026). The app-facing in_app_purchase package uses it from 3.3.0, which needs Flutter 3.38 or later.
- RevenueCat's purchases_flutter moved to Billing Library 8 in 9.0.0 (July 18, 2025). Its notes warn that one-time products wrongly set up as consumables can no longer be restored.
- Google says existing apps keep working. The deadline applies to new apps and updates. My reading: an app on version 7 can't ship an update until it moves, once any extension runs out.
Pricing an app? Try the free app cost calculator or get a range for your project in the instant quote.
If Play Console warns that your app uses an unsupported version of the Google Play Billing Library, version 7 is the likely cause: its deadline for new apps and updates was August 31, 2026, and Google says the extension it offers runs until November 1, 2026. Google says existing apps keep working, and new apps and updates must use a supported version. In my reading, an app still on version 7 can't ship an update once the extension runs out. For a Flutter app, that usually means a newer in_app_purchase or RevenueCat package, and possibly a newer Flutter.
The deadlines below come from Google's Billing Library deprecation page and release notes, and the package versions from pub.dev and RevenueCat's changelog, 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:
| Version | New apps and updates must move by | Extension deadline |
|---|---|---|
| 5 | August 31, 2024 | November 1, 2024 |
| 6 | August 31, 2025 | November 1, 2025 |
| 7 | August 31, 2026 | November 1, 2026 |
| 8 | August 31, 2027 | November 1, 2027 |
| 9 | August 31, 2028 | November 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. The rule applies to new apps and updates.
- The dependency check applies to APKs that use billing. Google says these dependencies only appear in APKs that require the
com.android.vending.BILLINGpermission. - 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.
What changed in version 8
Version 8.0.0 was released on June 30, 2025. Per Google's release notes, the changes most likely to break an older integration are:
| Change in 8.0.0 | What to use instead |
|---|---|
queryPurchaseHistory() removed | Google lists queryPurchasesAsync() for acknowledged and pending purchases, says to track consumed purchases on your own servers, and points to the voided-purchases API for canceled ones |
querySkuDetailsAsync() removed | queryProductDetailsAsync() |
enablePendingPurchases() with no arguments removed | enablePendingPurchases(PendingPurchasesParams). The old call equals PendingPurchasesParams.newBuilder().enableOneTimeProducts().build() |
queryPurchasesAsync(String skuType, ...) removed | queryPurchasesAsync(QueryPurchasesParams, ...) |
onProductDetailsResponse() signature changed | Handle the new result, which also lists products that couldn't be fetched |
Version 8 also added optional automatic service reconnection (enableAutoServiceReconnection()) and sub-response codes on launchBillingFlow(), such as PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS. In-app items are now called one-time products.
Flutter apps: which package versions include version 8
| Package | First version on Billing Library 8 | Notes, per its changelog or pubspec |
|---|---|---|
in_app_purchase_android | 0.5.0 (May 27, 2026) | Updates from 7.1.1 to 8.0.0. Breaking: removes queryPurchaseHistory, use queryPurchases |
in_app_purchase | 3.3.0 (June 3, 2026) | Depends on in_app_purchase_android ^0.5.0. Requires Flutter 3.38 or later and Dart 3.10 |
purchases_flutter (RevenueCat) | 9.0.0 (July 18, 2025) | Billing Library 8. Version 10.0.0 moved to 8.3.0 and raised the Android minimum to API 23 |
Two things to watch:
in_app_purchaseneeds a recent Flutter. Version 3.2.3, the last one on the old Android package, depended onin_app_purchase_android^0.4.0, which used Billing Library 7.1.1. To get version 8 through Flutter's own plugin, the app has to run on Flutter 3.38 or later. Flutter's release archive dates 3.38.0 November 12, 2025. Everyin_app_purchase_androidrelease after 0.5.0 requires Flutter 3.44 or later, so on Flutter 3.38 to 3.43 pub can only use 0.5.0. My advice: if the app is on an older Flutter, plan the Flutter upgrade and the billing update as one job, because the upgrade can surface other build errors.- RevenueCat warns about consumables. Its 9.0.0 notes say Billing Library 8 can no longer query expired subscriptions or consumed one-time products. If a lifetime purchase is set up as a consumable in the RevenueCat dashboard, RevenueCat will consume it, and users can't restore it. RevenueCat says to set those products up as non-consumables.
What to do now
This section is my advice, not Google's.
- Find the version you ship. In a native app, check
com.android.billingclient:billinginbuild.gradle. In Flutter, checkin_app_purchase_androidorpurchases_flutterinpubspec.lock, and compare with the table above. - Request the extension if you need time. If you can't ship version 8 before your next update, use the form from the Play Console warning. Google's extension for version 7 ends on November 1, 2026, so as of October 18, 2026 it buys two weeks at most.
- Upgrade the package, then fix what broke. Look for the removed calls in the version 8 table. In Flutter, replace
queryPurchaseHistorywithqueryPurchases. - Test purchases and restores before you ship. Use Play Console license testers to buy, cancel and restore each product type, especially one-time products and anything users expect to restore after reinstalling.
- Check the manifest if the warning stays. Google says the merged
AndroidManifest.xmlmust containcom.google.android.play.billingclient.version. If it doesn't, check whether manifest merging removes it.
Need a hand?
If an app can't ship an update because of the Billing Library deadline, or purchases broke after the upgrade, 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 is Play Billing Library 7 deprecated?
- Google's deprecation table sets August 31, 2026 as the deadline for new apps and updates on version 7, and November 1, 2026 as the extension deadline. Google's banner on the same page says that by August 31, 2026, new apps and updates must use version 8 or later.
- What happens if I don't update the Billing Library?
- Google says existing apps still work and unmaintained APKs don't need updates, but new apps and updates must use a supported version. My reading: once your deadline passes, you can't publish an update to an app that uses version 7 or older.
- How do I get an extension to November 1, 2026?
- 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. Google says the extension for version 7 runs until November 1, 2026.
- Which Flutter in_app_purchase version uses Billing Library 8?
- in_app_purchase_android 0.5.0, published May 27, 2026, updated the Billing Library from 7.1.1 to 8.0.0. The in_app_purchase package depends on it from version 3.3.0, which requires Flutter 3.38 or later and Dart 3.10.
- I already updated. Why does Play Console still show the warning?
- Google's FAQ says to check that your AndroidManifest.xml contains com.google.android.play.billingclient.version, and if it is missing, whether manifest merging removes it.
- Do I need to move to version 9?
- Not for this deadline. Version 8 is supported until August 31, 2027, with an extension to November 1, 2027, per Google's table. Version 9 was released on May 19, 2026 and is supported a year longer.
Sources
- Android Developers, Google Play Billing Library version deprecation (last updated September 9, 2026)
- Android Developers, Google Play Billing Library release notes
- pub.dev, in_app_purchase_android changelog
- pub.dev, in_app_purchase versions
- RevenueCat purchases-flutter changelog on GitHub
- Flutter release archive (macOS)
Related Resources
Related guides
RevenueCat + Stripe + Firebase Stack
Get a pre-built RevenueCat, Stripe, and Firebase monetization stack with Template369. Skip months of payment integration work and start earning revenue faster.
Read moreFlutter "Applying Gradle Plugin Imperatively" Error: The Fix
Since Flutter 3.29 (February 12, 2025), an Android build that still uses apply from: flutter.gradle fails with "You are applying Flutter's main Gradle plugin imperatively using the apply script method, which is not possible anymore." How to move settings.gradle, build.gradle and app/build.gradle to the plugins {} block, from Flutter's docs and source checked October 18, 2026.
Read moreFlutter "Deleted Android v1 Embedding" Build Error: The Fix
Flutter removed the Android v1 embedding in Flutter 3.29 (February 12, 2025), so older projects now stop with "Build failed due to use of deleted Android v1 embedding" or a plugin error about PluginRegistry.Registrar. What the error means, how Flutter decides your app is v1, and the exact AndroidManifest and MainActivity changes, from Flutter's docs and source checked October 18, 2026.
Read more