⁠State of Paywalls 2026: see what works for 78,000+ paywalls

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.

Data will be sent securely and remain private

iOS receipt status

Fill in the form above to see the result.

Apple receipt validation status codes

CodeDescription
21000The request to the App Store was not made using the HTTP POST request method.
21001This status code is no longer sent by the App Store.
21002The data in the receipt-data property was malformed or the service experienced a temporary issue.
21003The receipt could not be authenticated.
21004The shared secret you provided does not match the shared secret on file for your account.
21005The receipt server was temporarily unable to provide the receipt.
21006This 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.
21007This receipt is from the test environment, but it was sent to the production environment for verification.
21008This receipt is from the production environment, but it was sent to the test environment for verification.
21009Internal data access error.
21010The user account cannot be found or has been deleted.
21100 – 21199Internal 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.