We are implementing StoreKit External Purchase Link for an iOS app distributed in the European Union and are trying to determine whether we are missing a configuration step or encountering a StoreKit server-side eligibility issue.
The failure is reproducible in a focused native Swift Xcode project that directly calls StoreKit:
let eligible = await ExternalPurchaseCustomLink.isEligible
The sample contains no Flutter code, PayPal SDK, networking, or application business logic.
Configuration we have verified:
- The Account Holder accepted the StoreKit External Purchase Link Entitlement Addendum for EU Apps.
- StoreKit External Purchase Link is enabled and shown as Assigned for the App ID.
- The regenerated Development provisioning profile contains com.apple.developer.storekit.external-purchase-link = true.
- The installed app's signed entitlements contain the same value.
- The application-identifier and team-identifier match the intended App ID and team.
- The compiled Info.plist contains SKExternalPurchaseCustomLinkRegions with all 27 lowercase EU region codes, including "de".
- Germany is available for the app in App Store Connect.
- No local StoreKit Configuration file is enabled.
Test environment:
- Physical iPhone running iOS 26.5.2 (23F84)
- Xcode 26.6 (17F113)
- Real German Media & Purchases Apple Account
- German Sandbox Apple Account
- StoreKit 2 storefront ID 143443, country code DEU
- StoreKit 1 also reports country code DEU
- AppStore.canMakePayments = true
- AppTransaction verifies in the Sandbox environment
- Clean build and reinstall using the regenerated Development profile
Observed result:
ExternalPurchaseCustomLink.isEligible = false
For diagnostic purposes only, after observing false eligibility, we also requested both token types:
- ACQUISITION: StoreKitError.notAvailableInStorefront
- SERVICES: StoreKitError.notAvailableInStorefront
A delayed recheck still reports storefront DEU and isEligible=false. Our production flow does not request tokens unless eligibility is true.
We found the similar thread "Unable to enable eligibility for External Purchase Link APIs" (https://developer.apple.com/forums/thread/808349). In that case, the production Media & Purchases account had an unsupported storefront. In our case, both the real Media & Purchases account and the Sandbox account are German, and StoreKit itself reports DEU.
We also found "External Purchase in Japan" (https://developer.apple.com/forums/thread/822618), where an Apple App Store Commerce Engineer requested a Feedback Assistant report with a sysdiagnose and screen recording for isEligible=false.
Questions:
-
Should ExternalPurchaseCustomLink.isEligible return true in a developer-signed Sandbox build when the entitlement, compiled Info.plist, German storefront, and account conditions are all satisfied, or is TestFlight/App Store approval required?
-
Is there any additional App Store Connect storefront election, entitlement approval, or server-side activation step required beyond the EU addendum, Assigned capability, signed entitlement, and SKExternalPurchaseCustomLinkRegions?
-
If this configuration is complete, could Apple verify whether eligibility has not propagated correctly for the German Development/StoreKit Sandbox environment, and which diagnostics should be included in a Feedback Assistant report?
We have also opened a code-level support request and prepared a minimal native Swift reproduction project. Any guidance from StoreKit engineering would be appreciated.