tamtom

gplay-ppp-pricing

Set region-specific pricing for subscriptions and in-app purchases using purchasing power parity (PPP). Use when adjusting prices by country or implementing localized pricing strategies on Google Play.

tamtom 42 6 Updated 5mo ago
GitHub

Install

npx skillscat add tamtom/gplay-cli-skills/gplay-ppp-pricing

Install via the SkillsCat registry.

SKILL.md

PPP Pricing (Per-Region Pricing)

Use this skill to set different prices for different countries based on purchasing power parity or custom pricing strategies.

Preconditions

  • Ensure credentials are set (gplay auth login --service-account or GPLAY_SERVICE_ACCOUNT env var).
  • Use GPLAY_PACKAGE or pass --package explicitly.
  • Know your base region (usually US) and base price.

PPP Multiplier Table

Apply these multipliers to the base USD price. Round all results to .99 endings (e.g., $4.73 → $4.99, ₹249.37 → ₹249.99).

Tier 1 — Full Price (1.0x–1.1x)

Region Code Multiplier Currency
United States US 1.0x USD
United Kingdom GB 1.0x GBP
Germany DE 1.0x EUR
Australia AU 1.0x AUD
Switzerland CH 1.1x CHF
Canada CA 1.0x CAD
Netherlands NL 1.0x EUR
Sweden SE 1.0x SEK
Norway NO 1.05x NOK
Denmark DK 1.0x DKK

Tier 2 — Medium (0.6x–0.8x)

Region Code Multiplier Currency
France FR 0.8x EUR
Spain ES 0.7x EUR
Italy IT 0.7x EUR
Japan JP 0.8x JPY
South Korea KR 0.7x KRW
Poland PL 0.6x PLN
Portugal PT 0.7x EUR
Czech Republic CZ 0.6x CZK
Greece GR 0.65x EUR
Chile CL 0.6x CLP
Saudi Arabia SA 0.8x SAR
UAE AE 0.8x AED

Tier 3 — Low (0.3x–0.5x)

Region Code Multiplier Currency
India IN 0.3x INR
Brazil BR 0.5x BRL
Mexico MX 0.45x MXN
Indonesia ID 0.3x IDR
Turkey TR 0.35x TRY
Vietnam VN 0.3x VND
Philippines PH 0.35x PHP
Egypt EG 0.3x EGP
Colombia CO 0.4x COP
Argentina AR 0.3x ARS
Nigeria NG 0.3x NGN
Pakistan PK 0.25x PKR
Thailand TH 0.4x THB
Malaysia MY 0.45x MYR
South Africa ZA 0.4x ZAR
Ukraine UA 0.3x UAH

Workflow: Set PPP-Based IAP Pricing

1. List in-app products

gplay iap list --package "PACKAGE"

2. Get current product details

gplay iap get --package "PACKAGE" --sku "SKU"

Note the current defaultPrice as your base price.

3. Build PPP-adjusted prices JSON

Using the base USD price and the multiplier table, compute per-region prices. Round all values to .99 endings.

Example: Base price $9.99 USD → India (0.3x) = ₹249.99, Brazil (0.5x) = R$24.99

{
  "sku": "premium_upgrade",
  "defaultPrice": {
    "priceMicros": "9990000",
    "currency": "USD"
  },
  "prices": {
    "US": { "priceMicros": "9990000", "currency": "USD" },
    "IN": { "priceMicros": "2499900", "currency": "INR" },
    "BR": { "priceMicros": "24990000", "currency": "BRL" },
    "MX": { "priceMicros": "4490000", "currency": "MXN" },
    "TR": { "priceMicros": "3490000", "currency": "TRY" },
    "ID": { "priceMicros": "2990000", "currency": "IDR" },
    "JP": { "priceMicros": "7990000", "currency": "JPY" },
    "KR": { "priceMicros": "6990000", "currency": "KRW" },
    "GB": { "priceMicros": "9990000", "currency": "GBP" },
    "DE": { "priceMicros": "9990000", "currency": "EUR" }
  }
}

4. Update the product

gplay iap update \
  --package "PACKAGE" \
  --sku "SKU" \
  --json @ppp-prices.json

5. Verify prices

gplay iap get --package "PACKAGE" --sku "SKU"

Review the prices map to confirm all regions are set correctly.

Workflow: Set PPP-Based Subscription Pricing

1. List subscriptions

gplay subscriptions list --package "PACKAGE"

2. Get current subscription details

gplay subscriptions get --package "PACKAGE" --product-id "PRODUCT_ID"

Note the base plans and their current regionalConfigs.

3. Build PPP-adjusted subscription JSON

