<!--
{
  "availability" : [

  ],
  "documentType" : "symbol",
  "framework" : "AdvancedCommerceAPI",
  "identifier" : "/documentation/AdvancedCommerceAPI",
  "metadataVersion" : "0.1.0",
  "role" : "Web Service",
  "symbol" : {
    "kind" : "Web Service",
    "modules" : [
      "Advanced Commerce API"
    ],
    "preciseIdentifier" : "AdvancedCommerceAPI"
  },
  "title" : "Advanced Commerce API"
}
-->

# Advanced Commerce API

Support In-App Purchases through the App Store for exceptionally large catalogs of custom one-time purchases, subscriptions, and subscriptions with optional add-ons.

## Overview

Use this framework to offer an exceptionally large catalog of one-time purchases, subscriptions, and subscriptions with optional add-ons while using the App Store commerce system. Apps that use this API host and manage their own catalog of In-App Purchases, or SKUs. The App Store commerce system handles the end-to-end payment processing, global distribution, tax support, and customer service.

You can use the Advanced Commerce API and the StoreKit <doc://com.apple.documentation/documentation/StoreKit/in-app-purchase> API in the same app. Both APIs use the App Store commerce system, including the same signed JWS transactions and JWS renewal info. For products that you offer using the In-App Purchase API, you set up product identifiers in App Store Connect. For products that you offer using the Advanced Commerce API, you host and manage your own catalog of SKUs and add product details dynamically at runtime. For complete setup information, see [Setting up your project for Advanced Commerce API](/documentation/AdvancedCommerceAPI/setting-up-your-project-for-advanced-commerce).

Advanced Commerce API features are available through requests you make using StoreKit in your app and endpoint requests from your server. To authorize these requests, you generate JSON Web Tokens (JWTs). The App Store Server Library provides a client that makes it easier to create JWTs to authorize calls. For more information about the library, see <doc://com.apple.documentation/documentation/AppStoreServerAPI/simplifying-your-implementation-by-using-the-app-store-server-library>. For more information about authorizing calls, see <!-- ><doc:authorizing-in-app-calls> and --> [Authorizing API requests from your server](/documentation/AdvancedCommerceAPI/authorizing-server-calls).

Your server must support the Transport Layer Security (TLS) protocol 1.2 or later to call the Advanced Commerce API.

