Handle errors in Android SDK

Every error is returned by the SDK is AdaptyError.

Tip

Enable verbose logs before debugging. Most AdaptyErrors wrap an underlying Play Billing, network, or backend error. With verbose logs on (Adapty.logLevel = AdaptyLogLevel.VERBOSE — see Logging), that wrapped error is printed to the console, which usually tells you the actual cause.

Important

If these solutions don’t resolve your issue, see Other issues for steps to take before contacting support to help us assist you more efficiently.

ErrorSolution
UNKNOWNThis error indicates that an unknown or unexpected error occurred.
ITEM_UNAVAILABLEThis error mostly happens at the testing stage. It may mean that the products are absent from production or that the user does not belong to the Testers group in Google Play.
ADAPTY_NOT_INITIALIZEDThe Adapty SDK is not activated.
Most commonly seen when a splash screen or an early UI hook calls Adapty methods before Adapty.activate returns. The symptom is intermittent and may not reproduce on an emulator because real-device timing is different. Wait until Adapty.activate completes before scheduling any other SDK call. See Call order in Android SDK for the full sequence. You also need to properly configure Adapty SDK using the Adapty.activate method.
PROFILE_WAS_CHANGEDThe user profile was changed during the operation.
This happens when a method is called while Adapty.identify is still in flight — the in-flight call lands on a profile that is about to be swapped, and the SDK rejects it. Wait until Adapty.identify completes before scheduling other SDK calls. See Call order in Android SDK.
PRODUCT_NOT_FOUNDThis error indicates that the product requested for purchase is not available in the store.

CURRENT_SUBSCRIPTION_TO_UPDATE

_NOT_FOUND_IN_HISTORY

The original subscription that needs to be replaced is not found in active subscriptions.
BILLING_SERVICE_TIMEOUTThis error indicates that the request has reached the maximum timeout before Google Play can respond. This could be caused, for example, by a delay in the execution of the action requested by the Play Billing Library call.
FEATURE_NOT_SUPPORTEDThe requested feature is not supported by the Play Store on the current device.
BILLING_SERVICE_DISCONNECTEDThis error indicates that the client app’s connection to the Google Play Store service via the BillingClient has been severed.
BILLING_SERVICE_UNAVAILABLEThis error indicates the Google Play Billing service is currently unavailable. In most cases, this means there is a network connection issue anywhere between the client device and Google Play Billing services.
BILLING_UNAVAILABLE

This error indicates a billing issue occurred during the purchase process. Possible reasons include:

1. The Play Store app on the user’s device is missing or outdated.

2. The user is in an unsupported country.

3. The user is part of an enterprise account where the admin has disabled purchases.

4. Google Play couldn’t charge the user’s payment method (e.g., an expired credit card).

5. The user is not logged into the Play Store app.

DEVELOPER_ERRORThis error indicates you’re improperly using an API.
BILLING_ERRORThis error indicates an internal problem with Google Play itself.
ITEM_ALREADY_OWNEDThe product has already been purchased.
ITEM_NOT_OWNEDThis error indicates that the requested action on the item failed since it is not owned by the user.
BILLING_NETWORK_ERRORThis error indicates that there was a problem with the network connection between the device and Play systems.
NO_PRODUCT_IDS_FOUND

This error indicates that none of the products in the paywall is available in the store.

If you are encountering this error, please follow the steps below to resolve it:

  1. Check if all the products have been added to Adapty Dashboard.
  2. Ensure that the Package name of your app matches the one from the Google Play Console.
  3. Verify that the product identifiers from the app stores match those you have added to the Dashboard. Please note that the identifiers should not contain Bundle ID, unless it is already included in the store.
  4. Confirm that the app paid status is Active in your Google tax settings. Ensure that your tax information is up-to-date and your certificates are valid.
  5. Check if a bank account is attached to the app, so it can be eligible for monetization.
  6. Check if the products are available in your region.
  7. Ensure your app is in one of the testing tracks. The Internal testing track is the easiest option since it doesn’t require a review and keeps the app hidden from customers.
NO_PURCHASES_TO_RESTOREDeprecated in Adapty Android SDK 4.0.2: restorePurchases() no longer returns this error. When there is nothing to restore, the method completes successfully with the current profile, so check the access level status in it. In earlier SDK versions, this error indicates that Google Play did not find the purchase to restore.
AUTHENTICATION_ERRORYou need to properly configure Adapty SDK by Adapty.activate method.
BAD_REQUESTBad request.
Ensure you’ve completed all the steps required to integrate with Google Play.
SERVER_ERRORServer error.
REQUEST_FAILEDThis error indicates a network issue that cannot be properly defined.
DECODING_FAILEDWe could not decode the response.
Review your code and ensure that you the parameters you send are valid. For example, this error can indicate that you’re using an invalid API key.
ANALYTICS_DISABLEDWe can’t handle analytics events, since you’ve opted it out.
WRONG_PARAMETER

This error indicates that some of your parameters are not correct: blank when it cannot be blank or wrong type, etc.

The SDK also returns this error when it can’t read a local fallback file — most often because the file version doesn’t match the SDK version. Download a new file in the dashboard.

LOGGING_OUT_UNIDENTIFIED_USERAdapty.logout() was called for a user who was never identified. Call it only after Adapty.identify.

Flow rendering errors

Adapty SDK 4.0 and later reports these errors through onError in your AdaptyFlowEventListener rather than returning them from a method call. See Handle events in Android SDK.

ErrorSolution
WRONG_ASSET_TYPEAn image element in the flow points to an asset that is a color or gradient fill, so the SDK renders a placeholder in its place. Assign an image asset to that element in the Flow Builder.
JS_EXCEPTIONThe flow’s JavaScript threw an exception. Read the exception text in the error message.
NAVIGATOR_NOT_FOUNDAn open-screen action names a navigator that is absent from the flow’s view configuration, and the flow has no default navigator to fall back to. Review the action’s target in the Flow Builder.
INVALID_ACTION_URLAn open-URL action refers to a string ID that does not resolve to a URL. Set a valid URL for that action in the Flow Builder.

Other issues

If you haven’t found a solution yet, the next steps can be:

  • Upgrading the SDK to the latest version: We always recommend upgrading to the latest SDK versions since they are more stable and include fixes for known issues.
  • Contact the support team or get help from your fellow developers in the support forum.
  • Contact the support team via support@adapty.io or via the chat: If you are not ready to upgrade the SDK or it didn’t help, contact our support team. Note that your issue will be resolved faster if you enable verbose logging and share logs with the team. You can also attach relevant code snippets.