VoidhashDocs
DevelopersHelp centerGuidesAPI reference
voidhash.comOpen Studio
Guides
Launch
Go-live checklist
Make your first App Store purchase
Make your first Google Play purchase
Troubleshoot
Troubleshooting
Recover from incidents
SDK error codes
Purchase error codes
API error codes
FAQ
Recipes
Win back subscribers
Handle plan changes
Unlock the app after a web purchase
Link accounts across platforms
Handle refunds
Register devices for push
Migrate
Migrate to Voidhash
Migrate from RevenueCat
Migrate from Adapty
Migrate from Superwall
Run in observer mode
Privacy and hosting
Delete personal data
Self-hosting
Operate a self-hosted server
Theme

Purchase error codes

Find which Voidhash SDK a product, purchase, restore, transaction-report or store action error code comes from.

These codes come from buying, restoring, syncing and reporting purchases and from store actions in the client SDKs. Codes from other areas are in SDK error codes. The Web SDK doesn't sell products; Stripe reports checkout errors.

A purchase the person cancels and one waiting for approval, such as Ask to Buy, aren't errors: the purchase call returns them as cancelled and pending results.

CodePlatformsMeaning
FAILED_TO_GET_PRODUCTSSwift, Kotlin, React NativeThe store returned no product details, for example offline.
INVALID_PRODUCT_IDSwiftThe product isn't loaded from the App Store.
SKU_NOT_FOUNDKotlinGoogle Play doesn't sell the product, or its details weren't loaded.
PURCHASE_IN_PROGRESSSwift, Kotlin, React NativeAnother purchase, from your code or a paywall, is still running. Nothing was bought.
INVALID_ARGUMENTSwift, Kotlin, React NativeA quantity other than 1 for anything but an App Store consumable, or a Google Play plan change (replacing) that names no other subscription. Nothing was bought.
OFFER_UNAVAILABLESwift, Kotlin, React NativeThe selected offer isn't one of the product's offers, the store doesn't offer it to the person, or Voidhash couldn't be reached to sign an App Store promotional offer. Nothing was bought; it never falls back to the regular price.
PURCHASE_FAILEDSwift, KotlinThe store failed the purchase, or a Google Play subscription has no base plan offer.
BILLING_ERRORKotlinPlay Billing failed while buying, for a reason the other codes don't name. Its reason is INELIGIBLE_FOR_OFFER or PAYMENT_DECLINED when Google Play said why.
FAILED_TO_PURCHASEReact NativeThe purchase failed; nothing was bought. Its reason is ineligibleForOffer or, on Android, paymentDeclined when the store said why. Otherwise the native code is in the message.
PURCHASE_UNKNOWN_RESULTSwift, KotlinThe store returned a purchase result the SDK doesn't know.
PURCHASE_EMPTYKotlinGoogle Play reported success but returned no purchase.
ITEM_ALREADY_OWNEDKotlinGoogle Play says the person already owns the product. The SDK then delivers and finishes what it owns.
REPLACED_SUBSCRIPTION_NOT_OWNEDKotlin, React NativeThe Google Play account doesn't own the subscription the purchase was to replace. Nothing was bought.
SUBSCRIPTION_REPLACEMENT_REFUSEDKotlin, React NativeGoogle Play refused a subscription replacement before its sheet opened. Nothing was bought.
TRANSACTION_VERIFICATION_FAILEDSwiftStoreKit couldn't verify the transaction, or Voidhash rejected it.
TRANSACTION_NOT_FOUNDSwiftVoidhash accepted the transaction, but the SDK no longer held it to finish with StoreKit.
WINDOW_SCENE_NOT_FOUNDSwiftNo active window scene to show the App Store sheet from.
PAYWALL_PRESENTER_NOT_AVAILABLESwiftA development-mode purchase ran without UIKit, such as on macOS.
GOOGLE_BILLING_NOT_INITIALIZEDKotlinGoogle Play services are missing, or Play Billing setup didn't finish.
CURRENT_ACTIVITY_NULLKotlinNo activity was available to launch the sheet from.
CONNECTION_ENDEDKotlinThe billing connection closed during the purchase.
USER_CANCELLEDSwiftThe person dismissed the App Store sign-in during a restore, or StoreKit reported a cancel by throwing.
FAILED_TO_RESTORE_PURCHASESSwift, React NativeThe store couldn't be reached, or a receipt isn't confirmed yet.
BILLING_CONNECTION_FAILEDKotlinPlay Billing didn't connect: Google Play services are missing or updating.
STORE_UNAVAILABLEKotlinGoogle Play couldn't be reached to buy, or couldn't list owned purchases.
FAILED_TO_SYNC_PURCHASESReact NativeThe store couldn't be read.
RECONCILE_TRANSACTIONS_FAILEDSwift, KotlinA restore or sync couldn't deliver a purchase to Voidhash. The SDK keeps it and retries.
INVALID_TRANSACTIONSwift, KotlinreportTransaction got an empty transaction ID or purchase token.
FAILED_TO_REPORT_TRANSACTIONReact NativereportTransaction got an invalid input.
TRANSACTION_NOT_DURABLEKotlinThe device couldn't store the report, for example with a full disk or before its first unlock.
FAILED_TO_SHOW_MANAGE_SUBSCRIPTIONSSwift, React NativeThe store's subscription management couldn't open.
FAILED_TO_PRESENT_CODE_REDEMPTIONSwift, React NativeThe offer code sheet couldn't open.
REFUND_REQUEST_FAILEDSwiftappStore.beginRefundRequest couldn't open the sheet or send the request.
FAILED_TO_GET_SUBSCRIPTION_STATUS, FAILED_TO_GET_APP_TRANSACTIONSwift, React NativeAn appStore read failed.
UNSUPPORTED_PLATFORMReact NativeAn appStore method on Android, or a googlePlay method on iOS.
FAILED_TO_GET_STOREFRONT, FAILED_TO_CHECK_CAN_MAKE_PAYMENTSReact NativegetStorefront() or canMakePayments() couldn't read the store; its code is in the message.
FAILED_TO_BEGIN_REFUND_REQUEST, FAILED_TO_GET_CURRENT_ENTITLEMENTSReact NativeiOS. The appStore method of that name failed; the App Store's code is in the message.
FAILED_TO_SHOW_IN_APP_MESSAGES, FAILED_TO_QUERY_PURCHASES, FAILED_TO_CHECK_FEATURE_SUPPORTReact NativeAndroid. The googlePlay method of that name failed; Google Play's code is in the message.

Details: Swift, Kotlin and React Native.

Next steps

  • SDK error codes for configuration, paywalls, identity and network.
  • Plan changes and refunds.
  • Troubleshooting: causes by symptom.

Something wrong or missing on this page? Tell us by email or on Discord.

PreviousSDK error codesNextAPI error codes
© 2026 Voidhash s.r.o.
voidhash.comPricingTermsPrivacyDiscord

On this page

Next steps