Qonversion SDK Errors Details

SDK API Interaction Errors

Here you can find the descriptions of errors that may be returned from SDK while interacting with the Qonversion backend. These descriptions are intended to help you troubleshoot any issues quicker.

🚧

Make sure to use a device (not a simulator) when testing iOS purchases.

iOS enum (Int value)

Android enum

Description

QNAPIErrorFailedParseResponse (1)

ParseResponseFailed

The response has wrong format

QNAPIErrorInternalError (3)

BackendError

There was an internal backend error

QNAPIErrorUnknown (4)

UnknownError

An unexpected error occurred that can't be classified

QNAPIErrorInvalidCredentials (5)

InvalidCredentials

Access token is invalid or not set

QNAPIErrorInvalidClientUID (6)

InvalidClientUid

Client Uid is invalid or not set

QNAPIErrorUnknownClientPlatform (7)

UnknownClientPlatform

The current platform is not supported

QNAPIErrorFraudPurchase (8)

FraudPurchase

Fraud purchase was detected

QNAPIErrorFeatureNotSupported (9)

FeatureNotSupported

The requested feature is not supported

QNAPIErrorAppleStoreError (10)

PlayStoreError

There was an issue with the Play Store / Apple Store service. For example, Store is unavailable or returns an incorrect response or unexpected error without details.

QNAPIErrorPurchaseInvalid (11)

PurchaseInvalid

Failure of purchase. For example, a purchase with such purchaseToken can't be found. Possible reason: provided store key exists, but related to another project.

QNAPIErrorProjectConfigError (12)

ProjectConfigError

The project is not configured or configured incorrectly in the Qonversion's settings dashboard.
Check the details here

QNAPIErrorInvalidStoreCredentials (13)

InvalidStoreCredentials

This account does not have access to the requested application. Please check the provided Store keys.

Check the details here

QNAPIErrorReceiptValidation (14)

Provided receipt can't be validated. Check the details here

iOS Errors Codes

Qonversion SDK provides error codes that help locate and eliminate possible issues. Most Qonversion errors for iOS correspond to StoreKit SKError objects. You can check the errors described in the table below in QNErrors.h file.

Error enum value (Error Int value)

Description

QNErrorUnknown (0)

Unknown error occurred

QNErrorCancelled (1)

Apple StoreKit
SKErrorPaymentCancelled
error analog.
The user cancelled the purchase/restore request, etc.

QNErrorProductNotFound (2)

This error means that for some reason the product is not found.
There are a few reasons you can receive this error.
See the details for Product not found error here.

QNErrorClientInvalid (3)

Apple StoreKit SKErrorClientInvalid error analog.
Client is not allowed to issue the request, etc.

QNErrorPaymentInvalid (4)

Apple StoreKit SKErrorPaymentInvalid error analog.
Purchase identifier was invalid, etc.

QNErrorPaymentNotAllowed (5)

Apple StoreKit SKErrorPaymentNotAllowed error analog.
This device is not allowed to make the payment.

QNErrorStoreFailed (6)

Apple Store didn't process request.

QNErrorStoreProductNotAvailable (7)

Apple StoreKit SKErrorStoreProductNotAvailable
error analog.
Product is not available in the current storefront.

QNErrorCloudServicePermissionDenied (8)

Apple StoreKit SKErrorCloudServicePermissionDenied error analog.

Available from iOS 9.3, TV OS 9.3, Watch OS 6.2, Mac OS 11.0

The user has not allowed access to Cloud service information.

QNErrorCloudServiceNetworkConnection-
Failed (9)

Apple StoreKit SKErrorCloudServiceNetworkConnection-
Failed error analog.

Available from iOS 9.3, TV OS 9.3, Watch OS 6.2, Mac OS 11.0

The device could not connect to the network.

QNErrorCloudServiceRevoked (10)

Apple StoreKit SKErrorCloudServiceRevoked error analog.

Available from iOS 10.3, TV OS 10.3, Watch OS 6.2, Mac OS 11.0

User has revoked permission to use this cloud service.

QNErrorPrivacyAcknowledgementRequired (11)

