Guideline 2.1
Guideline 2.1 - App Completeness: IAP Products Not Found in Binary
Our Take
Apple is rejecting your app because in-app purchase products configured in App Store Connect are referenced in the submission but cannot be found or accessed in the actual app binary.
This means Apple's reviewers tried to verify your IAP products and they either weren't implemented in the code, weren't properly configured with StoreKit, or the product IDs don't match between App Store Connect and your app.
This commonly happens when IAP products are created in App Store Connect but the StoreKit implementation is missing, broken, or uses different product identifiers. If you don't want to offer these products yet, you can remove them from App Store Connect before resubmitting.
Resolution Guide
Verify product IDs match
The product identifiers in App Store Connect must exactly match what your StoreKit code requests. Check for typos, case sensitivity, and prefix mismatches.
Implement StoreKit
Ensure your app actually calls Product.products(for:) (StoreKit 2) or SKProductsRequest (StoreKit 1) to load the products.
Check product status
In App Store Connect, each IAP product must be in "Ready to Submit" or "Waiting for Review" status. Products in "Developer Action Required" need to be edited and resubmitted.
Test in sandbox
Verify products load and can be purchased in the sandbox environment before submitting.
Submit a new binary
If you needed to add or fix StoreKit code, you must submit a new build.
If you DON'T want to offer the products yet:
Remove from App Store Connect
Delete or deactivate the unused IAP products before resubmitting.
Clean up product references
Remove any UI or code references to products you're not offering.
Prevention
Example Rejection Email
Before & After
App Store Connect has 'com.app.powerpack' and 'com.app.powerpackfamily' products, but the app code references 'com.app.premium' and 'com.app.premiumfamily'
Product IDs in code updated to match App Store Connect exactly: 'com.app.powerpack' and 'com.app.powerpackfamily', verified loading in sandbox
What changed: Product identifiers must match exactly between App Store Connect and your StoreKit implementation
Community Solutions · 0
Sign in to share your solution.
More Guideline 2 (Performance) rejections
- Guideline 2.1 - App Completeness: App Crashes During Review
- Guideline 2.1 - App Completeness: App Requires External Hardware Not Provided for Review
- Guideline 2.1 - App Completeness: Crashes on Launch
- Guideline 2.1 - App Completeness: Demo Account Not Working
- Guideline 2.1 - App Completeness: Missing App Icon
- Guideline 2.1 - App Completeness: Missing Launch Screen