<!--
{
  "availability" : [
    "iOS: 15.0.0 -",
    "iPadOS: 15.0.0 -",
    "macOS: 12.0.0 -",
    "tvOS: 15.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 8.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "StoreKit",
  "identifier" : "/documentation/StoreKit/Product/PurchaseError",
  "metadataVersion" : "0.1.0",
  "role" : "Enumeration",
  "symbol" : {
    "kind" : "Enumeration",
    "modules" : [
      "StoreKit"
    ],
    "preciseIdentifier" : "s:8StoreKit7ProductV13PurchaseErrorO"
  },
  "title" : "Product.PurchaseError"
}
-->

# Product.PurchaseError

Error information for product purchase errors.

```
enum PurchaseError
```

## Overview

The [`purchase(options:)`](/documentation/StoreKit/Product/purchase(options:)) function may throw a purchase error.

## Topics

### Getting Purchase Error Codes

[`case invalidOfferIdentifier`](/documentation/StoreKit/Product/PurchaseError/invalidOfferIdentifier)

The promotional offer identifier provided in the purchase options is invalid.

[`case productUnavailable`](/documentation/StoreKit/Product/PurchaseError/productUnavailable)

The product isn’t available.

[`case purchaseNotAllowed`](/documentation/StoreKit/Product/PurchaseError/purchaseNotAllowed)

The user isn’t allowed to make purchases.

[`case ineligibleForOffer`](/documentation/StoreKit/Product/PurchaseError/ineligibleForOffer)

The user isn’t eligible for the offer.

[`case invalidOfferPrice`](/documentation/StoreKit/Product/PurchaseError/invalidOfferPrice)

The price of the offer isn’t valid.

[`case invalidOfferSignature`](/documentation/StoreKit/Product/PurchaseError/invalidOfferSignature)

The offer signature isn’t valid.

[`case invalidQuantity`](/documentation/StoreKit/Product/PurchaseError/invalidQuantity)

The quantity to purchase is invalid.

[`case missingOfferParameters`](/documentation/StoreKit/Product/PurchaseError/missingOfferParameters)

The offer parameters are missing.

### Enumeration Cases

[`case paymentMethodBindingConfigurationRequired`](/documentation/StoreKit/Product/PurchaseError/paymentMethodBindingConfigurationRequired)

The customer needs to add a payment method to their Apple Account before making a purchase; use [`PaymentMethodBinding`](/documentation/StoreKit/PaymentMethodBinding) to prompt the customer and bind the payment method.

## Relationships

### Conforms To

[`Hashable`](/documentation/Swift/Hashable)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

[`Error`](/documentation/Swift/Error)

[`Escapable`](/documentation/Swift/Escapable)

[`Equatable`](/documentation/Swift/Equatable)

[`LocalizedError`](/documentation/Foundation/LocalizedError)

[`Sendable`](/documentation/Swift/Sendable)

[`Copyable`](/documentation/Swift/Copyable)

---

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)