<!--
{
  "availability" : [
    "iOS: 15.4.0 -",
    "iPadOS: 15.4.0 -",
    "macCatalyst: 15.4.0 -",
    "macOS: 14.4.0 -",
    "tvOS: 17.4.0 -",
    "visionOS: 1.1.0 -",
    "watchOS: 10.4.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "StoreKit",
  "identifier" : "/documentation/StoreKit/ExternalPurchase/presentNoticeSheet()",
  "metadataVersion" : "0.1.0",
  "role" : "Type Method",
  "symbol" : {
    "kind" : "Type Method",
    "modules" : [
      "StoreKit"
    ],
    "preciseIdentifier" : "s:8StoreKit16ExternalPurchaseO18presentNoticeSheetAC0F6ResultOyYaKFZ"
  },
  "title" : "presentNoticeSheet()"
}
-->

# presentNoticeSheet()

Presents a notice sheet from Apple that informs people of external purchases before showing them, and determines if your app can present external purchases

```
static func presentNoticeSheet() async throws -> ExternalPurchase.NoticeResult
```

## Return Value

This method returns [`ExternalPurchase.NoticeResult`](/documentation/StoreKit/ExternalPurchase/NoticeResult).

## Discussion

This method is only available to apps with the <doc://com.apple.documentation/documentation/BundleResources/Entitlements/com.apple.developer.storekit.external-purchase> entitlement. For more information, see [`ExternalPurchase`](/documentation/StoreKit/ExternalPurchase).

Call this method each time your app is ready to present an external purchase. To use this method, follow these steps:

1. Call [`canPresent`](/documentation/StoreKit/ExternalPurchase/canPresent). If it’s `false`, don’t call [`presentNoticeSheet()`](/documentation/StoreKit/ExternalPurchase/presentNoticeSheet()) and don’t show external purchases.
2. If [`canPresent`](/documentation/StoreKit/ExternalPurchase/canPresent) is `true`, display buttons or other user-interface elements to enable deliberate user interaction. Then, in response to a deliberate user interaction such as tapping a button, call [`presentNoticeSheet()`](/documentation/StoreKit/ExternalPurchase/presentNoticeSheet()) as shown below:

```swift
try await ExternalPurchase.presentNoticeSheet()
```

1. If the result is [`ExternalPurchase.NoticeResult.continuedWithExternalPurchaseToken(token:)`](/documentation/StoreKit/ExternalPurchase/NoticeResult/continuedWithExternalPurchaseToken(token:)) your app can show external purchases. Otherwise, you must not show external purchases.

> Important:
> Record and use the token from the result to report to Apple the customer’s external purchases. For more information on reporting, see <doc://com.apple.documentation/documentation/ExternalPurchaseServerAPI>.

This method throws a [`StoreKitError`](/documentation/StoreKit/StoreKitError) in any of the following conditions:

- The current App Store storefront doesn’t support external purchases.
- The person is ineligible to make external purchases.
- Your app doesn’t have the necessary entitlement.
- Your app doesn’t configure external purchase for the current App Store storefront in <doc://com.apple.documentation/documentation/BundleResources/Information-Property-List/SKExternalPurchase> when it has the <doc://com.apple.documentation/documentation/BundleResources/Entitlements/com.apple.developer.storekit.external-purchase> entitlement.
- A network or system error occurs.

This method also throws a [`StoreKitError`](/documentation/StoreKit/StoreKitError) if its functionality is unavailable for the following reasons:

- Your app is built with Mac Catalyst and you compile with an SDK earlier than iOS 17.4 or iPadOS 17.4.
- Your app is a compatible iPad or iPhone app running in macOS or visionOS and uses an SDK earlier than iOS 17.4 or iPadOS 17.4.

For apps compiled with SDKs earlier than iOS 17.4 or iPadOS 17.4, your app can show external purchases if the result is `ExternalPurchase.NoticeResult.continued`.

---

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)