DEV Community

Cover image for Your next Google Play update will be rejected if it still ships Billing Library 7 (Nov 1, 2026)
Emre P.
Emre P.

Posted on Edited on

Your next Google Play update will be rejected if it still ships Billing Library 7 (Nov 1, 2026)

Not a developer? Read this first. If Play Console shows a warning like "Update to a newer version of Google Play Billing Library" or "We've detected this app uses an unsupported version of Play billing", or an update you uploaded was rejected for its billing library, the fix is in your app's code, not in Play Console. Your app keeps selling in the meantime. If the developer who built the app is no longer around, send me the warning text and I will tell you what it takes, for free: my Billing upgrade project on Upwork.

If your app sells anything through Google Play and you have not touched its billing code in a year, check one line before your next release. From November 1, 2026, Play stops accepting new apps and updates that use Play Billing Library 7. That date is the end of the extension window; the normal deadline was August 31.

Your live app keeps working. Users can still buy. What breaks is the next update: Play Console refuses it, and you find out on the day you need to ship a fix.

Check your version in one minute

Native Android. Open app/build.gradle (or .kts) and look for:

implementation("com.android.billingclient:billing:7.x.x")
Enter fullscreen mode Exit fullscreen mode

Anything below 8 needs work. If you use billing-ktx, check that line too.

Flutter (in_app_purchase). The Billing version comes from the Android plugin, not from your app. Check pubspec.lock for in_app_purchase_android:

in_app_purchase_android Play Billing Library inside
0.4.0+8 7.1.1 (blocked after Nov 1)
0.5.3, 0.5.4 8.0.0
0.5.5 9.1.0

(Read from each version's android/build.gradle; check your own lock file, since ^0.4.0 will not move to 0.5.x on its own. 0.5.x is a breaking release, so plan a short test pass.)

RevenueCat, Adapty, other SDKs. They bundle a Billing version too. Update the SDK and check its release notes for the Billing version it ships.

Play Console. If you are already on an unsupported version, Play Console shows a warning on the Policy status page. That is also where the extension form lived; after November 1 there is nothing left to extend.

What changes from 7 to 8

Most apps that already moved to ProductDetails in Billing 5-7 need small changes. The ones that hurt:

  • querySkuDetailsAsync and SkuDetails are gone. If your code still uses them, this is the bulk of the work: move to queryProductDetailsAsync and ProductDetails, and subscriptions to base plans and offers.
  • Purchase history queries are removed. Use queryPurchasesAsync for active purchases; for refunded or canceled ones, the Voided Purchases API on your server.
  • queryPurchasesAsync(skuType) is removed. Use the version that takes QueryPurchasesParams.
  • The product details callback changed shape. onProductDetailsResponse now receives a QueryProductDetailsResult that also lists products Play could not fetch, with a status per product, so a missing product no longer fails silently.
  • enablePendingPurchases() without parameters is gone. Pass PendingPurchasesParams (enableOneTimeProducts() gives the old behaviour).
  • New and optional: automatic service reconnection (enableAutoServiceReconnection(), removes hand-written retry code) and a sub-response code on failed purchases (for example, insufficient funds), useful for a clearer error message.

Aim for 9, not just 8. Billing 8 itself is only accepted until August 31, 2027 (extension to November 1, 2027). The jump from 8 to 9 is small, so if you are touching the billing code anyway, landing on 9 saves you doing this again next summer.

After the code compiles, test the boring paths on a real device with a license tester: buy, cancel, pending payment (slow test card), restore on a fresh install, and an expired subscription. Billing bugs rarely show up in the happy path.

If you can't do it before November 1

Nothing happens to the version that is live. You just can't ship the next one until billing is on 8 or later. If you also need to raise the target API (Play now expects API 36 for updates), do both in the same release: the Gradle and AGP bumps overlap.

I moved four Flutter apps of my own through this (two on Billing 8, one on 9.1). If you want a second pair of eyes on yours, I do fixed-price Billing 8/9 upgrades (with target API 36 if you need it): see packages and prices on Upwork.

Sources: Google Play Billing deprecation FAQ · Play Billing Library release notes · Migrate to Billing Library 8

Top comments (0)