Guideline 2.1
Guideline 2.1 - Performance - App Completeness: In-App Purchase Error on Continue Button
Our Take
This is a technical implementation rejection, not a policy violation. Apple's review system detected an error when testing your in-app purchase flow, specifically when tapping the CTA button during purchase validation.
This is almost certainly an automated detection based on a server-side receipt validation error. The root cause is that your production app's server is trying to validate App Store review team receipts (which come from Apple's sandbox environment) against Apple's production servers, causing validation to fail.
The fix is straightforward: implement receipt validation logic that handles both production and sandbox receipts.
Resolution Guide
Update server-side receipt validation logic
Modify your server to first attempt validation against Apple's production endpoint (https://buy.itunes.apple.com/verifyReceipt). If this returns error code 21007 ("Sandbox receipt used in production"), automatically retry against the sandbox endpoint (https://sandbox.itunes.apple.com/verifyReceipt).
Implement proper error handling
Ensure your app gracefully handles both successful and failed receipt validations without showing raw error messages to users. Display user-friendly messages for validation failures.
Test the dual-environment flow
Test your implementation with both production and sandbox receipts to ensure seamless validation regardless of the environment.
Update client-side purchase flow
Verify that your app's purchase flow properly waits for server validation before completing the transaction and updating the user interface.
Deploy and resubmit
Deploy the server-side changes, ensure they're live, then resubmit your app for review.
Prevention
Example Rejection Email
Before & After
Server only validates receipts against production endpoint, causing validation failures when Apple reviewers (using sandbox receipts) test purchases.
Server first tries production validation, then automatically falls back to sandbox validation if it receives error 21007.
What changed: This handles both real user purchases and Apple review team testing seamlessly.
Purchase flow shows raw validation error messages like 'Receipt validation failed' when reviewers test the app.
Purchase flow shows user-friendly messages and handles validation gracefully regardless of environment.
What changed: Creates a smooth user experience even when validation encounters expected environment mismatches.
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: IAP Products Not Found in Binary
- Guideline 2.1 - App Completeness: Missing App Icon