Your ticket to freedom

App Store receipt checker

Paste your receipt below to decode your receipt or use the RevenueCat API to never check a receipt again.

Add the app-specific shared secret below if the receipt contains subscriptions

Receipt Status

Apple Verify Receipt Response

Status Code

Click to check what does the code mean
21000
21002
21003
21004
21005
21006
21007
21008
21010
21100 - 21199
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Status Codes

  • 21000
    The App Store could not read the JSON object you provided.
  • 21002
    The data in the receipt-data property was malformed or missing.
  • 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 is not currently available.
  • 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. Send it to the test environment instead.
  • 21008
    This receipt is from the production environment, but it was sent to the test environment for verification. Send it to the production environment instead.
  • 21010
    This receipt could not be authorized. Treat this the same as if a purchase was never made.
  • 21100-21199
    Internal data access error.

Frequently Asked Questions

Why should I use this?

Because it's Friday after 5pm, the rest of the company is already heading out for a drink, and you're still at your desk trying to figure out why Darren in QA's purchase didn't work so that you can submit your build to Apple. All you have to work with is this giant base64 blob. You go diving into the man page for 'curl' to figure out how to set a body from a file, because the blob is too big to paste on the command line. Meanwhile, the marketing and content teams are already cruising into the weekend on a land yacht made of IPAs, and here you are, desperate, tired, and looking for a solution. Behold: your ticket to freedom.

How does it work?

The receipt is sent to a proxy that relays it to Apple.

Is it safe?

Receipts are pretty inert. Even with the shared secret, the only thing you can do with a receipt is query its status. You can't cancel or change a purchase with the receipt.

Are you storing any information?

Nope. We proxy, return the response, and that is it. The source code for the proxy server is here.