IAP working in StoreKitTest on XCODE but not in TestFlight – shows mapped error "Product not available"

Hey everyone,

I'm currently preparing an older iOS app for App Store release that includes a non-consumable In‑App Purchase using StoreKit 2. Everything works perfectly in the StoreKitTest environment inside Xcode – the product loads, the purchase flow runs, the transaction verifies.

However, when I run the same app through TestFlight, I always get the error:

❌ Product not available - mapped to

Here’s what I’ve already checked:

✅ The product ID is correct and matches what’s in App Store Connect (case-sensitive).

✅ The IAP is created in App Store Connect and includes:

Title

Product ID

Price Tier

Screenshot for review

✅ The App Store "Paid Applications" agreement is active.

✅ The app is using the correct bundle ID.

✅ I'm using Product.products(for: [productID]) from StoreKit 2.

✅ I’ve implemented fallback and retry logic (e.g. reload after delay).

✅ All IAP logic is wrapped in @MainActor and async-safe.

As the App got Rejected on Review, the IAP is also now in the Rejected Status.

Now the IAP shows status: 🟠 "Developer Action Required" And App Review rejected the IAP with the message:

"Your first In‑App Purchase must be submitted together with a new app version."

But if I add the App to the Test again and therefore the IAP, then the app will get Rejected again for App Completeness, IAP does not work...

What am I doing wrong here? :)

Thanks a lot in advance Cheers, Niklas

IAP working in StoreKitTest on XCODE but not in TestFlight – shows mapped error "Product not available"
 
 
Q