Skip to main content

Errors

A successful response returns HTTP status 200. A failed one returns 400 and an error object:

FieldValue
CodeError number
ErrorShort error message
danger

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.

CodeErrorDescriptionSolution
10000Invalid RequestRequest contains missing or invalid parameters.Check your request input.
10001Invalid App IDRequested App ID does not exist.Check your request input.
10002Malformed App DataApp contents in backend cannot be read.Contact Support.
10003Unsupported StoreRequest contains invalid store value.Check your request input.
10004Invalid App ID BundleRequested bundle identifier does not match.Check your request input.
10010App Limit reachedTransaction Limit exceeded on FREE plan.Upgrade or wait for quota reset.
10011App Limit reached (Cache)Transaction Limit exceeded on FREE plan in region cache.Upgrade or wait for quota reset.
10012App Data unreachableRequest to backend application failed.Contact Support.

The store

The store rejected the receipt, or could not be reached with the credentials in App Setup.

CodeErrorDescriptionSolution
10100Missing Authentication ParametersAuthentication credentials missing.Check your app setup.
10101Invalid Auth TokenAuthentication credentials invalid.Check your app setup.
10102Unexpected ResponseApp Store response returned an error or cannot be read.See raw response or contact Support.
10103Purchase cancelledPurchase is flagged as cancelled.Deny Purchase.
10104Duplicate Transaction (consumed)Product is already consumed but transaction was sent again.Deny Purchase.
10105Receipt validation failedGeneric failed response when unable to parse transaction data. There could be more details in the Error message.Deny Purchase.
10130Payment pendingApp Store did not approve the transaction yet.Do not finish transaction, try validating again later.
10140Subscriptions not supportedReceived 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.

CodeErrorDescriptionSolution
10200Invalid Request (encoded)Raw request contains missing or invalid parameters.-
10201Invalid Auth TokenAuthentication credentials invalid.-
10202Invalid Request (decoded)Parsed request contains missing or invalid parameters.-
10203Unsupported NotificationTypeReceived unhandled Notificationtype.-
10204Unexpected ResponseApp Store validation response cannot be read.-
10205Receipt validation failedGeneric failed response when unable to parse transaction data.-
10240Subscriptions not supportedReceived 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.

CodeErrorDescriptionSolution
10300Duplicate TransactionConsumable product purchase was already recorded.Deny Purchase.
10301Transaction transfer cooldownTransaction was recently claimed by different user (User Behaviour = Transfer).Instruct user or contact Support.
10302Duplicate TransactionProduct purchase was already recorded (User Behaviour = Block).Deny Purchase.
10303User Limit reachedTransaction is already associated with maximum amount of user IDs (User Behaviour = Alias).Instruct user or contact Support.