MCPInstall

asc-ppp-pricing

Set territory-specific pricing for subscriptions and in-app purchases using current asc setup, pricing summary, price import, and price schedule commands. Use when adjusting prices by country or implementing localized PPP strategies.

Installs
7.3K
Last 24h
+47
Trending rank
#3525
Security
Pass

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/rorkai/app-store-connect-cli-skills --skill asc-ppp-pricing
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads asc-ppp-pricing automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

Security audits

Independent scans of the skill's instructions and bundled files.

Gen Agent Trust Hub PassSAFE ·This skill provides instructions for managing App Store pricing via the 'asc' CLI tool, including localized pricing strategies and bulk updates. No security issues were detected.
Socket PassNo alerts
Snyk PassLOW ·Risk: LOW · No issues

SKILL.md

The instructions your agent reads when the skill is triggered.

PPP pricing (per-territory pricing)

Use this skill to create or update localized pricing across territories based on purchasing power parity (PPP) or your own regional pricing strategy.

Prefer the current high-level flows:

  • asc subscriptions setup and asc iap setup for parent creation and pricing, followed by version-scoped metadata commands
  • asc subscriptions pricing ... for subscription pricing changes
  • asc iap pricing summary and asc iap pricing schedules ... for IAP pricing changes

Prefer native asc commands. Use asc api only when no native command covers the task; the --resolved reads below already return territory, currency, customer price, proceeds, and price point ID for every territory.

Preconditions

  • Ensure credentials are set (asc auth login or ASC_* env vars).
  • Prefer ASC_APP_ID or pass --app explicitly.
  • Decide your base territory (usually USA) and baseline price.
  • Use asc pricing territories list --paginate if you need supported territory IDs.

Subscription PPP workflow

New subscription: bootstrap the parent and price with setup

Use setup to create the group and subscription, upload the App Review screenshot, materialize the complete equalized price matrix, and set sale availability. Create the API 4.4.1 group and subscription versions afterward; the localization flags on setup use deprecated v1 resources and must not be used for new workflows.

asc subscriptions setup \
  --app "APP_ID" \
  --group-reference-name "Pro" \
  --reference-name "Pro Monthly" \
  --product-id "com.example.pro.monthly" \
  --subscription-period ONE_MONTH \
  --review-screenshot "./review.png" \
  --price "9.99" \
  --price-territory "USA" \
  --territories "USA,CAN,GBR" \
  --no-verify \
  --output json

Capture .groupId and .subscriptionId from the setup JSON, then add version-scoped metadata. --no-verify is intentional here: without deprecated v1 localizations, the parent can remain MISSING_METADATA until the v2 steps finish.

asc subscriptions groups versions list --group-id "GROUP_ID" --state PREPARE_FOR_SUBMISSION --paginate --output json
# If and only if the list has zero matches:
asc subscriptions groups versions create --group-id "GROUP_ID" --output json
# For one match, reuse .data[0].id. For more than one, stop and require an explicit GROUP_VERSION_ID.
asc subscriptions groups versions localizations list --version-id "GROUP_VERSION_ID" --paginate --output json
# If and only if en-US is missing:
asc subscriptions groups versions localizations create --version-id "GROUP_VERSION_ID" --locale "en-US" --name "Pro"
# Otherwise, if and only if the resolved en-US name differs:
asc subscriptions groups versions localizations update --id "GROUP_LOC_ID" --name "Pro"
# Otherwise, do nothing.

asc subscriptions versions list --subscription-id "SUB_ID" --state PREPARE_FOR_SUBMISSION --paginate --output json
# If and only if the list has zero matches:
asc subscriptions versions create --subscription-id "SUB_ID" --output json
# For one match, reuse .data[0].id. For more than one, stop and require an explicit SUBSCRIPTION_VERSION_ID.
asc subscriptions versions localizations list --version-id "SUBSCRIPTION_VERSION_ID" --paginate --output json
# If and only if en-US is missing:
asc subscriptions versions localizations create --version-id "SUBSCRIPTION_VERSION_ID" --locale "en-US" --name "Pro Monthly" --description "Unlock everything"
# Otherwise, if and only if the resolved en-US values differ:
asc subscriptions versions localizations update --id "SUBSCRIPTION_LOC_ID" --name "Pro Monthly" --description "Unlock everything"
# Otherwise, do nothing.
asc subscriptions groups versions localizations list --version-id "GROUP_VERSION_ID" --paginate --output table
asc subscriptions versions localizations list --version-id "SUBSCRIPTION_VERSION_ID" --paginate --output table
asc validate subscriptions --app "APP_ID" --output table

