Apple receipt checker
An easy tool for debugging in-app subscriptions. Paste a Base64 receipt and the app-specific shared secret into the fields to get the JSON receipt data.
iOS receipt status
Fill in the form above to see the result.
Apple receipt validation status codes
| Code | Description |
|---|---|
| 21000 | The request to the App Store was not made using the HTTP POST request method. |
| 21001 | This status code is no longer sent by the App Store. |
| 21002 | The data in the receipt-data property was malformed or the service experienced a temporary issue. |
| 21003 | The receipt could not be authenticated. |
| 21004 | The shared secret you provided does not match the shared secret on file for your account. |
| 21005 | The receipt server was temporarily unable to provide the receipt. |
| 21006 | This receipt is valid but the subscription has expired. When this status code is returned to your server, the receipt data is also decoded and returned as part of the response. Only returned for iOS 6-style transaction receipts for auto-renewable subscriptions. |
| 21007 | This receipt is from the test environment, but it was sent to the production environment for verification. |
| 21008 | This receipt is from the production environment, but it was sent to the test environment for verification. |
| 21009 | Internal data access error. |
| 21010 | The user account cannot be found or has been deleted. |
| 21100 – 21199 | Internal data access errors. |
FAQ
Frequently asked questions
The Apple receipt checker shows what Apple returns for an in-app purchase or subscription receipt: the status code and the decoded receipt data. Developers use it to check whether a receipt is valid and to troubleshoot purchase and subscription issues.
Yes, it’s absolutely free.
Paste the Base64 receipt from the transaction and the app-specific shared secret into the checker’s fields, and you’ll get the JSON receipt data.
We do not store any input or output information that you use on the Receipt Checker page.
Your data goes to Adapty’s proxy server, which forwards it to Apple and returns Apple’s response. We don’t store any of it.
Apple pays developers approximately 33 days after each fiscal month closes. Its fiscal year follows a 4-4-5 week pattern, so payment dates don’t align with regular months. You can find the complete schedule of Apple payment dates on our dedicated calendar page.
Apple has deprecated the verifyReceipt endpoint. It still answers requests, so this checker works for now, but new code shouldn’t rely on it. Apple recommends the App Store Server API instead: Get Transaction Info and Get Transaction History return Apple-signed transactions in JWS format. In the app, StoreKit 2 gives you signed transactions, and App Store Server Notifications V2 report subscription changes to your server. Adapty validates purchases through these APIs on its servers.



