Paywall Parity/Guidelines
Run a free audit

Start here

  • Overview
  • Quickstart
  • Safety model

Concepts

  • Store baselines
  • Parity targets
  • Strategies
  • Confidence
  • Drift
  • Protected markets

Workflows

  • Connect a store
  • Review recommendations
  • Stage and publish

Reference

  • Formulas
  • Error codes

Integrations

  • Google Play
  • Apple App Store
  • Revenue signals

Trust and operations

  • Credential custody
  • Methodology

Reference

Error codes

Every error code the application surfaces, what actually caused it, and what to do about it.

Shipped2 min readReviewed 2026-09-21Markdown

On this page

  • Store and provider
  • GOOGLE_PERMISSION_DENIED
  • GOOGLE_INVALID_CREDENTIALS
  • GOOGLE_PACKAGE_NOT_FOUND
  • GOOGLE_RATE_LIMITED
  • GOOGLE_API_ERROR
  • PRODUCT_SYNC_ERROR
  • Catalogue sync
  • CATALOG_SYNC_FAILED
  • CATALOG_SYNC_PARTIAL
  • Baseline failures
  • Credential vault
  • STORE_PERMISSION_ERROR
  • STORE_CONNECTION_ERROR
  • VAULT_MAINTENANCE_FORBIDDEN
  • Application
  • NOT_FOUND
  • INTERNAL_ERROR

Codes are stable identifiers. Messages attached to them may be Google's own text passed through verbatim, which is why the code is usually more informative than the sentence beside it.

Store and provider

GOOGLE_PERMISSION_DENIED

Google returned 403 on an Android Publisher call. Surfaced to the application as STORE_PERMISSION_ERROR.

The message is Google's, and its most common form — "The caller does not have permission" — names no endpoint and no permission. What it means depends on which call failed:

  • Catalogue listing succeeded, price conversion failed. A Play Console permission gap. The service account can read app information but is not granted the monetization permission. Fix under Users and permissions, wait a few minutes, re-sync.
  • Everything failed. The service account was never granted access to this app, or the developer account does not own it.

This does not indicate a credential problem. See Store baselines.

GOOGLE_INVALID_CREDENTIALS

Google returned 401, or the private key could not be parsed. The service-account key is wrong, malformed, or revoked. Re-submit the key on the connection.

GOOGLE_PACKAGE_NOT_FOUND

Google returned 404. The package name is wrong, or the developer account does not own that application.

GOOGLE_RATE_LIMITED

Google returned 429. Retried automatically with backoff; if it reaches you, the retries were exhausted. Re-sync later.

GOOGLE_API_ERROR

Any other Google failure. 5xx responses are retried before surfacing.

PRODUCT_SYNC_ERROR

Every application in a sync failed to import. Carries the underlying failures as context. Returned as 502.

Catalogue sync

CATALOG_SYNC_FAILED

One application's import failed, or — at sync level — all of them did.

CATALOG_SYNC_PARTIAL

Some applications imported and some did not. The successful ones are saved; the failures are recorded per application with their own reason.

Baseline failures

Baseline failures are not error codes. They are reported per plan as part of a successful import, because a conversion that fails must not fail an otherwise valid read-only import.

Two forms:

  • "This plan has no US price, and Google converts from the US price." — a legitimate catalogue shape.
  • Google's own error text, passed through — usually the permission gap above.

Credential vault

STORE_PERMISSION_ERROR

The vault returned 403. Either Google refused the operation, or the operation itself is not on the vault's allowlist.

The two are distinguishable by message: the vault's own refusal reads "Google operation is not allowed." Anything else came from Google.

STORE_CONNECTION_ERROR

The vault could not be reached, returned an unstructured response, or failed for a reason other than permission.

VAULT_MAINTENANCE_FORBIDDEN

A maintenance operation was attempted without valid maintenance authorization. Maintenance is authorized separately from ordinary credential use, so a compromised application cannot rotate or export keys.

Application

NOT_FOUND

The record does not exist, or belongs to another workspace. The two are deliberately indistinguishable: a workspace-scoped query treats another workspace's row as a miss rather than a permission error, so existence is never leaked.

INTERNAL_ERROR

An unclassified failure. If a store operation produces this rather than a specific code, the classification is missing — worth reporting.

PreviousPricing formulasNextGoogle Play

On this page

  • Store and provider
  • GOOGLE_PERMISSION_DENIED
  • GOOGLE_INVALID_CREDENTIALS
  • GOOGLE_PACKAGE_NOT_FOUND
  • GOOGLE_RATE_LIMITED
  • GOOGLE_API_ERROR
  • PRODUCT_SYNC_ERROR
  • Catalogue sync
  • CATALOG_SYNC_FAILED
  • CATALOG_SYNC_PARTIAL
  • Baseline failures
  • Credential vault
  • STORE_PERMISSION_ERROR
  • STORE_CONNECTION_ERROR
  • VAULT_MAINTENANCE_FORBIDDEN
  • Application
  • NOT_FOUND
  • INTERNAL_ERROR