Quick diagnosis
Installation issues
Compose version conflict
Cause: Build fails with Compose compiler version mismatch. Solution: Ensure your Compose compiler version is compatible:Runtime issues
Checkout stays in Loading state
Cause:PrimerCheckoutState.Loading never transitions to Ready.
Possible causes:
- Invalid or expired client token
- Network connectivity issues
- Incorrect API key in client session creation
Payment methods not showing
Cause:PrimerPaymentMethods shows an empty list.
Possible causes:
- No payment methods configured in Primer Dashboard
- Client session missing required fields
- Payment methods not enabled for the currency/country
currencyCode and countryCode.
3DS challenge not completing
Cause: Payment gets stuck during 3DS authentication. Solution: Ensure your Activity hasandroid:configChanges="orientation|screenSize" to prevent the WebView from being destroyed during configuration changes.
Compose-specific issues
Recomposition causes re-initialization
Cause: Checkout reinitializes on every recomposition. Solution: UserememberPrimerCheckoutController() which survives recomposition:
State not updating in UI
Cause: UI doesn’t reflect state changes from the SDK. Solution: UsecollectAsStateWithLifecycle():
Validation vs payment errors
Understanding the difference helps with proper error handling:Debugging tips
Log checkout state changes
Log all checkout state changes
Getting help
When contacting Primer support, include:- The
diagnosticsIdfrom anyPrimerCheckoutState.Failure - Your Android API level, Compose version, and SDK version
- Steps to reproduce the issue
See also
Events guide
Event handling patterns