VoidhashDocs
DevelopersHelp centerGuidesAPI reference
Dashboard
Get started
Introduction
Quickstart
How Voidhash works
Glossary
Versions and releases
Concepts
Teams, projects and environments
API keys
Products and perks
Offers
Subscription lifecycle
People and identity
Groups
Events
Features
Paywalls in your app
Feature flags and A/B tests
Paywall components
Push notifications
Ad attribution in your app
Client SDKs
React Native
Swift
Kotlin
Web
Your backend
Node.js
PHP
Go
Rust
Other languages
Payment sources
Forward store notifications
Developer tools
CLI
MCP server
Query analytics with VoidQL
Kotlin SDK
Kotlin quickstart
Display a paywall
Make and restore purchases
Check access
Identify users
Evaluate feature flags
Capture analytics
Groups
Track screens
Development mode
Kotlin SDK reference
Errors
Diagnostic codes
Troubleshooting

Diagnostic codes

Every diagnostic the Kotlin SDK reports for failures it handles itself, and what each means.

Diagnostics report failures the SDK handled itself. They never throw. Receive them with the onDiagnostic option; see Errors for the handler.

CodeMeaning
AUTHENTICATION_FAILEDVoidhash itself rejected the publishable key; a 401 or 403 from a proxy or firewall doesn't count. Requests pause and queued data is kept. identify or reset retries the key at once.
AUTHENTICATION_RECOVEREDA retry with the key was accepted. Only an answer from Voidhash itself counts, not a proxy's page sent with 200.
CIRCUIT_OPENVoidhash failed 5 times in a row. Requests are skipped and the cache is served until a retry succeeds.
CIRCUIT_CLOSEDRequests go through again.
SCHEMA_FETCH_FAILEDThe project configuration couldn't be loaded. It's retried.
SCHEMA_DECODE_FAILEDThe project configuration response couldn't be read.
TRANSACTION_SYNC_DEFERREDA purchase is still queued after a failed or unconfirmed delivery. It's retried.
TRANSACTION_REJECTEDVoidhash refused a purchase, for example because Google Play isn't set up for the package name. It's sent again on the next launch, or after 6 hours.
TRANSACTION_NOT_DURABLEA purchase couldn't be stored on the device, or was reported before the device was first unlocked. Delivery is still attempted.
TRANSACTION_OUTBOX_BACKLOGMore than 1,000 purchases await delivery. None was dropped.
PURCHASE_FINISHED_BEFORE_SYNCVoidhash hadn't recorded a purchase 36 hours after payment, so the SDK acknowledged it to stop Google Play's refund. The SDK still delivers it.
PERSON_WRITE_REJECTEDA queued identify or attribute update was refused, or a sign-in couldn't merge an anonymous ID another account owns.
ANALYTICS_SEND_FAILEDEvents weren't delivered. They're retried.
ANALYTICS_EVENT_DROPPEDEvents were dropped at the 1,000-event queue limit (reported at most once a minute), or Voidhash refused one event.
ANALYTICS_CONSENT_DENIEDAn event, screen or attribute wasn't collected because consent isn't granted. Reported once until consent is granted.
ANALYTICS_EVENT_INVALIDAn event had a blank name or no distinct ID.
INSTALL_ATTRIBUTION_DEFERREDGoogle Play or a Meta app couldn't answer about the install yet. A later launch asks again.
INSTALL_ATTRIBUTION_ABANDONEDThe SDK stopped asking: no Google Play, or 10 launches without an answer.
SCREEN_MAPPER_FAILEDYour mapScreen threw, so that screen wasn't captured.
CACHE_READ_FAILEDAn unreadable cache entry was discarded.
CACHE_WRITE_FAILEDA value couldn't be stored. It stays in memory and is stored with the next successful write.
QUEUE_IO_FAILEDA queue file couldn't be read or written.
CONNECTIVITY_OBSERVATION_UNAVAILABLEThe SDK can't observe network changes. Queues are still retried on a timer.
SECONDARY_PROCESS_INERTVoidhash was configured outside the main process and does nothing there. See Create the client.
DEVICE_LOCKED_INERTVoidhash was configured before the device was first unlocked after a restart. The client waits for the unlock. See Create the client.
DEVICE_UNLOCKEDThe device was unlocked after DEVICE_LOCKED_INERT, and the client works from here on.
DEVICE_UNLOCK_NOT_OBSERVEDAfter DEVICE_LOCKED_INERT, the SDK can't watch for the unlock. It starts when an activity next starts on the unlocked device, or when you call Voidhash.configure again.
INTERNAL_ERRORBackground work of the SDK stopped on an unexpected exception. It doesn't reach your app, and the SDK carries on.
DIAGNOSTICS_DROPPEDYour handler fell more than 1,000 reports behind; the oldest were dropped.

Next steps

  • Errors the SDK throws.
  • Troubleshooting by symptom.
  • Error codes across platforms.

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

PreviousErrorsNextTroubleshooting

On this page

Next steps