App name: Hold My Bouquet Bundle ID: com.holdmybouquet.app App Store Connect App ID: 6807080553 In-App Purchase Product ID: com.holdmybouquet.app.page_unlock (Non-Consumable, £3.99)
Our app was rejected on Guideline 2.1 because the reviewer could not complete this in-app purchase. Since the rejection, we have verified and corrected every configuration item we can control, but the purchase still fails identically in sandbox testing on a physical device.
Confirmed correct:
- Paid Applications Agreement: Active
- com.holdmybouquet.app.page_unlock: status "Ready to Submit," Cleared for Sale, pricing and availability set
- Bundle ID matches exactly across Xcode, App Store Connect, and our purchase provider (RevenueCat)
- Product ID matches exactly, no typos or case mismatches
- Sandbox tester account verified and signed in on-device (Settings → Developer → Sandbox Account)
- No local StoreKit Configuration file overriding real data (confirmed "None" in the Xcode scheme)
To rule out our purchase provider entirely, we bypassed it and called Apple's native StoreKit 2 API directly from the app:
let products = try await Product.products(for: ["com.holdmybouquet.app.page_unlock"])
This also returns zero products, with no error — confirming the issue is not a third-party SDK integration problem.
Has anyone seen this before, or can anyone from Apple advise what else to check? We are otherwise ready to resubmit for review.