Skip to content
Deployment
Skill

/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.

From plugin
app-store-connect-cli-skills
1.1k26 skills

Claude Code

$ npx -y skills add rorkai/app-store-connect-cli-skills --skill asc-ppp-pricing --agent claude-code

SKILL.md

asc-ppp-pricing.SKILL.md
name: asc-ppp-pricing
description: 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.

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

Follow the conditions in the comments exactly: versions cannot be deleted, so never create a second `PREPARE_FOR_SUBMISSION` version.

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 su
Read more
@rorkai
Ships withapp-store-connect-cli-skills

A collection of Agent Skills for shipping with the asc cli (asc). These skills help agents run builds, TestFlight, metadata, submissions, signing, and Apple Ads workflows. This is a community-maintained, unofficial skill pack and is not affiliated with Apple.

Stars on GitHub

Momentum

stars in total
1.1k
Star history of rorkai/app-store-connect-cli-skills on GitHub, a chart by star-history.com

More skills from other plugins.

configuring-horizon

configuring-horizon

Use this skill whenever the user mentions Horizon by name in a Laravel context. Covers the full Horizon lifecycle: installing…

coolify13d66k
@coollabsio@coollabsioInstall Skill
vercel-cli

vercel-cli

Guides deployment, configuration, and troubleshooting with the Vercel CLI. Use when operating Vercel projects or resources…

vercel2w16k
@vercel@vercelInstall Skill
skypilot

skypilot

Use when launching cloud VMs, Kubernetes pods, or Slurm jobs for GPU/TPU/CPU workloads, training or fine-tuning models on cloud…

@skypilot-org@skypilot-orgInstall Skill
pinme

pinme

Use this skill when the user mentions "pinme", or needs to upload files, store to IPFS, create/publish/deploy websites or…

pinme2mo3.8k
@glitternetwork@glitternetworkInstall Skill

Questions about asc-ppp-pricing.

Which coding agents can use asc-ppp-pricing?
asc-ppp-pricing installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.