Apply PPP multipliers equally to ALL base plans. Round to .99 endings.

Example: Monthly $4.99, Yearly $49.99 with PPP for India (0.3x) and Brazil (0.5x):

{
  "productId": "premium_monthly",
  "basePlans": [
    {
      "basePlanId": "monthly",
      "regionalConfigs": [
        { "regionCode": "US", "price": { "priceMicros": "4990000", "currency": "USD" } },
        { "regionCode": "IN", "price": { "priceMicros": "1490000", "currency": "INR" } },
        { "regionCode": "BR", "price": { "priceMicros": "2490000", "currency": "BRL" } }
      ],
      "autoRenewingBasePlanType": { "billingPeriodDuration": "P1M" }
    },
    {
      "basePlanId": "yearly",
      "regionalConfigs": [
        { "regionCode": "US", "price": { "priceMicros": "49990000", "currency": "USD" } },
        { "regionCode": "IN", "price": { "priceMicros": "14990000", "currency": "INR" } },
        { "regionCode": "BR", "price": { "priceMicros": "24990000", "currency": "BRL" } }
      ],
      "autoRenewingBasePlanType": { "billingPeriodDuration": "P1Y" }
    }
  ]
}

4. Update the subscription

gplay subscriptions update \
  --package "PACKAGE" \
  --product-id "PRODUCT_ID" \
  --json @ppp-subscription.json

5. Verify prices

gplay subscriptions get --package "PACKAGE" --product-id "PRODUCT_ID"

Review all regionalConfigs across all base plans to confirm prices are correct.

Workflow: Migrate Existing Subscriber Prices

When updating PPP prices on subscriptions with active subscribers, new prices only apply to new subscribers. To migrate existing subscribers:

1. Update prices (steps above)

2. Migrate existing subscribers to new prices

gplay baseplans migrate-prices \
  --package "PACKAGE" \
  --product-id "PRODUCT_ID" \
  --base-plan "BASE_PLAN_ID" \
  --json @migration.json

3. Repeat for each base plan

Apply migration to every base plan that had its prices changed:

# Monthly plan
gplay baseplans migrate-prices \
  --package "PACKAGE" \
  --product-id "PRODUCT_ID" \
  --base-plan monthly \
  --json @migration.json

# Yearly plan
gplay baseplans migrate-prices \
  --package "PACKAGE" \
  --product-id "PRODUCT_ID" \
  --base-plan yearly \
  --json @migration.json

4. Verify migration

gplay subscriptions get --package "PACKAGE" --product-id "PRODUCT_ID"

Updating Existing PPP Prices

To change a region's price:

  1. Get the current product/subscription to see existing prices.
  2. Recompute the PPP-adjusted price with the new base price or new multiplier.
  3. Update with the modified JSON (include all regions, not just the changed ones).
  4. For subscriptions with active subscribers, run migrate-prices for each affected base plan.
  5. Verify with a fetch + summary review.

Batch PPP for Multiple Products

Multiple IAPs

# Build a JSON file with PPP prices for each SKU
gplay iap batch-update \
  --package "PACKAGE" \
  --json @ppp-all-iaps.json

Multiple subscriptions

Update each subscription individually:

gplay subscriptions update --package "PACKAGE" --product-id "sub_1" --json @ppp-sub1.json
gplay subscriptions update --package "PACKAGE" --product-id "sub_2" --json @ppp-sub2.json

Common PPP Strategies

BigMac Index Approach

Adjust prices based on relative purchasing power:

  • USA: $9.99 (baseline)
  • India: $2.99 (~70% discount)
  • Brazil: $4.99 (~50% discount)
  • UK: $9.99 (similar)
  • Switzerland: $10.99 (premium)

Tiered Regional Pricing

Group countries into pricing tiers:

  • Tier 1 (Full): USA, UK, Germany, Australia, Switzerland, Canada
  • Tier 2 (Medium): France, Spain, Italy, Japan, South Korea, Saudi Arabia
  • Tier 3 (Low): India, Brazil, Mexico, Indonesia, Turkey, Vietnam, Egypt

Revenue Optimization

  • Start with Tier 3 discounts to capture volume in price-sensitive markets.
  • Monitor conversion rates per region after applying PPP.
  • Adjust multipliers based on actual revenue data.

Notes

  • Price changes for subscriptions apply immediately to new subscribers.
  • Existing subscribers require explicit price migration via migrate-prices.
  • Use gplay pricing convert for currency conversion reference, but apply PPP multipliers on top.
  • Always verify prices after updates by fetching the product and reviewing the summary.
  • The PPP multiplier table provides starting points — adjust based on your market data and revenue goals.