# In-app purchase receipt validation fails: pre-release checklist

Source: https://releasefailures.com/incidents/in-app-purchase-receipt-validation-fails/
Content version: 1.0.0
Verified on: 2026-10-21
Licence: CC BY 4.0

Definition: Store receipts are rejected after a validation or sandbox endpoint change.
- [ ] PR-01 After any in-app purchase plugin upgrade, make a sandbox purchase on a supported iOS device and confirm the server validates the serverVerificationData it receives. (test class: Integration tests)
- [ ] PR-02 Pin the plugin's platform packages to exact versions and run the purchase integration suite whenever the lockfile changes any of them, including in a patch upgrade. (test class: Integration tests)
- [ ] PR-03 Feed the server validator both a base64 receipt and a JWT transaction payload, and confirm it verifies each one or rejects it with a logged reason instead of throwing a TypeError. (test class: Integration tests)
- [ ] PR-04 Stub the store endpoint that tells subscriptions from other purchases to return an unexpected error, and confirm the consumable purchase is queued for retry and not dropped. (test class: Integration tests)
- [ ] PR-05 Add a contract test on serverVerificationData that fails when the value no longer starts with the MI prefix of a base64 receipt. (test class: Contract tests)
- [ ] PR-06 Keep a contract for the store's purchase-type endpoint that covers the response for a consumable purchase token, and run it on a daily schedule against the store's test environment. (test class: Contract tests)
- [ ] PR-07 Schedule a test consumable purchase on the Android store's test track and alert if it does not appear in the test user's entitlements within the expected processing time. (test class: Synthetic monitoring)
