Code
23
SDK error · code 23
What it means
configurationError (code 23) means your setup does not line up: none of the offering's products could be fetched from the store, an offering has no products, or the backend answered 7000 (invalid platform). Most often the product IDs in your offering do not match App Store Connect or Play Console. Compare the IDs, the API key's platform and the offering, then reload.
Code
23
iOS (Swift)
ErrorCode.configuration
Android (Kotlin)
PurchasesErrorCode.Configuration
Causes
| Backend code | Meaning |
|---|---|
| 7000 | Invalid platform: the request does not apply to this store or app. |
| 7255 | Could not create alias. |
| 8077 | Cannot alias to an authenticated user (iOS mapping). |
| 7230 | Play Store invalid package name (Android mapping). |
Fix
The product ID in the offering must equal the store's product ID exactly. A Google subscription matches its subscription ID or <subscription id>:<base plan id>. Check that each product is approved and ready to sell.
Use the iOS app's public key in the iOS build, and the Android app's key in the Android build.
Mark an offering as current, and add this app's products to its packages. See Why are my offerings empty?
If only the iOS 18.4 simulator fails, test on a real device or another iOS version.
The error text says which of the cases above applies. Turn on debug logs to see it in full.
In your app
// Swift
do {
let result = try await Purchases.shared.purchase(package: package)
} catch let error as ErrorCode where error == .configurationError {
// handle configuration error
}
// Kotlin
if (error.code == PurchasesErrorCode.ConfigurationError) { /* ... */ } On RevenueDot: RevenueDot answers HTTP 400 with code 7000 when a secret-key receipt post has no X-Platform header, when a store action does not exist for the app's store, when a hosted checkout is asked for a package that has no web product, and when purchases-js asks for its own Web Billing checkout with an rcb_ key, which RevenueDot does not have. Offerings point at products by their store identifier, so a mismatch there leaves the SDK with no products. See common problems.
FAQ
None of the products in your offerings could be fetched from the store, or the offering has no products for this app. Compare the product IDs with the store, check the API key's platform, and mark an offering as current.
Backend code 7000 means invalid platform or bad request: the request does not apply to the app's store. Both SDKs report it as configurationError (code 23).
In React Native, compare error.code with PURCHASES_ERROR_CODE.CONFIGURATION_ERROR. In Flutter, convert the PlatformException with PurchasesErrorHelper.getErrorCode(e) and compare the result with PurchasesErrorCode.configurationError.
Get started
RevenueDot answers the same SDK calls with the same error codes. Start free on RevenueDot Cloud, free up to $10,000 a month in tracked revenue.
Already have an account? Sign in · Prefer your own servers? Self-host free