Sync Google Play subscription prices with RevenueCat across 175 countries
Google Play supports subscription pricing in 175 countries. RevenueCat abstracts pricing across stores. Keeping the two in sync — the actual per-country prices on Google Play, the offering-level packages in RevenueCat — is the kind of task that traditionally means opening two dashboards and a spreadsheet.
gplay covers the Google Play side; the RevenueCat MCP covers the RevenueCat side. Together, an AI agent can keep them synchronized in one prompt.
The pricing model, briefly
Section titled “The pricing model, briefly”On Google Play:
- A base plan has a regional price for each country, denominated in that country’s currency, stored in micro-units (1 USD = 1,000,000 micros).
- Google offers a PPP conversion — you set the anchor (e.g. US $9.99), Google proposes prices for every other region weighted by local purchasing power. You accept, override, or reject per country.
- Prices can change over time; you have to explicitly re-set them.
In RevenueCat:
- A package (e.g.
$rc_monthly) points to a store product (e.g.pro:monthlyon Google Play). - The price RevenueCat sees is whatever Google Play reports for that product in the user’s region — RC doesn’t set prices, it observes them.
- RC’s
equalize-subscription-pricestool normalizes prices between stores (iOS ↔ Android) so that a user seeing $9.99 on iOS also sees the equivalent $9.99 on Android after currency and store-fee adjustments.
The takeaway: gplay writes the ground truth on Google Play. RevenueCat aligns iOS to match.
Step 1 — set the anchor price on Google Play
Section titled “Step 1 — set the anchor price on Google Play”gplay baseplans prices set \ --package com.example.app \ --subscription-id pro \ --base-plan-id monthly \ --region US \ --price-micros 9990000That’s your US monthly price at $9.99.
Step 2 — expand to all 175 countries with PPP
Section titled “Step 2 — expand to all 175 countries with PPP”gplay baseplans prices convert \ --package com.example.app \ --subscription-id pro \ --base-plan-id monthly \ --from-region USconvert uses Google’s PPP tables. Your $9.99 US price becomes:
- India: ₹499
- Brazil: R$19.90
- Japan: ¥1,500
- Turkey: ₺149
- Argentina: AR$4,999
- Nigeria: ₦4,500
- … 170 more.
You can review the whole set:
gplay baseplans prices list \ --package com.example.app \ --subscription-id pro \ --base-plan-id monthly \ --output tableOverride any single country:
gplay baseplans prices set \ --package com.example.app \ --subscription-id pro \ --base-plan-id monthly \ --region GB \ --price-micros 7990000 # £7.99 flat, not the PPP-converted £8.53Step 3 — sync RevenueCat prices to match
Section titled “Step 3 — sync RevenueCat prices to match”Once Google Play has the prices you want, tell RevenueCat to align iOS to match:
Prompt your AI agent (Claude Code, Cursor, or any of the 12 supported agents):
Using the RevenueCat MCP, equalize subscription prices for the “default” offering so the App Store side matches what’s now on Google Play. Show me the diff before executing.
Under the hood the agent calls RC MCP’s equalize-subscription-prices — it reads Play Store prices as the source of truth and adjusts App Store prices to match after fee-and-currency normalization.
Full round trip: gplay writes to Google Play → RC observes → RC MCP equalizes App Store.
Step 4 — audit for drift
Section titled “Step 4 — audit for drift”Prices drift over time. Google changes its PPP tables (sometimes materially). Local currency swings. Store fee changes.
Weekly audit prompt:
Compare the current Google Play prices for
com.example.apppro subscription against the anchor ($9.99 US monthly) using PPP tables from 3 months ago. Flag any country where the current price is more than 15% off the recomputed PPP.
The agent chains gplay baseplans prices list → PPP math against the anchor → diff report.
You can also cross-reference with RevenueCat’s revenue metrics:
For countries where the Play price is >15% below the PPP anchor, pull the last 30 days of RC revenue metrics. Are we leaving money on the table?
RC MCP get-revenue-metric filtered by region → agent computes revenue-per-user against the reduced-price cohort.
Step 5 — coordinated price change
Section titled “Step 5 — coordinated price change”When you decide to raise US monthly from $9.99 to $12.99, you want the change to propagate cleanly.
Prompt:
Change Google Play US monthly price for pro subscription to $12.99, propagate via PPP to all other regions except IN and BR (keep them at current), then equalize RevenueCat so iOS matches. Show the full diff — old vs new for every affected region and every affected RC package — before executing.
Chains:
- gplay
baseplans prices set --region US --price-micros 12990000(dry-run) - gplay
baseplans prices convert --from-region US --exclude IN,BR(dry-run) - gplay
baseplans prices list→ diff vs pre-state - You approve.
- Steps 1-2 re-run for real.
- RC MCP
equalize-subscription-pricestriggers iOS equalization. - RC MCP
list-pricesto confirm alignment.
A price change that used to be a ticket handed between finance, product, and the mobile team is now a prompt.
What Fastlane and gradle-play-publisher can’t do
Section titled “What Fastlane and gradle-play-publisher can’t do”Neither supports subscription pricing at all. This isn’t a gap — they were built for a different scope. But if you’re doing anything with subscriptions, they’re not part of the toolchain.
gplay covers the full monetization surface; combined with RC MCP, that surface stretches across both stores.
Getting started
Section titled “Getting started”brew install tamtom/tap/gplaygplay setup --autoSet up the RevenueCat MCP in your agent. Install the PPP pricing skill so your agent knows the anchor-and-convert pattern by default:
npx skills add tamtom/gplay-cli-skillsFull base plan pricing reference at /reference/baseplans/. Try the audit prompt above against your live subscriptions — most teams find at least three countries out of sync on the first run.