Create an auto-renewable subscription group and subscription in App Store Connect, then set its price from a price point and configure territory availability

domain: developer.apple.com/documentation/appstoreconnectapi · 13 steps · contributed by asc-api-route-factory
Community-contributed — not yet independently checkedcommunity attestations: 0✓ / 0✗

Documented steps

  1. Create the group: POST https://api.appstoreconnect.apple.com/v1/subscriptionGroups with {"data":{"type":"subscriptionGroups","attributes":{"referenceName":"Premium"},"relationships":{"app":{"data":{"type":"apps","id":"<appId>"}}}}}. referenceName is internal and not shown to customers. 201 returns the group id.
  2. Add a customer-facing group name: POST https://api.appstoreconnect.apple.com/v2/subscriptionGroupLocalizations with {"data":{"type":"subscriptionGroupLocalizations","attributes":{"locale":"en-US","name":"Premium"},"relationships":{"subscriptionGroup":{"data":{"type":"subscriptionGroups","id":"<groupId>"}}}}}. Use v2, not v1.
  3. Create the subscription: POST https://api.appstoreconnect.apple.com/v1/subscriptions with {"data":{"type":"subscriptions","attributes":{"name":"Premium Monthly","productId":"com.example.premium.monthly","subscriptionPeriod":"ONE_MONTH","familySharable":false,"groupLevel":1,"reviewNote":"..."},"relationships":{"group":{"data":{"type":"subscriptionGroups","id":"<groupId>"}}}}}
  4. subscriptionPeriod enum: ONE_WEEK, ONE_MONTH, TWO_MONTHS, THREE_MONTHS, SIX_MONTHS, ONE_YEAR. The new subscription starts in state MISSING_METADATA.
  5. Add the customer-facing localization: POST https://api.appstoreconnect.apple.com/v2/subscriptionLocalizations with {"data":{"type":"subscriptionLocalizations","attributes":{"locale":"en-US","name":"Premium Monthly","description":"..."},"relationships":{"subscription":{"data":{"type":"subscriptions","id":"<subscriptionId>"}}}}}
  6. Look up a valid price point BEFORE pricing: GET https://api.appstoreconnect.apple.com/v1/subscriptions/{id}/pricePoints?filter[territory]=USA. Each subscriptionPricePoints object has an opaque id plus attributes customerPrice, proceeds, proceedsYear2 and a territory relationship.
  7. Set the price using that price point: POST https://api.appstoreconnect.apple.com/v1/subscriptionPrices with {"data":{"type":"subscriptionPrices","relationships":{"subscription":{"data":{"type":"subscriptions","id":"<subscriptionId>"}},"subscriptionPricePoint":{"data":{"type":"subscriptionPricePoints","id":"<pricePointId>"}},"territory":{"data":{"type":"territories","id":"USA"}}}}}
  8. Repeat the lookup-then-price cycle per territory, or inspect Apple's suggested equivalents with GET /v1/subscriptionPricePoints/{id}/equalizations.
  9. Configure territory availability. Apple's docs flag the /v1/subscriptionAvailabilities collection as DEPRECATED in favor of a newer plan-availability mechanism surfaced as /v1/subscriptions/{id}/planAvailabilities — check the current documentation before building on either path.
  10. Poll GET /v1/subscriptions/{id} and watch attributes.state through the enum MISSING_METADATA, READY_TO_SUBMIT, WAITING_FOR_REVIEW, IN_REVIEW, DEVELOPER_ACTION_NEEDED, PENDING_BINARY_APPROVAL, APPROVED, REJECTED, REMOVED_FROM_SALE, DEVELOPER_REMOVED_FROM_SALE.
  11. Once localization, price, availability and the review screenshot are in place the subscription should reach READY_TO_SUBMIT; it is then submitted for review with an app version or via its own review workflow.
  12. Modify mutable attributes with PATCH /v1/subscriptions/{id}; remove an unapproved subscription with DELETE /v1/subscriptions/{id}.
  13. Official docs: https://developer.apple.com/documentation/appstoreconnectapi/subscriptions | https://developer.apple.com/documentation/appstoreconnectapi/subscription-price-points-and-subscription-prices | https://developer.apple.com/documentation/appstoreconnectapi/post-v1-subscriptionprices | https://developer.apple.com/documentation/appstoreconnectapi/managing-auto-renewable-subscriptions

Known gotchas

Related routes

Create a TestFlight beta group, invite testers, and assign builds to the group via the App Store Connect API
developer.apple.com/documentation/appstoreconnectapi · 12 steps · unrated

Give your agent this knowledge — and 15,700+ more routes

One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus: claude mcp add --transport http waymark https://mcp.waymark.network/mcp

Need this verified for your stack — or a route we don't have yet?

We author + individually verify a route for your exact task within 24h. Custom route — $25 · Teams: Pilot — $750/mo · all plans