VoidhashDocs
DevelopersHelp centerGuidesAPI reference
Dashboard
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

SDK error codes

Find which Voidhash SDK and area an error code comes from, and where to read more.

Every Voidhash error carries a stable code; branch on the code, never on the message. Codes in UPPER_SNAKE_CASE and Voidhash…Error names come from the client SDKs, listed here by area. Lower-case codes such as product_not_found come from the API and the server libraries; see API error codes.

How a code reaches you differs by SDK:

SDKCarries the code in
SwiftA thrown VoidhashStoreError or VoidhashApiError.
KotlinA thrown VoidhashException.
React Nativeerror.code on a returned Result; it never throws. A cancelled or pending purchase is an Ok status.
WebA rejected VoidhashError subclass whose message starts with the code.

Configuration

CodePlatformsMeaning
CONFIGURATION_MISSINGKotlinThe client is disabled, or the project configuration hasn't loaded yet.
CLIENT_SHUT_DOWNKotlinThe client was shut down or replaced by a later configure.
STOREKIT_NOT_INITIALIZEDSwiftA store call ran on a disabled or shut-down client.
METHOD_NOT_AVAILABLE_PLATFORMSwiftThe method isn't available here, such as store sheets in development mode.
READ_ONLY_PURCHASE_NOT_ALLOWEDSwift, Kotlin, React NativeThe SDK is in observer mode, so it can't start a purchase.
PRODUCT_NOT_FOUNDKotlinIn development mode, the product has no development data.
FAILED_TO_INITIALIZE_VOIDHASH_CLIENTReact NativeThe binary lacks the native modules, or the native client didn't start.
VOIDHASH_CLIENT_NOT_INITIALIZEDReact NativeA read ran before initialization finished, or it failed.
FAILED_TO_END_VOIDHASH_CLIENTReact Nativeend() failed.
INVALID_ARGUMENTReact NativeIn development builds, a baseUrl, ingestUrl or analyticsConsent option is invalid.
UNKNOWNReact NativeA hook hit an unexpected failure.
VoidhashConfigurationErrorWebAn option is invalid, such as a missing publishableKey or a secret key.
VoidhashNotInitializedErrorWebA method ran before initialize().
VoidhashDestroyedErrorWebThe client was destroyed, for example by an unmounted provider.
FAILED_TO_INITIALIZEWebinitialize() couldn't load saved state, for example with blocked storage.
FAILED_TO_SET_ANALYTICS_CONSENTReact Native, WebReact Native: the consent applies for this run but wasn't stored. Web: the value is invalid.

Details: Swift, Kotlin, React Native and Web.

Products and purchases

Purchase, restore and transaction-report codes are listed in Purchase error codes. USER_CANCELLED and PURCHASE_PENDING are expected outcomes, not failures.

Paywalls and flows

presentFlow returns these in a failed result instead of throwing.

CodePlatformsMeaning
FLOW_NOT_ASSIGNEDSwift, Kotlin, React NativeNothing is assigned to the location, it's missing or archived, or the build needs a newer SDK.
FLOW_UNAVAILABLESwift, Kotlin, React NativeThe device never loaded this location and can't reach Voidhash, or the download failed.
FLOW_RENDERER_MISSINGSwift, Kotlin, React NativeThe app was built without the paywall renderer.
FLOW_UNSUPPORTED_PACKAGESwift, Kotlin, React NativeThe paywall was built in a format this SDK can't read.
FLOW_PRESENTATION_FAILEDSwift, Kotlin, React NativeThere was no screen to present from, or the paywall couldn't be drawn.
FLOW_DISABLEDSwift, Kotlin, React NativeThe client is disabled or shut down.
FAILED_TO_GET_PAYWALL_FOR_LOCATIONReact NativegetPaywallForLocation() failed.
PAYWALL_UNAVAILABLEReact NativegetPaywallForLocation() found nothing cached and Voidhash is unreachable.

Details: Swift, Kotlin and React Native.

Identity

