Errors
A successful response returns HTTP status 200. A failed one returns 400 and an error object:
| Field | Value |
|---|---|
Code | Error number |
Error | Short error message |
Never unlock content when the response is 400 or contains an error object. That check is the whole point of server-side validation.
Watch these codes while testing, and decide for each one whether the user needs to see a message. The tables below group them by where the problem comes from.
Your request
Something about the request itself, or your account, is wrong.
| Code | Error | Description | Solution |
|---|---|---|---|
| 10000 | Invalid Request | Request contains missing or invalid parameters. | Check your request input. |
| 10001 | Invalid App ID | Requested App ID does not exist. | Check your request input. |
| 10002 | Malformed App Data | App contents in backend cannot be read. | Contact Support. |
| 10003 | Unsupported Store | Request contains invalid store value. | Check your request input. |
| 10004 | Invalid App ID Bundle | Requested bundle identifier does not match. | Check your request input. |
| 10010 | App Limit reached | Transaction Limit exceeded on FREE plan. | Upgrade or wait for quota reset. |
| 10011 | App Limit reached (Cache) | Transaction Limit exceeded on FREE plan in region cache. | Upgrade or wait for quota reset. |
| 10012 | App Data unreachable | Request to backend application failed. | Contact Support. |
The store
The store rejected the receipt, or could not be reached with the credentials in App Setup.
| Code | Error | Description | Solution |
|---|---|---|---|
| 10100 | Missing Authentication Parameters | Authentication credentials missing. | Check your app setup. |
| 10101 | Invalid Auth Token | Authentication credentials invalid. | Check your app setup. |
| 10102 | Unexpected Response | App Store response returned an error or cannot be read. | See raw response or contact Support. |
| 10103 | Purchase cancelled | Purchase is flagged as cancelled. | Deny Purchase. |
| 10104 | Duplicate Transaction (consumed) | Product is already consumed but transaction was sent again. | Deny Purchase. |
| 10105 | Receipt validation failed | Generic failed response when unable to parse transaction data. There could be more details in the Error message. | Deny Purchase. |
| 10130 | Payment pending | App Store did not approve the transaction yet. | Do not finish transaction, try validating again later. |
| 10140 | Subscriptions not supported | Received subscription receipt but your plan does not support subscriptions. | Upgrade to STANDARD plan. |
Store notifications
These come from store-to-server notifications, not from your app. You will see them in Fraud Attempts by Type but never in a validation response.
| Code | Error | Description | Solution |
|---|---|---|---|
| 10200 | Invalid Request (encoded) | Raw request contains missing or invalid parameters. | - |
| 10201 | Invalid Auth Token | Authentication credentials invalid. | - |
| 10202 | Invalid Request (decoded) | Parsed request contains missing or invalid parameters. | - |
| 10203 | Unsupported NotificationType | Received unhandled Notificationtype. | - |
| 10204 | Unexpected Response | App Store validation response cannot be read. | - |
| 10205 | Receipt validation failed | Generic failed response when unable to parse transaction data. | - |
| 10240 | Subscriptions not supported | Received subscription receipt but your plan does not support subscriptions. | - |
The transaction
The receipt itself is valid, but it clashes with a record we already hold. See Transaction Storage and User Storage.
| Code | Error | Description | Solution |
|---|---|---|---|
| 10300 | Duplicate Transaction | Consumable product purchase was already recorded. | Deny Purchase. |
| 10301 | Transaction transfer cooldown | Transaction was recently claimed by different user (User Behaviour = Transfer). | Instruct user or contact Support. |
| 10302 | Duplicate Transaction | Product purchase was already recorded (User Behaviour = Block). | Deny Purchase. |
| 10303 | User Limit reached | Transaction is already associated with maximum amount of user IDs (User Behaviour = Alias). | Instruct user or contact Support. |