Skip to content

gplay subscriptions

Manage subscription products.

gplay subscriptions <subcommand> [flags]

Manage subscription products.

Subscriptions have a hierarchical structure:

  • Subscription: The product itself
  • Base Plan: A pricing tier within a subscription
  • Offer: Promotional pricing on a base plan (trials, intro prices)

Use the “baseplans” and “offers” commands to manage those resources.

List all subscriptions.

gplay subscriptions list --package <name> [--page-size <n>] [--show-archived]
Flag Description Default
--output Output format: json (default), table, markdown json
--package Package name (applicationId) ``
--page-size Page size 100
--paginate Fetch all pages false
--pretty Pretty-print JSON output false
--show-archived Include archived subscriptions false

Get a subscription.

gplay subscriptions get --package <name> --product-id <id>
Flag Description Default
--output Output format: json (default), table, markdown json
--package Package name (applicationId) ``
--pretty Pretty-print JSON output false
--product-id Subscription product ID ``

Create a subscription.

gplay subscriptions create --package <name> --product-id <id> --json <json>

Create a new subscription product.

The –regions-version flag is required when setting regional pricing. Use gplay pricing convert to get Google’s current regionVersion and region-specific converted prices.

Use –auto-convert-regional-prices with –base-price-json to let Google Play generate valid regionalConfigs and regionsVersion from one base price. This replaces any regionalConfigs in the JSON with the billable regions returned by Google for the current regionVersion.

JSON format: { “productId”: “premium_monthly”, “listings”: [ { “languageCode”: “en-US”, “title”: “Premium Monthly”, “benefits”: [“Feature 1”, “Feature 2”], “description”: “Get premium access” } ], “basePlans”: [ { “basePlanId”: “monthly”, “autoRenewingBasePlanType”: { “billingPeriodDuration”: “P1M”, “gracePeriodDuration”: “P7D”, “resubscribeState”: “RESUBSCRIBE_STATE_ACTIVE”, “prorationMode”: “SUBSCRIPTION_PRORATION_MODE_CHARGE_ON_NEXT_BILLING_DATE” }, “regionalConfigs”: [ { “regionCode”: “US”, “price”: { “currencyCode”: “USD”, “units”: “9”, “nanos”: 990000000 } } ] } ] }

Examples: gplay subscriptions create –package com.example.app –product-id premium_monthly –json @subscription.json –auto-convert-regional-prices –base-price-json ‘{“currencyCode”:“USD”,“units”:“9”,“nanos”:990000000}’ gplay pricing regions-version –package com.example.app –price-json ‘{“currencyCode”:“USD”,“units”:“9”,“nanos”:990000000}’ –output table

Flag Description Default
--auto-convert-regional-prices Generate regionalConfigs from –base-price-json false
--base-price-json Base Money JSON for –auto-convert-regional-prices (or @file) ``
--json Subscription JSON (or @file) ``
--output Output format: json (default), table, markdown json
--package Package name (applicationId) ``
--pretty Pretty-print JSON output false
--product-id Subscription product ID ``
--product-tax-category-code Product tax category code for price conversion ``
--regions-version Regions version for price migration ``

Update a subscription.

gplay subscriptions update --package <name> --product-id <id> --json <json>

Update a subscription.

If –update-mask is not provided, it is automatically derived from the JSON keys. Mutable fields: basePlans, listings, restrictedPaymentCountries, taxAndComplianceSettings.

JSON format: { “listings”: [ { “languageCode”: “en-US”, “title”: “Premium Monthly (Updated)”, “description”: “Updated premium access” } ] }

If –allow-missing is set and the subscription does not exist, it will be created. In that case, –update-mask is ignored.

Examples: gplay subscriptions update –package com.example –product-id premium –json @subscription.json gplay subscriptions update –package com.example –product-id premium –json ‘{“listings”:[…]}’ –update-mask listings

Flag Description Default
--allow-missing Create if not exists false
--json Subscription JSON (or @file) ``
--output Output format: json (default), table, markdown json
--package Package name (applicationId) ``
--pretty Pretty-print JSON output false
--product-id Subscription product ID ``
--regions-version Regions version for price migration ``
--update-mask Fields to update (comma-separated, e.g., listings) ``

Delete a subscription (only if never had subscribers).

gplay subscriptions delete --package <name> --product-id <id> --confirm
Flag Description Default
--confirm Confirm deletion false
--output Output format: json (default), table, markdown json
--package Package name (applicationId) ``
--pretty Pretty-print JSON output false
--product-id Subscription product ID ``

Archive a subscription (deprecate without deleting).

gplay subscriptions archive --package <name> --product-id <id>
Flag Description Default
--output Output format: json (default), table, markdown json
--package Package name (applicationId) ``
--pretty Pretty-print JSON output false
--product-id Subscription product ID ``

Get multiple subscriptions.

gplay subscriptions batch-get --package <name> --product-ids <ids>
Flag Description Default
--output Output format: json (default), table, markdown json
--package Package name (applicationId) ``
--pretty Pretty-print JSON output false
--product-ids Comma-separated subscription product IDs ``

Batch update multiple subscriptions.

gplay subscriptions batch-update --package <name> --json <json>

Create or update multiple subscriptions in a single request.

JSON format: { “requests”: [ { “subscription”: { “packageName”: “com.example.app”, “productId”: “premium_monthly”, “listings”: [ { “languageCode”: “en-US”, “title”: “Premium Monthly”, “description”: “Get premium access” } ] }, “updateMask”: “listings”, “allowMissing”: true, “regionsVersion”: {“version”: “2025/02”} } ] }

Flag Description Default
--json BatchUpdateSubscriptionsRequest JSON (or @file) ``
--output Output format: json (default), table, markdown json
--package Package name (applicationId) ``
--pretty Pretty-print JSON output false