CodePlatformsMeaning
INVALID_ARGUMENTSwift, Kotlin, React NativeA user ID was blank, over 255 characters, contained NUL or started with vh_anon_; or an attribute value was nested. Nothing changed.
IDENTITY_UNAVAILABLESwiftA refresh ran before the device's first unlock, or on a shut-down client. Nothing was sent.
VoidhashInvalidArgumentErrorWebidentify() got a blank or anonymous ID, or track() a blank event name.
FAILED_TO_IDENTIFYReact Native, WebReact Native: Voidhash refused the sign-in for good; the previous identity is kept. Web: the identity couldn't be switched on the device.
FAILED_TO_SIGN_OUT, FAILED_TO_RESETReact Native, WebSigning out or resetting failed.
FAILED_TO_GET_CURRENT_PERSONReact NativeThe person couldn't be read.
FAILED_TO_GET_DISTINCT_IDReact NativeThe distinct ID couldn't be read.
FAILED_TO_SET_PERSON_ATTRIBUTES, FAILED_TO_SET_PERSON_ATTRIBUTES_SYNCReact Native, WebAttributes weren't saved.
FAILED_TO_SET_AD_DATA_SHARINGWebsetAdDataSharing() couldn't record the choice.
FAILED_TO_RESET_PERSON_CACHEReact NativeThe cached person couldn't be cleared.
FAILED_TO_GET_FEATURE_FLAGSReact Native, WebFlags couldn't be evaluated.
FAILED_TO_REFRESH_FEATURE_FLAGSWebrefreshFeatureFlags() failed.
VoidhashFeatureFlagsErrorWebThe feature flag hook couldn't load flags.
FAILED_TO_TRACKWebtrack() or page() couldn't queue the event.
FAILED_TO_FLUSH_ANALYTICSReact Native, WebEvents weren't sent now.
FAILED_TO_FLUSH_IDENTITYWebflushAnalytics() couldn't send queued identity writes.

Details: Swift, Kotlin, React Native and Web.

Network and API

Most calls answer from the cache or queue when Voidhash is unreachable, so these are rare.

CodePlatformsMeaning
AUTHENTICATION_FAILEDSwift, Kotlin, React NativeVoidhash answered 401 or 403: the publishable key was rejected. Reads return it once, when nothing is cached.
INVALID_REQUESTSwift, KotlinSwift: Voidhash answered 400. Kotlin: no request could be built.
NOT_FOUNDSwiftVoidhash answered 404, for example an unknown sign-in target.
RATE_LIMIT_EXCEEDEDSwift, KotlinVoidhash answered 429.
API_ERRORSwift, KotlinAny other error status. Both add the status and the error's tag.
NETWORK_ERRORSwift, KotlinThe request never reached Voidhash.
INVALID_RESPONSE, MALFORMED_RESPONSESwift, KotlinVoidhash's answer couldn't be read.

Details: Swift, Kotlin, React Native and Web.

Diagnostics

Diagnostics report problems the SDK handles itself through the onDiagnostic option; they never throw.

CodePlatformsMeaning
AUTHENTICATION_FAILEDSwift, Kotlin, React Native, WebThe publishable key was rejected; requests pause and nothing reaches Voidhash.
CIRCUIT_OPEN (Web: CIRCUIT_OPENED)Swift, Kotlin, React Native, WebVoidhash failed 5 times in a row; requests pause and the cache is served.
TRANSACTION_REJECTEDSwift, Kotlin, React NativeVoidhash refused a purchase, for example because the store isn't set up for this bundle ID or package name.
PERSON_WRITE_REJECTED (Web: IDENTITY_WRITE_REFUSED)Swift, Kotlin, React Native, WebA queued identify or attribute update was refused, or the anonymous ID belongs to another account.
ANALYTICS_EVENT_DROPPEDSwift, Kotlin, React Native, WebEvents were dropped, for example at the queue limit.
ANALYTICS_CONSENT_DENIEDSwift, Kotlin, React Native, WebAnalytics weren't collected because consent isn't granted.

Full lists: Swift, Kotlin, React Native and Web.

Next steps

  • API error codes: the API, webhook verification and event capture.
  • Troubleshooting: causes by symptom.
  • FAQ

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

PreviousRecover from incidentsNextPurchase error codes

On this page

ConfigurationProducts and purchasesPaywalls and flowsIdentityNetwork and APIDiagnosticsNext steps