Apple StoreKit SKErrorPrivacyAcknowledgementRequired error analog.

Available from iOS 12.2, TV OS 12.2, Watch OS 6.2, Mac OS 10.14.4

The user needs to acknowledge Apple's privacy.

QNErrorUnauthorizedRequestData (12)

Apple StoreKit SKErrorUnauthorizedRequestData error analog.

Available from iOS 12.2, Watch OS 6.2, Mac OS 10.14.4

The app is attempting to use SKPayment's requestData property, but does not have the appropriate entitlement.

QNErrorIncorrectSharedSecret (13)

Provided shared secret is incorrect, validation unavailable.
See more info here

QNErrorConnectionFailed (14)

Failed to connect to Qonversion back-end.

QNErrorInternetConnectionFailed (15)

Other URL Session errors of NSURLErrorDomain enum.

QNErrorDataFailed (16)

Network data error.

QNErrorInternalError (17)

Internal error occurred.

QNErrorStorePaymentDeferred (18)

The payment transaction is in the queue, but its final status is pending external action.

Android Errors Codes

You can use both physical devices and emulators to test Android in-app purchases.
Qonversion SDK provides error codes that help locate and eliminate possible issues. The table below contains the descriptions of the possible errors.

📘

Error additional message

The field QonversionError.additionalMessage contains the detailed error information. If you see the following message: It is a proxy of the Google BillingClient error, please check Google's documentation on BillingClient.

Title

Description

UnknownError

Any error with no specific details available. These errors may include undefined Throwable errors and Google Billing Client errors.

PlayStoreError

There was an issue with Play Store service.

This error appears when the Google Billing client timed out, disconnected or unavailable.

BillingUnavailable

The Billing service is unavailable on the device. Please see the details here.

PurchaseInvalid

Failure to purchase. Please make sure that you are using the google account where purchases are allowed and the application was correctly signed and properly set up for billing.
Please have a look at the following guide on setting up the Google Play Store Billing.

CanceledPurchase

The user pressed back or canceled a dialog for purchase.

ProductNotOwned

Failure to consume purchase since the item is not owned.

ProductAlreadyOwned

Failure to purchase since the item is already owned.

FeatureNotSupported

The requested feature is not supported by Play Store on the current device.

ProductUnavailable

The requested product is not available for purchase. Please see the details here.

NetworkConnectionFailed

There was a network issue. Please make sure that the Internet connection is available on the device.

ParseResponseFailed

A problem occurred when serializing or deserializing data.

BackendError

There was a backend error. Please see QonversionError.additionalMessage for detailed error information.

ProductNotFound

Failure to purchase since the Qonversion product was not found. Please see the details here.

OfferingsNotFound

Offerings were not found.
Make sure you have created and configured the offerings on the Qonversion Product Center dashboard.

LaunchError

There was an error on launching Qonversion SDK.

SkuDetailsError

Failure to retrieve SkuDetails for the in-app product ID. Please make sure that the products were configured correctly in Google Play Console. Please see the details here.

Here is an example how you can get the errors details including additional error information, error code and description:

Qonversion.products(object : QonversionProductsCallback {
    override fun onSuccess(products: Map<String, QProduct>) {
        // handle available products here
    }
    override fun onError(error: QonversionError) {
        // Additional error information (if possible)
        val additionalErrorMessage = error.additionalMessage 
        // Error enum code
        val errorCode = error.code 
        // Error enum code description
        val errorDescription = error.description 
        // Handle the error 
    }
})
Qonversion.products(new QonversionProductsCallback() {
    @Override
    public void onSuccess(@NotNull Map<String, QProduct> productsList) {
        // handle available products here
    }

    @Override
    public void onError(@NotNull QonversionError error) {
        // Additional error information (if possible)
        String additionalErrorMessage = error.getAdditionalMessage();
        // Error enum code
        QonversionErrorCode errorCode = error.getCode();   
        // Error enum code description
        String errorDescription = error.getDescription();             
        // Handle the error
    }
});

Each Qonversion callback has the fun onError(error: QonversionError) where error information is available.


Did this page help you?