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 was 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, now that the extension window has closed.
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 offered ran 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 now that the extension has run 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 21, 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 October 20, 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. Version 0.5.5 (October 19, 2026) moves to Billing Library 9.1.0 with a minimum Android API of 23 |
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. Versions up to 3.2.4 (June 4, 2026), the last ones 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. The free Google Play deadline checker reads the billing line in yourbuild.gradlein your browser and flags it against these dates. - Plan the update around version 8. Google’s extension for version 7 ended on November 1, 2026, so your next update has to ship version 8 or later.
- 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.
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.
If you use RevenueCat and the paywall comes back empty after the update, the cause is usually a mismatch between RevenueCat and Play Console, not the library. See RevenueCat “Products Could Not Be Fetched”.
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.
- Can I still get an extension for version 7?
- Google's table ends the version 7 extension on November 1, 2026, and that date has passed. Plan to ship version 8 or later with your next update. An app on an unsupported version gets a warning in Play Console, with details on the Policy status page.
- 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 October 20, 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)
- Android Developers, Query Purchase History alternatives
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
Applying Flutter's main Gradle plugin imperatively fails since Flutter 3.29. How to move to the plugins {} block, from Flutter docs checked Oct 21, 2026.
Read moreFlutter "Deleted Android v1 Embedding" Build Error: The Fix
Build failed due to use of deleted Android v1 embedding? Flutter 3.29 removed v1. The AndroidManifest and MainActivity fixes, from docs checked Oct 21, 2026.
Read more