> Important: To learn more about eligibility and apply for access to the Advanced Commerce API, see [Advanced Commerce API](https://developer.apple.com/in-app-purchase/advanced-commerce-api/). For more about eligibility and to apply for access to the Mini Apps Partner Program, see [Mini Apps Partner Program](https://developer.apple.com/programs/mini-apps-partner/).

## Topics

### Essentials

[Setting up your project for Advanced Commerce API](/documentation/AdvancedCommerceAPI/setting-up-your-project-for-advanced-commerce)

Configure your app in App Store Connect, set up your server, and prepare your SKUs.

[Setting up a link to manage subscriptions](/documentation/AdvancedCommerceAPI/setupmanagesubscriptions)

Create a deep link to a subscription-management page for your app.

[Advanced Commerce API changelog](/documentation/AdvancedCommerceAPI/changelog)

Learn about new features and updates in the Advanced Commerce API.

### API authorization and rate limits

[Authorizing API requests from your server](/documentation/AdvancedCommerceAPI/authorizing-server-calls)

Create JSON Web Tokens (JWTs) to authorize Advanced Commerce requests from your server.

[Identifying rate limits for Advanced Commerce APIs](/documentation/AdvancedCommerceAPI/ratelimits)

Recognize and handle the rate limits that apply to Advanced Commerce API endpoints.

### Generic product IDs and SKUs

[Setting up generic product identifiers](/documentation/AdvancedCommerceAPI/setting-up-generic-product-identifiers)

Configure the generic product IDs in App Store Connect that the Advanced Commerce API requires.

[Creating SKUs for your In-App Purchases](/documentation/AdvancedCommerceAPI/creating-your-purchases)

Define and manage one-time charges, subscriptions, and bundled subscriptions within your app.

[Creating SKUs for the Mini Apps Partner Program](/documentation/AdvancedCommerceAPI/creating-skus-for-the-mini-app-partner-program)

Define display names and SKUs for one-time charges and subscriptions in the Mini Apps Partner Program.

### Tax codes and pricing

[Specifying prices for Advanced Commerce SKUs](/documentation/AdvancedCommerceAPI/prices)

Provide prices for SKUs with the supported number of decimal places, in milliunits of currency.

[Choosing tax codes for your SKUs](/documentation/AdvancedCommerceAPI/taxcodes)

Select a tax code for each SKU that represents a product your app offers as an in-app purchase.

[Handling subscription price changes](/documentation/AdvancedCommerceAPI/handling-subscription-price-changes)

Initiate a price change and manage communications with your subscribers through the App Store.

### In-app API requests

  <doc://com.apple.documentation/documentation/StoreKit/sending-advanced-commerce-api-requests-from-your-app>

  <doc://com.apple.documentation/documentation/StoreKit/generating-jws-to-sign-app-store-requests>



<!--  ### Life cycle and workflow
- <doc:notifications>
- <doc:lifecycleSub>
- <doc:lifecycleOnetimecharge>  -->

### One-time charge creation in the app

[`OneTimeChargeCreateRequest`](/documentation/AdvancedCommerceAPI/OneTimeChargeCreateRequest)

The request data your app provides when a customer purchases a one-time-charge product.

[`OneTimeChargeItem`](/documentation/AdvancedCommerceAPI/OneTimeChargeItem)

The details of a one-time charge product, including its display name, price, SKU, and metadata.

### Subscription creation in the app

[`SubscriptionCreateRequest`](/documentation/AdvancedCommerceAPI/SubscriptionCreateRequest)

The request data your app provides when a customer purchases an auto-renewable subscription.

[`SubscriptionCreateItem`](/documentation/AdvancedCommerceAPI/SubscriptionCreateItem)

The data that describes a subscription item.

### Subscription modification in the app

[`SubscriptionModifyInAppRequest`](/documentation/AdvancedCommerceAPI/SubscriptionModifyInAppRequest)

The request data your app provides to make changes to an auto-renewable subscription.

[`SubscriptionModifyAddItem`](/documentation/AdvancedCommerceAPI/SubscriptionModifyAddItem)

The data your app provides to add items when it makes changes to an auto-renewable subscription.

[`SubscriptionModifyChangeItem`](/documentation/AdvancedCommerceAPI/SubscriptionModifyChangeItem)

The data your app provides to change an item of an auto-renewable subscription.

[`SubscriptionModifyRemoveItem`](/documentation/AdvancedCommerceAPI/SubscriptionModifyRemoveItem)

The data your app provides to remove an item from an auto-renewable subscription.

[`SubscriptionModifyPeriodChange`](/documentation/AdvancedCommerceAPI/SubscriptionModifyPeriodChange)

The data your app provides to change the period of an auto-renewable subscription.

### Subscription reactivation in the app

[`SubscriptionReactivateInAppRequest`](/documentation/AdvancedCommerceAPI/SubscriptionReactivateInAppRequest)

The request your app provides to reactivate a subscription that has automatic renewal turned off.

[`SubscriptionReactivateItem`](/documentation/AdvancedCommerceAPI/SubscriptionReactivateItem)

An item in a subscription to reactive.

### Subscription price change from the server

[`Change Subscription Price`](/documentation/AdvancedCommerceAPI/Change-Subscription-Price)

Increase or decrease the price of an auto-renewable subscription, a bundle, or individual items within a subscription at the next renewal.

[`SubscriptionPriceChangeRequest`](/documentation/AdvancedCommerceAPI/SubscriptionPriceChangeRequest)

The request body you use to change the price of an auto-renewable subscription.

[`SubscriptionPriceChangeResponse`](/documentation/AdvancedCommerceAPI/SubscriptionPriceChangeResponse)

A response that contains signed JWS renewal and JWS transaction information after a subscription price change request.

### Subscription cancellation from the server

[`Cancel a Subscription`](/documentation/AdvancedCommerceAPI/Cancel-a-Subscription)

Turn off automatic renewal to cancel a customer’s auto-renewable subscription.

[`SubscriptionCancelRequest`](/documentation/AdvancedCommerceAPI/SubscriptionCancelRequest)

The request body for turning off automatic renewal of a subscription.

[`SubscriptionCancelResponse`](/documentation/AdvancedCommerceAPI/SubscriptionCancelResponse)

The response body for a successful subscription cancellation.

### Subscription revocation from the server

[`Revoke Subscription`](/documentation/AdvancedCommerceAPI/Revoke-Subscription)

Immediately cancel a customer’s subscription and all the items that are included in the subscription, and request a full or prorated refund.

[`SubscriptionRevokeRequest`](/documentation/AdvancedCommerceAPI/SubscriptionRevokeRequest)

The request body you provide to terminate a subscription and all its items immediately.

[`SubscriptionRevokeResponse`](/documentation/AdvancedCommerceAPI/SubscriptionRevokeResponse)

The response body for a successful revoke-subscription request.

### Refund request from the server

[`Request Transaction Refund`](/documentation/AdvancedCommerceAPI/Request-Transaction-Refund)

Request a refund for a one-time charge or subscription transaction.

[`RequestRefundRequest`](/documentation/AdvancedCommerceAPI/RequestRefundRequest)

The request body for requesting a refund for a transaction.

[`RequestRefundResponse`](/documentation/AdvancedCommerceAPI/RequestRefundResponse)

The response body for a transaction refund request.

[`RequestRefundItem`](/documentation/AdvancedCommerceAPI/RequestRefundItem)

Information about the refund request for an item, such as its SKU, the refund amount, reason, and type.

### Subscription metadata changes from the server

[`Change Subscription Metadata`](/documentation/AdvancedCommerceAPI/Change-Subscription-Metadata)

Update the SKU, display name, and description associated with a subscription, without affecting the subscription’s billing or its service.

[`SubscriptionChangeMetadataRequest`](/documentation/AdvancedCommerceAPI/SubscriptionChangeMetadataRequest)

The request body you provide to change the metadata of a subscription.

[`SubscriptionChangeMetadataResponse`](/documentation/AdvancedCommerceAPI/SubscriptionChangeMetadataResponse)

The response body for a successful subscription metadata change.

[`SubscriptionChangeMetadataDescriptors`](/documentation/AdvancedCommerceAPI/SubscriptionChangeMetadataDescriptors)

The subscription metadata to change, specifically the description and display name.

[`SubscriptionChangeMetadataItem`](/documentation/AdvancedCommerceAPI/SubscriptionChangeMetadataItem)

The metadata to change for an item, specifically its SKU, description, and display name.

### Migration from the server

[`Migrate a Subscription to Advanced Commerce API`](/documentation/AdvancedCommerceAPI/Migrate-Subscription-to-Advanced-Commerce-API)

Migrate a subscription that a customer purchased through In-App Purchase to a subscription you manage using the Advanced Commerce API.

[`SubscriptionMigrateRequest`](/documentation/AdvancedCommerceAPI/SubscriptionMigrateRequest)

The subscription details you provide to migrate a subscription from In-App Purchase to the Advanced Commerce API, such as descriptors, items, storefront, and more.

[`SubscriptionMigrateResponse`](/documentation/AdvancedCommerceAPI/SubscriptionMigrateResponse)

A response that contains signed renewal and transaction information after a subscription successfully migrates to the Advanced Commerce API.

[`SubscriptionMigrateItem`](/documentation/AdvancedCommerceAPI/SubscriptionMigrateItem)

The SKU, description, and display name to use for a migrated subscription item.

[`SubscriptionMigrateRenewalItem`](/documentation/AdvancedCommerceAPI/SubscriptionMigrateRenewalItem)

The item information that replaces a migrated subscription item when the subscription renews.

[`SubscriptionMigrateDescriptors`](/documentation/AdvancedCommerceAPI/SubscriptionMigrateDescriptors)

The description and display name of the subscription to migrate to that you manage.

### Objects and types

[Data types](/documentation/AdvancedCommerceAPI/datatypes)

Objects and data types for the Advanced Commerce API.

### Signed transaction information

[`JWSRenewalInfo`](/documentation/AdvancedCommerceAPI/JWSRenewalInfo)

Subscription renewal information signed by the App Store, in JSON Web Signature (JWS) format.

[`JWSTransaction`](/documentation/AdvancedCommerceAPI/JWSTransaction)

Transaction information signed by the App Store, in JSON Web Signature (JWS) Compact Serialization format.

### Error handling

[Error messages and codes](/documentation/AdvancedCommerceAPI/errorcodes)

Error messages and codes for the Advanced Commerce API.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)
