I'm implementing the External Purchase API in my iOS app for EU DMA compliance, but ExternalPurchase.canPresent always returns false despite having completed all configuration steps.
Configuration:
- Alternative Terms Addendum for Apps in the EU: Signed on January 3, 2026
- Entitlement: com.apple.developer.storekit.external-purchase.enabled (enabled in Xcode)
- Provisioning profile: Regenerated with new capability
- Info.plist: SKExternalPurchase array with all 27 EU country codes
- Test device: Physical iPhone, Belgium App Store, iOS 18.2
Code: guard await ExternalPurchase.canPresent else { print("Cannot present - canPresent is false") return }
Debug output shows canPresent is consistently false.
Questions:
- Is there an activation delay after signing the Alternative Terms Addendum?
- Does the API only work in TestFlight/Production builds (not development)?
- Is additional configuration required beyond entitlement + Info.plist + addendum?
Any guidance would be appreciated.