For each version list, reuse its single PREPARE_FOR_SUBMISSION result. Create only when the result is empty; if more than one result is returned, stop and require an explicit version ID instead of creating another non-deletable version. Each localization create/update pair is also conditional: create for a missing locale, update the resolved localization only when values differ, and do nothing when it already matches.

Notes:

  • setup materializes Apple's complete equalized price matrix from the selected base price. This split workflow defers final verification until the v2 localizations exist.
  • Outside this split v2 bootstrap, omit --no-verify so setup performs its normal readback verification.
  • Use --tier or --price-point-id instead of --price when your workflow is tier-driven.
  • If an existing subscription remains MISSING_METADATA with the same selected base price, re-run the setup inputs with --repair to atomically rebuild and re-save the matrix.

Inspect current subscription pricing before changes

Use the summary view first when you want a compact current-state snapshot.

asc subscriptions pricing summary --subscription-id "SUB_ID" --territory "USA"
asc subscriptions pricing summary --subscription-id "SUB_ID" --territory "IND"
asc subscriptions pricing prices list --subscription-id "SUB_ID" --resolved

Use summary for quick before/after spot checks. prices list --resolved returns the current effective price for every territory (customer price, currency, proceeds, price point ID). It excludes future-dated prices; use prices list --paginate for raw records when checking scheduled changes.

Derive one subscription's localized prices from another

Use derive when a target subscription should stay near a fixed multiple of a source subscription in every territory, such as yearly pricing near 10 times monthly pricing. Apple ladders scale unevenly across territories, so preview the selected target points and achieved multiples before applying them.

asc subscriptions pricing derive \
  --source-subscription-id "MONTHLY_SUB_ID" \
  --target-subscription-id "YEARLY_SUB_ID" \
  --multiplier "10" \
  --round nearest \
  --dry-run \
  --output table

Choose how a desired price resolves when Apple does not offer it:

  • exact fails unless the calculated amount exists on the target ladder.
  • nearest chooses the closest amount; an exact tie chooses the lower one.
  • up chooses the smallest available amount at or above the calculation.
  • down chooses the largest available amount at or below the calculation.

The confirmed command fetches current prices and builds a fresh plan; it does not reuse the preceding dry-run result. When the applied values must match the reviewed values, rerun --dry-run immediately before confirming, then apply:

asc subscriptions pricing derive \
  --source-subscription-id "MONTHLY_SUB_ID" \
  --target-subscription-id "YEARLY_SUB_ID" \
  --multiplier "10" \
  --round nearest \
  --confirm \
  --output table

The source and target must be distinct subscriptions with existing standard UPFRONT prices. The operation is a one-time snapshot, not a persistent link. It fails closed before mutation when any territory cannot resolve, skips target prices that already match, and verifies applied prices by reading them back. Use --territory "SWE" for a focused preview or staged one-territory update; omit it to derive every current source territory. Approved or live targets are scheduled for tomorrow by default when no --start-date is supplied because --auto-start-date defaults to true. Pass --auto-start-date=false to apply immediately, or use an explicit date when coordinating a rollout. The command does not change subscription sale availability.

Preferred bulk PPP update: import a CSV with dry run

For broad PPP rollouts, prefer the subscription pricing import command instead of manually adding territory prices one by one.

Example CSV:

territory,price,start_date,preserved
IND,2.99,2026-04-01,false
BRA,4.99,2026-04-01,false
MEX,4.99,2026-04-01,false
DEU,8.99,2026-04-01,false

Dry-run first:

asc subscriptions pricing prices import \
  --subscription-id "SUB_ID" \
  --input "./ppp-prices.csv" \
  --dry-run \
  --output table

Apply for real:

asc subscriptions pricing prices import \
  --subscription-id "SUB_ID" \
  --input "./ppp-prices.csv" \
  --confirm \
  --output table

