What it means
The API answers with HTTP 422 Unprocessable Content and the application/problem+json document below when the condition is App Store purchase could not be verified. The document's type member is https://screenrig.ai/problems/app-store-transaction-invalid, the address of this page, and its code member is app_store_transaction_invalid.
What to do
The signed value is not a screenRIG plan transaction from the App Store for this server's environment. Send the transaction exactly as StoreKit returned it, from a build of the app that buys against this server.
Should you retry?
The retryable member appears only on HTTP 5xx problems, so this one has none. Follow the steps under What to do before sending the request again.
Example response
Most routes answer with the error in the first entry of errors, and the document members instance and request_id beside it. The type, code, title and status of this problem type are fixed; detail varies per request, and hint is the registry default unless the handler sets a more specific one.
HTTP/1.1 422 Unprocessable Content
Content-Type: application/problem+json
{
"errors": [
{
"status": 422,
"code": "app_store_transaction_invalid",
"type": "https://screenrig.ai/problems/app-store-transaction-invalid",
"title": "App Store purchase could not be verified",
"detail": "What went wrong in this request.",
"hint": "The signed value is not a screenRIG plan transaction from the App Store for this server's environment. Send the transaction exactly as StoreKit returned it, from a build of the app that buys against this server."
}
],
"instance": "INSTANCE",
"request_id": "REQUEST_ID",
"server_time": "2026-01-01T00:00:00Z"
}In the API contract
The OpenAPI contract describes this problem in these words:
The app finishes the transaction after a 2xx or a definitive 4xx problem. Problems: app_store_transaction_invalid (422), app_store_account_mismatch (409), education_not_eligible (403), app_store_plan_conflict (409), billed_by_reseller (409, the organization is delegated to a reseller, which pays for its plan).
Any other type, a notification for a product that is not a plan, and one that names no organization are acknowledged and logged. 200 acknowledges. A payload that does not verify is a 422 app_store_transaction_invalid problem; a failure on the server's side is a 5xx, which Apple sends again. Limited per client address.
Operations that name this problem
These operations name this problem in the API reference:
- Record App Store Transaction
POST /api/organizations/{organization_id}/app-store/transactions - Receive App Store Notification
POST /api/app-store/notifications
Player action
This problem defines no Player action class. It belongs to a project, pairing or account flow that an agent or the dashboard drives.
Reference
| Code | app_store_transaction_invalid |
|---|---|
| HTTP status | 422 Unprocessable Content |
| Type | https://screenrig.ai/problems/app-store-transaction-invalid |
| Player action | none |