{"id":"0283a75e-a241-4edd-b102-b15aaa3103c6","shortId":"FGmJHe","kind":"skill","title":"asc-ppp-pricing","tagline":"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.","description":"# PPP pricing (per-territory pricing)\n\nUse this skill to create or update localized pricing across territories based on purchasing power parity (PPP) or your own regional pricing strategy.\n\nPrefer the current high-level flows:\n- `asc subscriptions setup` and `asc iap setup` when you are creating a new product\n- `asc subscriptions pricing ...` for subscription pricing changes\n- `asc iap pricing summary` and `asc iap pricing schedules ...` for IAP pricing changes\n\n## Preconditions\n- Ensure credentials are set (`asc auth login` or `ASC_*` env vars).\n- Prefer `ASC_APP_ID` or pass `--app` explicitly.\n- Decide your base territory (usually `USA`) and baseline price.\n- Use `asc pricing territories list --paginate` if you need supported territory IDs.\n\n## Subscription PPP workflow\n\n### New subscription: bootstrap with `setup`\nUse `setup` when you are creating a new subscription and want to create the group, subscription, first localization, initial price, and availability in one verified flow.\n\n```bash\nasc subscriptions setup \\\n  --app \"APP_ID\" \\\n  --group-reference-name \"Pro\" \\\n  --reference-name \"Pro Monthly\" \\\n  --product-id \"com.example.pro.monthly\" \\\n  --subscription-period ONE_MONTH \\\n  --locale \"en-US\" \\\n  --display-name \"Pro Monthly\" \\\n  --description \"Unlock everything\" \\\n  --price \"9.99\" \\\n  --price-territory \"USA\" \\\n  --territories \"USA,CAN,GBR\" \\\n  --output json\n```\n\nNotes:\n- `setup` verifies the created state by default.\n- Use `--no-verify` only when you explicitly want speed over readback verification.\n- Use `--tier` or `--price-point-id` instead of `--price` when your workflow is tier-driven.\n\n### Inspect current subscription pricing before changes\nUse the summary view first when you want a compact current-state snapshot.\n\n```bash\nasc subscriptions pricing summary --subscription-id \"SUB_ID\" --territory \"USA\"\nasc subscriptions pricing summary --subscription-id \"SUB_ID\" --territory \"IND\"\nasc subscriptions pricing prices list --subscription-id \"SUB_ID\" --paginate\n```\n\nUse `summary` for quick before/after spot checks and `prices list` when you need raw price records.\n\n### Preferred bulk PPP update: import a CSV with dry run\nFor broad PPP rollouts, prefer the subscription pricing import command instead of manually adding territory prices one by one.\n\nExample CSV:\n\n```csv\nterritory,price,start_date,preserved\nIND,2.99,2026-04-01,false\nBRA,4.99,2026-04-01,false\nMEX,4.99,2026-04-01,false\nDEU,8.99,2026-04-01,false\n```\n\nDry-run first:\n\n```bash\nasc subscriptions pricing prices import \\\n  --subscription-id \"SUB_ID\" \\\n  --input \"./ppp-prices.csv\" \\\n  --dry-run \\\n  --output table\n```\n\nApply for real:\n\n```bash\nasc subscriptions pricing prices import \\\n  --subscription-id \"SUB_ID\" \\\n  --input \"./ppp-prices.csv\" \\\n  --output table\n```\n\nNotes:\n- `--dry-run` validates rows and resolves price points without creating prices.\n- `--continue-on-error=false` gives you a fail-fast mode.\n- CSV required columns: `territory`, `price`\n- CSV optional columns: `currency_code`, `start_date`, `preserved`, `preserve_current_price`, `price_point_id`\n- When `price_point_id` is omitted, the CLI resolves the matching price point for the row's territory and price automatically.\n- Territory inputs in import can be 3-letter IDs, 2-letter codes, or common territory names that map cleanly.\n\n### One-off subscription territory changes\nFor a small number of manual overrides, use the canonical `set` command.\n\n```bash\nasc subscriptions pricing prices set --subscription-id \"SUB_ID\" --price \"2.99\" --territory \"IND\"\nasc subscriptions pricing prices set --subscription-id \"SUB_ID\" --tier 5 --territory \"BRA\"\nasc subscriptions pricing prices set --subscription-id \"SUB_ID\" --price-point \"PRICE_POINT_ID\" --territory \"DEU\"\n```\n\nNotes:\n- Add `--start-date \"YYYY-MM-DD\"` to schedule a future change.\n- Add `--preserved` when you want to preserve the current price relationship.\n- The command handles both initial pricing and later price changes.\n\n### Discover raw price points only when you need them\nUse price-point lookup and equalizations when you want to inspect Apple's localized ladder directly or pin exact price point IDs.\n\n```bash\nasc subscriptions pricing price-points list --subscription-id \"SUB_ID\" --territory \"USA\" --paginate --price \"9.99\"\nasc subscriptions pricing price-points equalizations --price-point-id \"PRICE_POINT_ID\" --paginate\n```\n\n### Verify after apply\nRe-run the summary and raw list views after changes.\n\n```bash\nasc subscriptions pricing summary --subscription-id \"SUB_ID\" --territory \"IND\"\nasc subscriptions pricing summary --subscription-id \"SUB_ID\" --territory \"BRA\"\nasc subscriptions pricing prices list --subscription-id \"SUB_ID\" --paginate\n```\n\nIf the subscription was newly created, you can also use `asc subscriptions setup` with verification enabled instead of stitching together separate create and pricing steps.\n\n### Subscription availability\nIf you need to explicitly enable territories for an existing subscription, use the pricing availability family.\n\n```bash\nasc subscriptions pricing availability edit --subscription-id \"SUB_ID\" --territories \"USA,CAN,IND,BRA\"\nasc subscriptions pricing availability view --subscription-id \"SUB_ID\"\n```\n\n## IAP PPP workflow\n\n### New IAP: bootstrap with `setup`\nUse `setup` when you are creating a new IAP and want to create the product, first localization, and initial price schedule in one verified flow.\n\n```bash\nasc iap setup \\\n  --app \"APP_ID\" \\\n  --type NON_CONSUMABLE \\\n  --reference-name \"Pro Lifetime\" \\\n  --product-id \"com.example.pro.lifetime\" \\\n  --locale \"en-US\" \\\n  --display-name \"Pro Lifetime\" \\\n  --description \"Unlock everything forever\" \\\n  --price \"9.99\" \\\n  --base-territory \"USA\" \\\n  --output json\n```\n\nNotes:\n- `setup` verifies the created IAP, localization, and price schedule by default.\n- Use `--start-date` for scheduled pricing.\n- Use `--tier` or `--price-point-id` when you want deterministic tier- or ID-based setup.\n\n### Inspect current IAP pricing before changes\nUse `asc iap pricing summary` as the main current-state summary for PPP work.\n\n```bash\nasc iap pricing summary --iap-id \"IAP_ID\" --territory \"USA\"\nasc iap pricing summary --iap-id \"IAP_ID\" --territory \"IND\"\n```\n\nThis returns the base territory, current price, estimated proceeds, and scheduled changes for the requested territory.\n\n### Discover candidate IAP price points\nUse price-point lookup when you want to inspect or pin exact price point IDs.\n\n```bash\nasc iap pricing price-points list --iap-id \"IAP_ID\" --territory \"USA\" --paginate --price \"9.99\"\nasc iap pricing price-points equalizations --id \"PRICE_POINT_ID\"\n```\n\n### Create or update an IAP price schedule\nFor manual PPP updates, create a price schedule directly.\n\n```bash\nasc iap pricing schedules create --iap-id \"IAP_ID\" --base-territory \"USA\" --price \"4.99\" --start-date \"2026-04-01\"\nasc iap pricing schedules create --iap-id \"IAP_ID\" --base-territory \"USA\" --tier 5 --start-date \"2026-04-01\"\nasc iap pricing schedules create --iap-id \"IAP_ID\" --base-territory \"USA\" --prices \"PRICE_POINT_ID:2026-04-01\"\n```\n\nUse these when you are intentionally creating or replacing schedule entries. For deeper inspection:\n\n```bash\nasc iap pricing schedules view --iap-id \"IAP_ID\"\nasc iap pricing schedules manual-prices --schedule-id \"SCHEDULE_ID\" --paginate\nasc iap pricing schedules automatic-prices --schedule-id \"SCHEDULE_ID\" --paginate\n```\n\n### Verify after apply\nUse the summary command again after scheduling or applying pricing changes.\n\n```bash\nasc iap pricing summary --iap-id \"IAP_ID\" --territory \"USA\"\nasc iap pricing summary --iap-id \"IAP_ID\" --territory \"IND\"\n```\n\nFor future-dated schedules, expect scheduled changes rather than an immediately updated current price.\n\n## Common PPP strategy patterns\n\n### Base territory first\n- Pick one baseline territory, usually `USA`.\n- Set the baseline price there first.\n- Derive lower or higher territory targets from that baseline.\n\n### Tiered regional pricing\n- High-income markets stay close to baseline.\n- Mid-income markets get moderate discounts.\n- Lower-income markets get stronger PPP adjustments.\n\n### Spreadsheet-driven rollout\n- Build the target territory list in a CSV.\n- Dry-run the import.\n- Fix any resolution failures.\n- Apply the import.\n- Re-run summary checks for the most important territories.\n\n## Notes\n- Prefer canonical commands in docs and automation: `asc subscriptions pricing ...`\n- Older `asc subscriptions prices ...` paths still exist, but the canonical pricing family is clearer.\n- Prefer canonical IAP commands in docs and automation: `asc iap pricing ...`\n- `asc subscriptions pricing prices import --dry-run` is the safest subscription batch PPP path today.\n- `asc subscriptions setup` and `asc iap setup` already provide built-in post-create verification.\n- There is not yet a single first-class before/after PPP diff command; use the current summary commands before and after apply.\n- Price changes may take time to propagate in App Store Connect and storefronts.","tags":["asc","ppp","pricing","app","store","connect","cli","skills","rorkai","agent-skills","ai-skills","app-store-connect"],"capabilities":["skill","source-rorkai","skill-asc-ppp-pricing","topic-agent-skills","topic-ai-skills","topic-app-store-connect","topic-apple","topic-asc","topic-automation","topic-cicd","topic-cli","topic-devops","topic-ios","topic-macos","topic-testflight"],"categories":["app-store-connect-cli-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/rorkai/app-store-connect-cli-skills/asc-ppp-pricing","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add rorkai/app-store-connect-cli-skills","source_repo":"https://github.com/rorkai/app-store-connect-cli-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 776 github stars · SKILL.md body (8,998 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T18:53:02.404Z","embedding":null,"createdAt":"2026-04-18T21:56:47.535Z","updatedAt":"2026-05-02T18:53:02.404Z","lastSeenAt":"2026-05-02T18:53:02.404Z","tsv":"'-01':384,390,396,402,1067,1089,1110 '-04':383,389,395,401,1066,1088,1109 '/ppp-prices.csv':420,441 '2':518 '2.99':381,558 '2026':382,388,394,400,1065,1087,1108 '3':515 '4.99':387,393,1061 '5':572,1083 '8.99':399 '9.99':224,677,876,1017 'across':55 'ad':366 'add':594,607 'adjust':31,1267 'alreadi':1361 'also':749 'app':15,124,128,189,190,847,848,1400 'appl':649 'appli':426,695,1164,1173,1289,1391 'asc':2,19,76,80,90,97,102,115,119,123,140,186,294,305,316,409,430,547,561,575,661,678,708,719,730,751,785,800,844,926,941,952,1001,1018,1046,1068,1090,1126,1136,1149,1177,1188,1310,1314,1335,1338,1354,1358 'asc-ppp-pric':1 'auth':116 'autom':1309,1334 'automat':508,1154 'automatic-pric':1153 'avail':180,767,782,788,803 'base':57,132,878,917,966,1057,1079,1101,1218 'base-territori':877,1056,1078,1100 'baselin':137,1223,1229,1241,1252 'bash':185,293,408,429,546,660,707,784,843,940,1000,1045,1125,1176 'batch':1350 'before/after':331,1379 'bootstrap':156,815 'bra':386,574,729,799 'broad':354 'build':1272 'built':1364 'built-in':1363 'bulk':344 'candid':980 'canon':543,1304,1322,1328 'chang':96,109,278,533,606,627,706,924,974,1175,1206,1393 'check':333,1296 'class':1378 'clean':527 'clearer':1326 'cli':495 'close':1250 'code':478,520 'column':471,476 'com.example.pro.lifetime':861 'com.example.pro.monthly':205 'command':28,362,545,619,1168,1305,1330,1382,1387 'common':522,1214 'compact':288 'connect':1402 'consum':852 'continu':458 'continue-on-error':457 'countri':34 'creat':50,86,164,171,239,455,746,762,823,830,887,1029,1040,1050,1072,1094,1117,1368 'credenti':112 'csv':349,373,374,469,474,1279 'currenc':477 'current':18,71,274,290,483,615,920,934,968,1212,1385 'current-st':289,933 'date':378,480,597,898,1064,1086,1202 'dd':601 'decid':130 'deeper':1123 'default':242,894 'deriv':1233 'descript':220,871 'determinist':912 'deu':398,592 'diff':1381 'direct':653,1044 'discount':1259 'discov':628,979 'display':216,867 'display-nam':215,866 'doc':1307,1332 'dri':351,405,422,446,1281,1344 'driven':272,1270 'dry-run':404,421,445,1280,1343 'edit':789 'en':213,864 'en-us':212,863 'enabl':756,773 'ensur':111 'entri':1121 'env':120 'equal':643,684,1024 'error':460 'estim':970 'everyth':222,873 'exact':656,996 'exampl':372 'exist':777,1319 'expect':1204 'explicit':129,250,772 'fail':466 'fail-fast':465 'failur':1288 'fals':385,391,397,403,461 'famili':783,1324 'fast':467 'first':175,283,407,833,1220,1232,1377 'first-class':1376 'fix':1285 'flow':75,184,842 'forev':874 'futur':605,1201 'future-d':1200 'gbr':232 'get':1257,1264 'give':462 'group':173,193 'group-reference-nam':192 'handl':620 'high':73,1246 'high-incom':1245 'high-level':72 'higher':1236 'iap':81,98,103,107,810,814,826,845,888,921,927,942,946,948,953,957,959,981,1002,1009,1011,1019,1033,1047,1052,1054,1069,1074,1076,1091,1096,1098,1127,1132,1134,1137,1150,1178,1182,1184,1189,1193,1195,1329,1336,1359 'iap-id':945,956,1008,1051,1073,1095,1131,1181,1192 'id':125,150,191,204,262,300,302,311,313,323,325,416,418,437,439,487,491,517,554,556,568,570,582,584,590,659,670,672,688,691,714,716,725,727,737,739,792,794,807,809,849,860,908,916,947,949,958,960,999,1010,1012,1025,1028,1053,1055,1075,1077,1097,1099,1107,1133,1135,1145,1147,1158,1160,1183,1185,1194,1196 'id-bas':915 'immedi':1210 'implement':36 'import':24,347,361,413,434,512,1284,1291,1300,1342 'in-app':13 'incom':1247,1255,1262 'ind':315,380,560,718,798,962,1198 'initi':177,622,836 'input':419,440,510 'inspect':273,648,919,993,1124 'instead':263,363,757 'intent':1116 'json':234,882 'ladder':652 'later':625 'letter':516,519 'level':74 'lifetim':857,870 'list':143,320,336,667,703,734,1007,1276 'local':37,53,176,211,651,834,862,889 'login':117 'lookup':641,988 'lower':1234,1261 'lower-incom':1260 'main':932 'manual':365,539,1037,1141 'manual-pric':1140 'map':526 'market':1248,1256,1263 'match':498 'may':1394 'mex':392 'mid':1254 'mid-incom':1253 'mm':600 'mode':468 'moder':1258 'month':201,210,219 'name':195,199,217,524,855,868 'need':147,339,635,770 'new':88,154,166,813,825 'newli':745 'no-verifi':244 'non':851 'note':235,444,593,883,1302 'number':537 'older':1313 'omit':493 'one':182,209,369,371,529,840,1222 'one-off':528 'option':475 'output':233,424,442,881 'overrid':540 'pagin':144,326,675,692,740,1015,1148,1161 'pariti':61 'pass':127 'path':1317,1352 'pattern':1217 'per':43 'per-territori':42 'period':208 'pick':1221 'pin':655,995 'point':261,453,486,490,500,587,589,631,640,658,666,683,687,690,907,983,987,998,1006,1023,1027,1106 'post':1367 'post-creat':1366 'power':60 'ppp':3,38,40,62,152,345,355,811,938,1038,1215,1266,1351,1380 'precondit':110 'prefer':69,122,343,357,1303,1327 'preserv':379,481,482,608,613 'price':4,9,21,23,26,32,41,45,54,67,92,95,99,104,108,138,141,178,223,226,260,265,276,296,307,318,319,335,341,360,368,376,411,412,432,433,452,456,473,484,485,489,499,507,549,550,557,563,564,577,578,586,588,616,623,626,630,639,657,663,665,676,680,682,686,689,710,721,732,733,764,781,787,802,837,875,891,901,906,922,928,943,954,969,982,986,997,1003,1005,1016,1020,1022,1026,1034,1042,1048,1060,1070,1092,1104,1105,1128,1138,1142,1151,1155,1174,1179,1190,1213,1230,1244,1312,1316,1323,1337,1340,1341,1392 'price-point':585,638,664,681,985,1004,1021 'price-point-id':259,685,905 'price-territori':225 'pro':196,200,218,856,869 'proceed':971 'product':89,203,832,859 'product-id':202,858 'propag':1398 'provid':1362 'purchas':16,59 'quick':330 'rather':1207 'raw':340,629,702 're':697,1293 're-run':696,1292 'readback':254 'real':428 'record':342 'refer':194,198,854 'reference-nam':197,853 'region':66,1243 'relationship':617 'replac':1119 'request':977 'requir':470 'resolut':1287 'resolv':451,496 'return':964 'rollout':356,1271 'row':449,503 'run':352,406,423,447,698,1282,1294,1345 'safest':1348 'schedul':27,105,603,838,892,900,973,1035,1043,1049,1071,1093,1120,1129,1139,1144,1146,1152,1157,1159,1171,1203,1205 'schedule-id':1143,1156 'separ':761 'set':5,114,544,551,565,579,1227 'setup':20,78,82,158,160,188,236,753,817,819,846,884,918,1356,1360 'singl':1375 'skill':48 'skill-asc-ppp-pricing' 'small':536 'snapshot':292 'source-rorkai' 'specif':8 'speed':252 'spot':332 'spreadsheet':1269 'spreadsheet-driven':1268 'start':377,479,596,897,1063,1085 'start-dat':595,896,1062,1084 'state':240,291,935 'stay':1249 'step':765 'still':1318 'stitch':759 'store':1401 'storefront':1404 'strategi':39,68,1216 'stronger':1265 'sub':301,312,324,417,438,555,569,583,671,715,726,738,793,808 'subscript':11,77,91,94,151,155,167,174,187,207,275,295,299,306,310,317,322,359,410,415,431,436,531,548,553,562,567,576,581,662,669,679,709,713,720,724,731,736,743,752,766,778,786,791,801,806,1311,1315,1339,1349,1355 'subscription-id':298,309,321,414,435,552,566,580,668,712,723,735,790,805 'subscription-period':206 'summari':22,100,281,297,308,328,700,711,722,929,936,944,955,1167,1180,1191,1295,1386 'support':148 'tabl':425,443 'take':1395 'target':1238,1274 'territori':7,44,56,133,142,149,227,229,303,314,367,375,472,505,509,523,532,559,573,591,673,717,728,774,795,879,950,961,967,978,1013,1058,1080,1102,1186,1197,1219,1224,1237,1275,1301 'territory-specif':6 'tier':257,271,571,903,913,1082,1242 'tier-driven':270 'time':1396 'today':1353 'togeth':760 'topic-agent-skills' 'topic-ai-skills' 'topic-app-store-connect' 'topic-apple' 'topic-asc' 'topic-automation' 'topic-cicd' 'topic-cli' 'topic-devops' 'topic-ios' 'topic-macos' 'topic-testflight' 'type':850 'unlock':221,872 'updat':52,346,1031,1039,1211 'us':214,865 'usa':135,228,230,304,674,796,880,951,1014,1059,1081,1103,1187,1226 'use':17,29,46,139,159,243,256,279,327,541,637,750,779,818,895,902,925,984,1111,1165,1383 'usual':134,1225 'valid':448 'var':121 'verif':255,755,1369 'verifi':183,237,246,693,841,885,1162 'view':282,704,804,1130 'want':169,251,286,611,646,828,911,991 'without':454 'work':939 'workflow':153,268,812 'yet':1373 'yyyi':599 'yyyy-mm-dd':598","prices":[{"id":"dc4af59c-867d-40df-afcb-443e91e45ff4","listingId":"0283a75e-a241-4edd-b102-b15aaa3103c6","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"rorkai","category":"app-store-connect-cli-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:56:47.535Z"}],"sources":[{"listingId":"0283a75e-a241-4edd-b102-b15aaa3103c6","source":"github","sourceId":"rorkai/app-store-connect-cli-skills/asc-ppp-pricing","sourceUrl":"https://github.com/rorkai/app-store-connect-cli-skills/tree/main/skills/asc-ppp-pricing","isPrimary":false,"firstSeenAt":"2026-04-18T21:56:47.535Z","lastSeenAt":"2026-05-02T18:53:02.404Z"}],"details":{"listingId":"0283a75e-a241-4edd-b102-b15aaa3103c6","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"rorkai","slug":"asc-ppp-pricing","github":{"repo":"rorkai/app-store-connect-cli-skills","stars":776,"topics":["agent-skills","ai-skills","app-store-connect","apple","asc","automation","cicd","cli","devops","ios","macos","testflight","xcode"],"license":"mit","html_url":"https://github.com/rorkai/app-store-connect-cli-skills","pushed_at":"2026-04-24T08:59:37Z","description":"Skills to automate app store deployed and everything related to it using the asc cli","skill_md_sha":"989701bce17c7fb740fa96e480bc6fbbf69aac08","skill_md_path":"skills/asc-ppp-pricing/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/rorkai/app-store-connect-cli-skills/tree/main/skills/asc-ppp-pricing"},"layout":"multi","source":"github","category":"app-store-connect-cli-skills","frontmatter":{"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."},"skills_sh_url":"https://skills.sh/rorkai/app-store-connect-cli-skills/asc-ppp-pricing"},"updatedAt":"2026-05-02T18:53:02.404Z"}}