Notes:

  • --dry-run validates rows and resolves price points without creating prices.
  • --continue-on-error=false gives you a fail-fast mode.
  • CSV required columns: territory, price
  • CSV optional columns: currency_code, start_date, preserved, preserve_current_price, price_point_id
  • When price_point_id is omitted, the CLI resolves the matching price point for the row's territory and price automatically.
  • Territory inputs in import can be 3-letter IDs, 2-letter codes, or common territory names that map cleanly.

One-off subscription territory changes

For a small number of manual overrides, use the canonical set command.

asc subscriptions pricing prices set --subscription-id "SUB_ID" --price "2.99" --territory "IND"
asc subscriptions pricing prices set --subscription-id "SUB_ID" --tier 5 --territory "BRA"
asc subscriptions pricing prices set --subscription-id "SUB_ID" --price-point "PRICE_POINT_ID" --territory "DEU"

Notes:

  • Add --start-date "YYYY-MM-DD" to schedule a future change.
  • Add --preserved when you want to preserve the current price relationship.
  • The command handles both initial pricing and later price changes.

Discover raw price points only when you need them

Use price-point lookup and equalizations when you want to inspect Apple's localized ladder directly or pin exact price point IDs.

asc subscriptions pricing price-points list --subscription-id "SUB_ID" --territory "USA" --paginate --price "9.99"
asc subscriptions pricing price-points equalizations --price-point-id "PRICE_POINT_ID" --paginate
asc subscriptions pricing price-points adjusted-equalizations --price-point-id "PRICE_POINT_ID" --upfront-price-point-id "UPFRONT_PRICE_POINT_ID" --plan-type MONTHLY --subscription-id "SUB_ID" --paginate

Use equalizations for Apple's standard localized ladder. Use adjusted-equalizations when you need the API 4.4.1 subscription-specific adjustments. For a fresh adjusted-equalizations request, pass both --upfront-price-point-id and --plan-type; --subscription-id and --territory are optional filters. Treat --next as an opaque continuation URL. On a resumed equalizations or adjusted-equalizations request, pass only --next without the original owner --price-point-id, filters, sparse fields, includes, or limit; the continuation URL already carries that query state. --paginate and explicit output flags may still be used.

Verify after apply

Re-run the summary and raw list views after changes.

asc subscriptions pricing summary --subscription-id "SUB_ID" --territory "IND"
asc subscriptions pricing summary --subscription-id "SUB_ID" --territory "BRA"
asc subscriptions pricing prices list --subscription-id "SUB_ID" --resolved
asc subscriptions pricing prices list --subscription-id "SUB_ID" --paginate

After the version metadata exists, you may rerun asc subscriptions setup with verification enabled to recheck the parent, pricing, screenshot, and availability state.

Subscription availability

The underlying subscription-availability resource is deprecated in App Store Connect API 4.4. Keep this command family only for compatibility when ordinary upfront territory availability still needs it; Apple does not provide a one-for-one replacement for that case. For Monthly with 12-Month Commitment, use asc subscriptions pricing monthly-commitment enable|disable|list instead.

asc subscriptions pricing availability edit --subscription-id "SUB_ID" --territories "USA,CAN,IND,BRA"
asc subscriptions pricing availability view --subscription-id "SUB_ID"

IAP PPP workflow

New IAP: bootstrap the parent and price with setup

Use setup to create the product and initial price schedule. Its localization flags use the deprecated v1 resource, so add localization through an API 4.4.1 IAP version after setup.

asc iap setup \
  --app "APP_ID" \
  --type NON_CONSUMABLE \
  --reference-name "Pro Lifetime" \
  --product-id "com.example.pro.lifetime" \
  --price "9.99" \
  --base-territory "USA" \
  --output json

Capture .iapId from the setup JSON, then create the version and metadata:

