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-accountorGPLAY_SERVICE_ACCOUNTenv var). - Use
GPLAY_PACKAGEor pass--packageexplicitly. - 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:
- Get the current product/subscription to see existing prices.
- Recompute the PPP-adjusted price with the new base price or new multiplier.
- Update with the modified JSON (include all regions, not just the changed ones).
- For subscriptions with active subscribers, run
migrate-pricesfor each affected base plan. - 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 convertfor 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.
