Quick answer: Unity IAP receipt validation rejecting App Store restored purchases? Restored receipts come without transaction IDs - validate against the bundle signature, not the per-transaction one.
Player restores their IAP on a new device. Validation rejects the receipt; they lose their entitlement.
Validate bundle-level
Receipt is wrapped in a payload signed at the bundle level. Verify the bundle signature; don't depend on per-transaction signatures that restores don't include.
Trust Apple's verifyReceipt
Server-side verification via verifyReceipt is the source of truth. Restore-vs-new isn't a meaningful distinction at that layer.
Test the restore path
Sandbox account on a fresh device. Restore Purchases. Verify your validation returns success without re-asking for purchase.
“Restored purchases are a real lifecycle path. Validation that assumes one-shot purchases fails.”
Document restore expectations in your support workflow. 'Tap Restore Purchases in the settings menu' covers 90% of inbound entitlement tickets.