asc iap versions list --iap-id "IAP_ID" --state PREPARE_FOR_SUBMISSION --paginate --output json
# If and only if the list has zero matches:
asc iap versions create --iap-id "IAP_ID" --output json
# For one match, reuse .data[0].id. For more than one, stop and require an explicit IAP_VERSION_ID.
asc iap versions localizations list --version-id "IAP_VERSION_ID" --paginate --output json
# If and only if en-US is missing:
asc iap versions localizations create --version-id "IAP_VERSION_ID" --locale "en-US" --name "Pro Lifetime" --description "Unlock everything forever"
# Otherwise, if and only if the resolved en-US values differ:
asc iap versions localizations update --localization-id "IAP_LOC_ID" --name "Pro Lifetime" --description "Unlock everything forever"
# Otherwise, do nothing.

Reuse the single PREPARE_FOR_SUBMISSION version. Create only when the list is empty, and stop for an explicit version ID if multiple matches are returned. Create the localization only when en-US is absent, update its resolved ID only when values differ, and otherwise do nothing.

Notes:

  • setup verifies the created IAP and price schedule by default; verify the version localization with its version-scoped list command.
  • Use --start-date for scheduled pricing.
  • Use --tier or --price-point-id when you want deterministic tier- or ID-based setup.

Inspect current IAP pricing before changes

Use asc iap pricing summary as the main current-state summary for PPP work.

asc iap pricing summary --iap-id "IAP_ID" --territory "USA"
asc iap pricing summary --iap-id "IAP_ID" --territory "IND"

This returns the base territory, current price, estimated proceeds, and scheduled changes for the requested territory.

For a snapshot of every territory, read the price schedule with --resolved. Take the schedule ID from .data.id of schedules view; it usually equals the IAP ID, but read it instead of assuming.

asc iap pricing schedules view --iap-id "IAP_ID"
asc iap pricing schedules manual-prices --schedule-id "SCHEDULE_ID" --resolved --output table

--resolved returns one row per territory with territory, customer price, currency, proceeds, price point ID, and whether the price is manual. Both manual-prices --resolved and automatic-prices --resolved combine manual and automatic prices active today. They exclude future-dated entries. Without --resolved, these commands return raw schedule records; use --paginate to include every page when checking scheduled changes.

Discover candidate IAP price points

Look up one territory's ladder with price-points list, one territory per call. --price filters each fetched page, so always pair it with --paginate.

asc iap pricing price-points list --iap-id "IAP_ID" --territory "IND" --paginate
asc iap pricing price-points list --iap-id "IAP_ID" --territory "IND" --paginate --price "299"

Use equalizations only to see what Apple's equalized ladder gives for a base price point. Its rows carry price point ID, customer price, and proceeds but no territory or currency, so do not use it to look up a specific country's price.

asc iap pricing price-points equalizations --id "PRICE_POINT_ID" --paginate

Create or update an IAP price schedule

For manual PPP updates, create a price schedule directly.

asc iap pricing schedules create --iap-id "IAP_ID" --base-territory "USA" --price "4.99" --start-date "2026-04-01"
asc iap pricing schedules create --iap-id "IAP_ID" --base-territory "USA" --tier 5 --start-date "2026-04-01"
asc iap pricing schedules create --iap-id "IAP_ID" --base-territory "USA" --prices "PRICE_POINT_ID:2026-04-01"

Use these when you are intentionally creating or replacing schedule entries. For deeper inspection:

asc iap pricing schedules view --iap-id "IAP_ID"
asc iap pricing schedules manual-prices --schedule-id "SCHEDULE_ID" --paginate
asc iap pricing schedules automatic-prices --schedule-id "SCHEDULE_ID" --paginate

Verify after apply

Use the summary command again after scheduling or applying pricing changes.

asc iap pricing summary --iap-id "IAP_ID" --territory "USA"
asc iap pricing summary --iap-id "IAP_ID" --territory "IND"
asc iap pricing schedules manual-prices --schedule-id "SCHEDULE_ID" --resolved --output table
asc iap pricing schedules manual-prices --schedule-id "SCHEDULE_ID" --paginate
asc iap pricing schedules automatic-prices --schedule-id "SCHEDULE_ID" --paginate

For future-dated schedules, run summary for every changed territory to verify scheduled price-point IDs and dates; keep the raw paginated reads for the full schedule inventory. The resolved snapshot excludes prices until they take effect.

Common PPP strategy patterns

