Purchase error codes
Find which Voidhash SDK a product, purchase, restore or transaction-report error code comes from.
These codes come from buying, restoring, syncing and reporting purchases in the client SDKs. Codes from other areas are in SDK error codes. The Web SDK doesn't sell products; Stripe reports checkout errors.
| Code | Platforms | Meaning |
|---|---|---|
USER_CANCELLED | Swift, Kotlin | The person closed the store sheet. |
PURCHASE_PENDING | Swift, Kotlin | The payment awaits approval, such as Ask to Buy. |
FAILED_TO_GET_PRODUCTS | Swift, Kotlin, React Native | The store returned no product details, for example offline. |
INVALID_PRODUCT_ID | Swift | The App Store didn't return the product, or no product has that slug. |
SKU_NOT_FOUND | Kotlin | Google Play doesn't sell the product, or its details weren't loaded. |
OFFER_UNAVAILABLE | Swift, Kotlin, React Native | The store doesn't offer this offerId to the person, or no mapping lists it. Nothing was bought. |
PURCHASE_FAILED | Swift, Kotlin | The store failed the purchase, or a Google Play subscription has no base plan offer. |
FAILED_TO_PURCHASE | React Native | The purchase failed; nothing was bought. The native code is in the message. |
PURCHASE_UNKNOWN_RESULT | Swift, Kotlin | The store returned a purchase result the SDK doesn't know. |
PURCHASE_IN_PROGRESS | Kotlin | Another Google Play purchase sheet is already open. |
PURCHASE_EMPTY | Kotlin | Google Play reported success but returned no purchase. |
TRANSACTION_VERIFICATION_FAILED | Swift | StoreKit couldn't verify the transaction, or Voidhash rejected it. |
TRANSACTION_NOT_FOUND | Swift | Voidhash accepted the transaction, but the SDK no longer held it to finish with StoreKit. |
WINDOW_SCENE_NOT_FOUND | Swift | No active window scene to show the App Store sheet from. |
PAYWALL_PRESENTER_NOT_AVAILABLE | Swift | A development-mode purchase ran without UIKit, such as on macOS. |
BILLING_ERROR | Kotlin | Play Billing failed while buying, acknowledging or consuming. |
GOOGLE_BILLING_NOT_INITIALIZED | Kotlin | Google Play services are missing, or Play Billing setup didn't finish. |
CURRENT_ACTIVITY_NULL | Kotlin | No activity was available to launch the sheet from. |
CONNECTION_ENDED | Kotlin | The billing connection closed during the purchase. |
FAILED_TO_RESTORE_PURCHASES | Swift, React Native | The store couldn't be reached, or a receipt isn't confirmed yet. |
BILLING_CONNECTION_FAILED | Kotlin | Play Billing didn't connect: Google Play services are missing or updating. |
STORE_UNAVAILABLE | Kotlin | Google Play couldn't list owned purchases. |
FAILED_TO_SYNC_PURCHASES | React Native | The store couldn't be read. |
RECONCILE_TRANSACTIONS_FAILED | Swift, Kotlin | A restore or sync couldn't deliver a purchase to Voidhash. The SDK keeps it and retries. |
INVALID_TRANSACTION | Swift, Kotlin | reportTransaction got an empty transaction ID or purchase token. |
FAILED_TO_REPORT_TRANSACTION | React Native | reportTransaction got an invalid input. |
TRANSACTION_NOT_DURABLE | Kotlin | The device couldn't store the report, for example with a full disk. |
FAILED_TO_SHOW_MANAGE_SUBSCRIPTIONS | Swift, React Native | The App Store subscription sheet couldn't open. |
FAILED_TO_PRESENT_CODE_REDEMPTION_SHEET | React Native | The offer code sheet couldn't open (iOS only). |
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.