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

Integrations

Google Play

The Android Publisher endpoints used, the scope and permissions required, and the limits of what the provider can do.

Shipped3 min readReviewed 2026-09-21Markdown

On this page

  • Authentication
  • Endpoints used
  • Permissions
  • Capabilities
  • Retries and failures
  • Limits to know about

Google Play is the only store supported today. The adapter targets the Android Publisher v3 API.

Authentication

A service-account JSON key, exchanged for an access token on the single scope:

https://www.googleapis.com/auth/androidpublisher

The token is minted inside the credential vault, and authenticated requests execute there. The key never reaches the application runtime.

Endpoints used

OperationMethod and path
List subscriptionsGET applications/{package}/subscriptions
List one-time productsGET applications/{package}/oneTimeProducts
List subscription offersGET applications/{package}/subscriptions/{id}/basePlans/{id}/offers
List purchase-option offersGET applications/{package}/oneTimeProducts/{id}/purchaseOptions/{id}/offers
Convert regional pricesPOST applications/{package}/pricing:convertRegionPrices

The vault allows exactly these shapes and nothing else. A request that does not match one is refused before it leaves the boundary, with "Google operation is not allowed." Query parameters are restricted to pageSize and pageToken.

Price conversion is a read. It asks Google what a price would convert to; it sets nothing.

Permissions

One OAuth scope covers every call above, so scope is never the cause of a permission failure. What differs is the Play Console permission granted to the service account.

This distinction produces the most common support question:

Imported, but Google's store baseline could not be read for 2 plan(s): The caller does not have permission

A read-only grant — View app information and download bulk reports — is enough to list subscriptions and one-time products. It is not enough to call the monetization pricing endpoint. So the catalogue imports correctly and only the baseline column comes back empty.

The fix is in Play Console under Users and permissions: grant the service account the monetization permission on the affected apps, wait a few minutes for propagation, then re-sync. Confirm the exact permission name against your console, as Google has renamed these.

To check independently, call pricing:convertRegionPrices directly with the same service account. Google's full error body sometimes distinguishes "The caller does not have permission" (a permission grant) from "This developer account does not own the application" (the wrong account entirely); Paywall Parity only relays the summary message.

Capabilities

CapabilitySupported
Regional price conversionYes
Regional price publishingYes, gated
Read-back verificationYes

Retries and failures

429 and 5xx are retried up to three times with exponential backoff. 4xx responses other than 429 are not retried — they will not succeed on a second attempt.

Response bodies are truncated and parsed for error.message before surfacing. Unstructured provider bodies are never returned to the client.

Limits to know about

  • Subscription price changes apply to new customers. Existing subscribers are governed by Google's own policy and consent rules. Deployments say this explicitly rather than leaving it implied.
  • Conversion is anchored on the US price. A plan not sold in the United States has no baseline.
  • Region versions matter. Each conversion response carries a region version, stored with the baseline. Baselines from different region versions are not directly comparable.
  • Live minimum, maximum, and billable-unit validation is not implemented. Rounding uses the market registry's increments, not Google's live constraints, so a rounded price is not yet guaranteed to be a valid store price point.
PreviousError codesNextApple App Store

On this page

  • Authentication
  • Endpoints used
  • Permissions
  • Capabilities
  • Retries and failures
  • Limits to know about