External Purchase
Enable qualifying apps to offer external purchases.
Overview
The External Purchase APIs allow qualifying apps to implement external purchases. External purchases allow customers to complete purchases:
within the app, using an alternative payment service provider
outside of the app, after linking-out of the app
If you develop a qualifying app, you may complete a request for optional entitlements that allow you to offer external purchases. For more information about whether your app qualifies, requesting an entitlement, and implementation requirements, see:
Communication and promotion of offers on the App Store in the EU
Distributing apps in Russia that provide an external purchase link
Distributing apps using a third-party payment provider in South Korea
Distributing music streaming apps in the EEA that provide an external purchase link
Use the API based on the entitlements your app receives and the regions where your app runs.
Implement external purchases using alternative payment service providers in the European Union (EU) and South Korea
If your account receives the StoreKit External Purchase entitlement or the StoreKit External Purchase Regions entitlement, implement the following to offer external purchases within your app:
Configure the com.apple.developer.storekit.external-purchase entitlement for your app and the SKExternalPurchase property list key.
Use the ExternalPurchase type’s canPresent property to determine whether external purchase is available. If the value is
false, don’t continue to use this API. See canPresent for more details.Call the presentNoticeSheet() method and use the external purchase token you receive from the ExternalPurchase.NoticeResult.continuedWithExternalPurchaseToken(token:) result to record transactions.
From your server, report the external purchase tokens and the transactions associated with the tokens by using the External Purchase Server API.
Implement external purchase for apps available in the EU
If your account receives the StoreKit External Purchase Link entitlement or the StoreKit External Custom Purchase Link Regions entitlement, in the EU your app can use the ExternalPurchaseCustomLink API to implement external purchases. To use this API, complete the following steps:
Depending on the entitlement you receive, configure the com.apple.developer.storekit.custom-purchase-link.allowed-regions entitlement for your app, or the com.apple.developer.storekit.external-purchase-link entitlement and the SKExternalPurchaseCustomLinkRegions property list key, providing the country code for each permitted region where your app implements external purchases.
Check the isEligible property of the ExternalPurchaseCustomLink API to determine whether the API is available at runtime. If the value is
false, don’t continue to use this API. For more information, see isEligible.At launch and before every potential transaction, call the token(for:) function to request the external purchase tokens, using the token types
ACQUISITIONandSERVICES. Associate these tokens with a customer account on your server.Call the showNotice(type:) function after a deliberate customer interaction, such as tapping a button, that can lead to a potential external purchase.
From your server, report the external purchase tokens and the transactions associated with the tokens by using the External Purchase Server API.
Implement external purchase for apps available in Japan
If your account receives the StoreKit External Custom Purchase Link Regions entitlement, in Japan your app can use the ExternalPurchaseCustomLink API to implement external purchases starting in iOS 26.2. To use this API, complete the following steps:
Configure the com.apple.developer.storekit.custom-purchase-link.allowed-regions entitlement for your app.
Check the isEligible property of the ExternalPurchaseCustomLink API to determine whether the API is available at runtime. If the value is
false, don’t continue to use this API. For more information, see isEligible.Starting in iOS 26.4, call the token(for:) function before every potential transaction to request external purchase tokens, using the token types
IN_APPorLINK_OUT. For more information, see token(for:).Before routing customers to external purchase options, display an in-app disclosure sheet that lets people know they’ll be transacting with you and not Apple. For more information, including downloadable resources, see the “In-app disclosure sheet” section of Payment options on the App Store in Japan.
Starting in iOS 26.4, report the external purchase tokens and the transactions associated with the tokens using the External Purchase Server API. Otherwise, report transactions as indicated in Payment options on the App Store in Japan.
Implement external purchase for music streaming apps in the European Economic Area (EEA)
If your account receives the Music Streaming Services EEA entitlement, your music-streaming app can use the ExternalPurchaseCustomLink API to implement external purchases. To use this API, complete the following steps:
Configure the com.apple.developer.storekit.external-purchase-link-streaming entitlement for your app and the SKExternalPurchaseLinkStreamingRegions property list key, providing the country code for each permitted region where your app implements external purchase.
Check the isEligible property of the ExternalPurchaseCustomLink API to determine whether external purchase is available at runtime. If the value is
false, don’t continue to use this API. See isEligible for more details.At launch and before every potential transaction, call the token(for:) function to request the external purchase tokens, using the token types
ACQUISITIONandSERVICES. Associate these tokens with a customer account on your server.Call the showNotice(type:) function after a deliberate customer interaction, such as tapping a button, and before offering external purchases.
From your server, report the external purchase tokens and the transactions associated with the tokens by using the External Purchase Server API.
Implement external purchase through multiple links for the European Economic Area (EEA) and Russia
If your account receives the StoreKit External Purchase Link entitlement or the StoreKit External Purchase Link Regions entitlement, in the EEA and Russia you can implement the following to offer multiple external purchase links:
Configure the com.apple.developer.storekit.external-purchase-link entitlement for your app.
Configure the SKExternalPurchaseMultiLink property list key, providing one or more external purchase links for each permitted country code.
Use the ExternalPurchaseLink type’s eligibleURLs array to determine whether one or more external purchase links are available, then select one of those eligible URLs. If the value is
nil, see eligibleURLs for more information.Call the open(url:) method with the URL you select. StoreKit appends the external purchase token to your website’s URL. Use this token to record purchases.
From your server, report the external purchase tokens and the transactions associated with the tokens by using the External Purchase Server API.
Implement external purchase through single links for the European Economic Area (EEA) and Russia
If your account receives the StoreKit External Purchase Link entitlement or the StoreKit External Purchase Link Regions entitlement, implement the following to offer a single external purchase link for each country code:
Configure the com.apple.developer.storekit.external-purchase-link entitlement for your app.
Configure the SKExternalPurchaseLink property list key, providing one external purchase link for each permitted country code.
Use the ExternalPurchaseLink type’s canOpen property to determine whether external purchase link is available. If the value is
false, don’t continue to use this API. For more information, see canOpen.Call the open() method. StoreKit appends the external purchase token to your website’s URL. Use this token to record purchases.
From your server, report the external purchase tokens and the transactions associated with the tokens by using the External Purchase Server API.
Your app may configure both the SKExternalPurchaseLink and SKExternalPurchaseMultiLink property list keys.
Record and report external purchase tokens and associated transactions
An external purchase token is a unique string that your app or website receives when your app’s customer chooses to view your external purchase offerings. Record all tokens in your system and report them and their associated transactions using the External Purchase Server API. For more information about tokens, see Receiving and decoding external purchase tokens.
Check API availability
The External Purchase APIs, including ExternalPurchaseLink, ExternalPurchase, and ExternalPurchaseCustomLink provide external purchase tokens that you use to report transactions to Apple:
ExternalPurchaseLink and ExternalPurchase are available starting in iOS 17.4, iPadOS 17.4, macOS 14.4, Mac Catalyst 17.4, tvOS 17.4, visionOS 1.1, and watchOS 10.4.
ExternalPurchaseCustomLink is available starting in iOS 18.1, iPadOS 18.1, Mac Catalyst 18.1, and macOS 15.1; for use in Japan, it’s available starting in iOS 26.2, with token(for:) available starting in iOS 26.4.
For apps that run on iOS 15.4 through 17.3 and iPadOS 15.4 through 17.3, the External Purchase APIs have the following behavior:
ExternalPurchase and ExternalPurchaseLink APIs throw errors or return
falsefor compatible iPad or iPhone apps running in visionOS, on a Mac with Apple silicon, or on a Mac app built with Mac Catalyst.The APIs don’t provide external purchase tokens.
The APIs are available in iOS and iPadOS only.
Topics
Managing external purchase tokens
Implementing alternative payment service providers in the EU and South Korea
Implementing external purchases in the EU
ExternalPurchaseCustomLinkExternalPurchaseCustomLink.Tokencom.apple.developer.storekit.custom-purchase-link.allowed-regionscom.apple.developer.storekit.external-purchase-linkSKExternalPurchaseCustomLinkRegionsTesting transactions that use custom link tokens
Implementing external purchases in Japan
Implementing external purchases for music streaming services in the EU
ExternalPurchaseCustomLinkcom.apple.developer.storekit.external-purchase-link-streamingSKExternalPurchaseLinkStreamingRegions