<!--
{
  "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/PurchaseResult",
  "metadataVersion" : "0.1.0",
  "role" : "Enumeration",
  "symbol" : {
    "kind" : "Enumeration",
    "modules" : [
      "StoreKit"
    ],
    "preciseIdentifier" : "s:8StoreKit7ProductV14PurchaseResultO"
  },
  "title" : "Product.PurchaseResult"
}
-->

# Product.PurchaseResult

The result of a purchase.

```
enum PurchaseResult
```

## Overview

The value of the purchase result represents the state of the purchase. When successful, the associated value contains a [`VerificationResult`](/documentation/StoreKit/VerificationResult) of the transaction. The following example illustrates calling [`purchase(options:)`](/documentation/StoreKit/Product/purchase(options:)) on a [`Product`](/documentation/StoreKit/Product) value, checking the purchase status, and inspecting information about a successful transaction.

```swift
let result = try await product.purchase()
switch result {
case .success(let verificationResult):
    switch verificationResult {
    case .verified(let transaction):
        // Give the user access to purchased content.
        ...
        // Complete the transaction after providing
        // the user access to the content.
        await transaction.finish()
    case .unverified(let transaction, let verificationError):
        // Handle unverified transactions based 
        // on your business model.
        ...
    }
case .pending:
    // The purchase requires action from the customer. 
    // If the transaction completes, 
    // it's available through Transaction.updates.
    break
case .userCancelled:
    // The user canceled the purchase.
    break
@unknown default:
    break
}
```

## Topics

### Getting the Purchase Results

[`Product.PurchaseResult.success(_:)`](/documentation/StoreKit/Product/PurchaseResult/success(_:))

The purchase succeeded and results in a transaction.

[`Product.PurchaseResult.userCancelled`](/documentation/StoreKit/Product/PurchaseResult/userCancelled)

The user canceled the purchase.

[`Product.PurchaseResult.pending`](/documentation/StoreKit/Product/PurchaseResult/pending)

The purchase is pending, and requires action from the customer.



---

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)