Skip to main content

I followed all the steps in the documents and I am in the testing phase and I am testing on a real device with Android 12 and I get this error

 

In-app billing API version 3 is not supported on this device.
W//Purchases] - WARN(25864): 🤖‼️ Billing is not available in this device. DebugMessage: Google Play In-app Billing API version is less than 3. ErrorCode: BILLING_UNAVAILABLE.

Hi @Mohammed Radwan 


Here's a link to the Google docs on the message: https://developer.android.com/reference/com/android/billingclient/api/BillingClient.BillingResponseCode#BILLING_UNAVAILABLE

This error message would be thrown by Google if the user's on a very old version of the Play Store. You'll want to update your version Play Store, or ensure you are signed into a Google account on your device.


Hi @tina 

my google play version is 29.4.13


Hi @Mohammed Radwan 

Have you also confirmed that you’re signed into a Google account on your device? 


@tina yes


Hi @Mohammed Radwan 

The BILLING_UNAVAILABLE error code typically indicates an error on Google’s side. Some other things on the top of my head:

  • Is your Google account associated with a country that Google Billing supports?
  • Are you on the latest SDK version?
  • Do you have a stable internet connection?

Hi, I’m using flutter and all are using the latest updated version.

for the RevenueCat plugin, I’m using the Purchases Flutter version 3.9.5, the latest as of this writing.

purchases_flutter: ^3.9.5

The Google Play I’m using is version 29.5.14-21, also the latest for my device (Samsung Galaxy S9+).

And I’m still getting this error:

W/BillingClient( 3086): In-app billing API version 3 is not supported on this device.
W/

My internet connection is great, I can watch YouTube video flawlessly.

Also I’m logged in the Google Play account and the country is supported by Google Play Billing (I’ve tried using my Indonesia and Hong Kong accounts all cannot work).

Please note that this problem never happened before.


Hi @regentech 

Usually the BILLING_UNAVAILABLE error means that your Android device is running an unsupported version of Android or Play services. 

Other things to check when you get this error:

  • Are you logged in to the correct Google Account on the device/emulator? Try logging out and logging back in.
  • If you're testing on an emulator, can you confirm that it has Google Play installed?
  • Try restarting the device/emulator. Sometimes the emulator will lose its network connection permanently until you restart it.
  • Sometimes even wiping the device/emulator will fix the issue, but try the other tips first.

BILLING_UNAVAILABLE  is very generic, so it's hard to pinpoint exactly what the problem is just from that. Do you have another piece of code that is importing the old version of Google Play Billing API?


Hi, I’m using flutter and all are using the latest updated version.

for the RevenueCat plugin, I’m using the Purchases Flutter version 3.9.5, the latest as of this writing.

purchases_flutter: ^3.9.5

The Google Play I’m using is version 29.5.14-21, also the latest for my device (Samsung Galaxy S9+).

And I’m still getting this error:

W/BillingClient( 3086): In-app billing API version 3 is not supported on this device.
W/

My internet connection is great, I can watch YouTube video flawlessly.

Also I’m logged in the Google Play account and the country is supported by Google Play Billing (I’ve tried using my Indonesia and Hong Kong accounts all cannot work).

Please note that this problem never happened before.

are you found the Problem and it’s solution, please share with us. Thanks


I am facing the same issue on one of my devices. Working on the others.

Is there any update on this?


I’m not logged in to Google Play on my emulator so I understand that I’m correctly receiving this, but how do I handle it properly in a Flutter app to display an error message to the user. Currently the package just prints the error to the console but I have the configuration wrapped in a try/catch block and no exception is thrown and checking if the Purchases object got configured returns ok, so I have no error being returned to me that I can handle and display an error message to the user. The app just continues on until the point where it throws errors when trying to get data from RevenueCat.

Any help on how to handle this graciously would be appreciated. Thanks.


I am also getting this error with the following stack trace:

Fatal Exception: io.flutter.plugins.firebase.crashlytics.FlutterError: PlatformException(3, The device or user is not allowed to make the purchase., {code: 3, message: The device or user is not allowed to make the purchase., readableErrorCode: PurchaseNotAllowedError, readable_error_code: PurchaseNotAllowedError, underlyingErrorMessage: Billing is not available in this device. DebugMessage: Google Play In-app Billing API version is less than 3. ErrorCode: 3.}, null). Error thrown Erro ao tentar obter oferta escolhida pelo usuário..

       at StandardMethodCodec.decodeEnvelope(message_codecs.dart:653)

       at MethodChannel._invokeMethod(platform_channel.dart:315)

       at Purchases.getOfferings(purchases_flutter.dart:194)

       at ...

       at ...


I am also getting this error with the following stack trace:

Fatal Exception: io.flutter.plugins.firebase.crashlytics.FlutterError: PlatformException(3, The device or user is not allowed to make the purchase., {code: 3, message: The device or user is not allowed to make the purchase., readableErrorCode: PurchaseNotAllowedError, readable_error_code: PurchaseNotAllowedError, underlyingErrorMessage: Billing is not available in this device. DebugMessage: Google Play In-app Billing API version is less than 3. ErrorCode: 3.}, null). Error thrown Erro ao tentar obter oferta escolhida pelo usuário..

       at StandardMethodCodec.decodeEnvelope(message_codecs.dart:653)

       at MethodChannel._invokeMethod(platform_channel.dart:315)

       at Purchases.getOfferings(purchases_flutter.dart:194)

       at ...

       at ...

Ensure the following are sorted:

  • The device has Google Play Store
  • Login in to the Play Store with your email
  • The logged email is added to Tester in your Google Play Console
  • Ensure that
    <uses-permission android:name="com.android.vending.BILLING" /> is added to your AndroidManifest.xml file.
  • Check your Subscription to ensure Country is activated in the billing,
Best of luck

Google Play In-app Billing API version is less than 3.

On the same mobile phone, the debug mode is normal and the release mode is normal, but after the bundle is packaged and uploaded to GooglePlay, it is not normal.
I am very confused


Reply