Base territory first

  • Pick one baseline territory, usually USA.
  • Set the baseline price there first.
  • Derive lower or higher territory targets from that baseline.

Tiered regional pricing

  • High-income markets stay close to baseline.
  • Mid-income markets get moderate discounts.
  • Lower-income markets get stronger PPP adjustments.

Spreadsheet-driven rollout

  • Build the target territory list in a CSV.
  • Dry-run the import.
  • Fix any resolution failures.
  • Apply the import.
  • Re-run summary checks for the most important territories.

Notes

  • Prefer canonical commands in docs and automation: asc subscriptions pricing ...
  • asc subscriptions pricing ... is the supported subscription pricing family; do not use the removed asc subscriptions prices ... path.
  • Prefer canonical IAP commands in docs and automation: asc iap pricing ...
  • asc subscriptions pricing prices import --dry-run is the safest subscription batch PPP path today.
  • asc subscriptions setup and asc iap setup already provide built-in post-create verification.
  • There is not yet a single first-class before/after PPP diff command; compare --resolved reads for current prices and raw paginated records for scheduled changes.
  • Price changes may take time to propagate in App Store Connect and storefronts.

FAQ

What does the asc-ppp-pricing skill do?

Set territory-specific pricing for subscriptions and in-app purchases using current asc setup, pricing summary, price import, and price schedule commands. Use when adjusting prices by country or implementing localized PPP strategies.

How do I install asc-ppp-pricing?

Run npx skills add https://github.com/rorkai/app-store-connect-cli-skills --skill asc-ppp-pricing in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/asc-ppp-pricing/ (personal) or .claude/skills/asc-ppp-pricing/ (project).

Which AI agents can use asc-ppp-pricing?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is asc-ppp-pricing safe to install?

Security partners have reviewed it: Gen Agent Trust Hub passed; Socket passed; Snyk passed. As with any skill, read the SKILL.md and bundled scripts before installing.

Who maintains asc-ppp-pricing?

It is published by rorkai in rorkai/app-store-connect-cli-skills. It has 7,316 recorded installs.

More from rorkai/app-store-connect-cli-skills

View all →

asc-cli-usage

rorkai/app-store-connect-cli-skills

Guidance for using asc cli in this repo (flags, output formats, pagination, auth, and discovery). Use when asked to run or design asc commands or interact with App Store Connect via the CLI.

Mobile8.6K installs

asc-release-flow

rorkai/app-store-connect-cli-skills

Orchestrate App Store releases with asc, including staging a version, uploading or building an artifact, publishing, and submitting for review. Use when the user wants to prepare or execute a release. Keep Game Center item preparation in this skill; route other readiness failures, stuck submissions, cancellation, and retry decisions to asc-submission-health.

Mobile8.3K installs

asc-submission-health

rorkai/app-store-connect-cli-skills

Diagnose App Store submission blockers and operate review health with asc, including readiness validation, repair routing, status monitoring, cancellation, and retry decisions. Use when validation fails, a version is not in a valid state, review status is unclear or stuck, or a failed submission must be repaired and retried. For staging, upload, publication, and submission execution, use asc-release-flow.

asc-metadata-sync

rorkai/app-store-connect-cli-skills

Sync, validate, and apply App Store metadata and store assets with asc. Use when updating localizations, keywords, App Clip or preview assets, Asset Library media and placements, or migrating legacy fastlane metadata.

Mobile7.9K installs

asc-xcode-build

rorkai/app-store-connect-cli-skills

Build, archive, export, and manage Xcode version/build numbers with asc, including portable iOS compilation and packaging. Use when creating an IPA or PKG for App Store Connect, TestFlight, or registered-device release testing.

Mobile7.7K installs

asc-id-resolver

rorkai/app-store-connect-cli-skills

Resolve App Store Connect IDs (apps, builds, app and digital-goods versions, groups, testers) from human-friendly names using asc. Use when commands require IDs.

Mobile7.6K installs

Popular business & finance skills

View category →

sales-enablement

coreyhaines31/marketingskills

