# Guideline 2.1 - App Completeness: IAP Products Not Found in Binary

**Guideline:** 2.1 · **Store:** Apple App Store · **Severity:** low · **Fix difficulty:** medium · **Typical turnaround:** 2-8 hours

Canonical URL: https://appstorereject.com/rejections/apple/2/guideline-21-app-completeness-iap-products-not-found-in-binary

## Description

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.

## Common variations

- IAP products could not be found in the submitted binary
- In-app purchase products not accessible in the app
- StoreKit products configured but not implemented
- Product identifiers don't match between Connect and binary

## Example rejection email

```
In-app purchase products associated with the app version submitted for review, such as Powerpack and PowerpackFamily, could not be found in the submitted binary.

If you do not want to make these in-app purchase products available at this time, remove the unused in-app purchase products you've created from App Store Connect.

If you want to make these in-app purchase products available at this time:
- Ensure the products are active and that you have implemented StoreKit in your app. If you have not, submit a new binary for review with these changes.
- Resubmit the in-app purchase products if they are in the Developer Action Required State. You must edit the detail information or cancel the request to change the detail information before the in-app purchase products can be reviewed again.
```

## Resolution steps

## Quick Assessment

Check App Store Connect for any IAP products associated with your app version. Then verify each product ID exists and is loadable in your actual app code via StoreKit.

## The Fix

1. **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.

2. **Implement StoreKit** 
Ensure your app actually calls `Product.products(for:)` (StoreKit 2) or `SKProductsRequest` (StoreKit 1) to load the products.

3. **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.

4. **Test in sandbox**
Verify products load and can be purchased in the sandbox environment before submitting.

5. **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:
1. **Remove from App Store Connect**
Delete or deactivate the unused IAP products before resubmitting.

2. **Clean up product references**
Remove any UI or code references to products you're not offering.

## Prevention

- Keep IAP products in sync between App Store Connect and your codebase
- Test product loading in sandbox before every submission
- Don't create IAP products in Connect until the StoreKit code is ready
- Use a shared constants file for product IDs to prevent mismatches

## Before / after examples

**Before:** App Store Connect has 'com.app.powerpack' and 'com.app.powerpackfamily' products, but the app code references 'com.app.premium' and 'com.app.premiumfamily'
**After:** Product IDs in code updated to match App Store Connect exactly: 'com.app.powerpack' and 'com.app.powerpackfamily', verified loading in sandbox
**Why it works:** Product identifiers must match exactly between App Store Connect and your StoreKit implementation

## Common questions

**How long does this typically take to fix?**

Typical turnaround is 2-8 hours (difficulty: medium). After resubmission, most re-reviews complete within 24-48 hours.

---
*Machine-readable source: https://api.appstorereject.com/api/rejections/detail?slug=guideline-21-app-completeness-iap-products-not-found-in-binary*