When the user wants to create sales collateral, pitch decks, one-pagers, objection handling docs, or demo scripts. Also use when the user mentions 'sales deck,' 'pitch deck,' 'one-pager,' 'leave-behind,' 'objection handling,' 'deal-specific ROI analysis,' 'demo script,' 'talk track,' 'sales playbook,' 'proposal template,' 'buyer persona card,' 'battle card,' 'battlecard,' 'competitive one-pager,' 'win-loss analysis,' 'why are we losing deals,' 'loss reasons,' 'how do I respond to this objection,' 'prospect just said,' 'help my sales team,' 'sales materials,' or 'what should I give my sales reps,' 'cold call script,' or 'voicemail script.' Use this for any document or asset that helps a sales team close deals. For public competitor comparison pages, see competitors. For running buyer interviews or churn research, see customer-research. For marketing website copy, see copywriting. For cold outreach emails, see cold-email. For the offer being sold (bonuses, guarantees, pricing structure),

Business & Finance119.5K installs

revops

coreyhaines31/marketingskills

When the user wants help with revenue operations, lead lifecycle management, or marketing-to-sales handoff processes. Also use when the user mentions 'RevOps,' 'revenue operations,' 'lead scoring,' 'outbound pipeline stages,' 'lead routing,' 'MQL,' 'SQL,' 'pipeline stages,' 'deal desk,' 'CRM automation,' 'marketing-to-sales handoff,' 'data hygiene,' 'leads aren't getting to sales,' 'pipeline management,' 'lead qualification,' or 'when should marketing hand off to sales.' Use this for anything involving the systems and processes that connect marketing to revenue. For cold outreach emails, see cold-email. For email drip campaigns, see emails. For pricing decisions, see pricing.

Business & Finance114.1K installs

sales-funnel-blueprint

autonnel/autonnel-skills

Turn an offer into a concrete multi-step sales funnel spec - page-by-page structure, price ladder, copy outline and the metrics each step must hit. Use when asked to build a sales funnel, marketing funnel, landing page flow, lead magnet funnel, webinar funnel, tripwire or VSL funnel, when planning a product launch page flow, or when someone asks "what pages do I need" for selling something online.

Business & Finance104.5K installs

pricing

coreyhaines31/marketingskills

When the user wants help with pricing decisions, packaging, or monetization strategy. Also use when the user mentions 'pricing,' 'pricing tiers,' 'freemium,' 'free trial,' 'packaging,' 'price increase,' 'value metric,' 'Van Westendorp,' 'willingness to pay,' 'monetization,' 'how much should I charge,' 'my pricing is wrong,' 'pricing page,' 'annual vs monthly,' 'per seat pricing,' 'should I offer a free plan,' 'pricing page teardown,' 'pricing page audit,' 'is my pricing page AI-readable,' or 'can AI read my pricing.' Use this whenever someone is figuring out what to charge, how to structure their plans, or wants to audit a pricing page (for humans and for the AI agents that shortlist tools). For in-app upgrade screens, see paywalls. For offer construction (bonuses, guarantees, value framing, naming) on services/courses/coaching/high-ticket B2B, see offers.

Business & Finance80K installs

cross-border-ecommerce

nexscope-ai/ecommerce-skills

Cross-border e-commerce expansion advisor. Scores target markets on 8 weighted dimensions (market size, ecommerce penetration, competition, regulatory complexity, logistics infrastructure, payment ecosystem, cultural distance, IP protection), compares 5 fulfillment models with cost and transit data, provides country-by-country tax/duty compliance guides (EU VAT/IOSS, UK VAT, US sales tax, CA GST, AU GST, JP consumption tax), maps local payment preferences by market, and builds a phased expansion roadmap. No API key required.

Business & Finance62.9K installs

pricing-strategy

coreyhaines31/marketingskills

When the user wants help with pricing decisions, packaging, or monetization strategy. Also use when the user mentions 'pricing,' 'pricing tiers,' 'freemium,' 'free trial,' 'packaging,' 'price increase,' 'value metric,' 'Van Westendorp,' 'willingness to pay,' 'monetization,' 'how much should I charge,' 'my pricing is wrong,' 'pricing page,' 'annual vs monthly,' 'per seat pricing,' or 'should I offer a free plan.' Use this whenever someone is figuring out what to charge or how to structure their plans. For in-app upgrade screens, see paywall-upgrade-cro.

Business & Finance61.2K installs