<!--
{
  "availability" : [
    "iOS: 3.0.0 - 18.0.0",
    "iPadOS: 3.0.0 - 18.0.0",
    "macCatalyst: 13.1.0 - 18.0.0",
    "macOS: 10.7.0 - 15.0.0",
    "tvOS: 9.0.0 - 18.0.0",
    "visionOS: 1.0.0 - 2.0.0",
    "watchOS: 6.2.0 - 11.0.0"
  ],
  "documentType" : "symbol",
  "framework" : "StoreKit",
  "identifier" : "/documentation/StoreKit/SKPaymentQueue",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "StoreKit"
    ],
    "preciseIdentifier" : "c:objc(cs)SKPaymentQueue"
  },
  "title" : "SKPaymentQueue"
}
-->

# SKPaymentQueue

A queue of payment transactions for the App Store to process.

```
class SKPaymentQueue
```

## Overview

The payment queue communicates with the App Store and presents a user interface so that the user can authorize payment. The contents of the queue are persistent between launches of your app.

To process a payment, first add at least one observer object ([`SKPaymentTransactionObserver`](/documentation/StoreKit/SKPaymentTransactionObserver)) to the queue (see [`add(_:)`](/documentation/StoreKit/SKPaymentQueue/add(_:)-5ciz2)). Then, add a payment object ([`SKPayment`](/documentation/StoreKit/SKPayment)) for the item the user wants to purchase. Each time you add a payment object, the queue creates a transaction object ([`SKPaymentTransaction`](/documentation/StoreKit/SKPaymentTransaction)) to process that payment and enqueues it to be processed. After payment is fulfilled, the queue updates the transaction object and then calls any observer objects to provide them the updated transaction. Your observer should process the transaction and then remove it from the queue.

The exact mechanism you use to process a processed transaction depends on the design of your app and the product being purchased. Here are a few common examples:

- If the product is a feature already built into your app, your app enables the feature to process the transaction.
- If the product includes downloadable content provided by the App Store, your app retrieves the [`SKDownload`](/documentation/StoreKit/SKDownload) objects from the transaction and ask the payment queue to download them. You provide the actual content files to be served by the App Store to App Store Connect when you create the product information.
- If the product represents downloadable content provided by your own server, your app might open a network connection to your server and download the content from there.

For more information on designing the payment processing portion of your app, see [In-App Purchase Programming Guide](https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction.html#//apple_ref/doc/uid/TP40008267).

## Topics

### Determining Whether the User Can Make Payments

[`canMakePayments()`](/documentation/StoreKit/SKPaymentQueue/canMakePayments())

A method that indicates whether the person can make purchases.

### Determining Store Content

[`storefront`](/documentation/StoreKit/SKPaymentQueue/storefront)

The App Store storefront of the device.

### Getting the Queue

[`default()`](/documentation/StoreKit/SKPaymentQueue/default())

Returns the default payment queue instance.

### Adding, Getting, and Removing Observers

[`add(_:)`](/documentation/StoreKit/SKPaymentQueue/add(_:)-5ciz2)

Adds an observer to the payment queue.

[`transactionObservers`](/documentation/StoreKit/SKPaymentQueue/transactionObservers)

An array of all active payment queue observers.

[`remove(_:)`](/documentation/StoreKit/SKPaymentQueue/remove(_:))

Removes an observer from the payment queue.

### Managing Transactions

[`delegate`](/documentation/StoreKit/SKPaymentQueue/delegate)

A delegate that provides information needed to complete transactions.

[`transactions`](/documentation/StoreKit/SKPaymentQueue/transactions)

Returns an array of pending transactions.

[`add(_:)`](/documentation/StoreKit/SKPaymentQueue/add(_:)-4vct1)

Adds a payment request to the queue.

[`finishTransaction(_:)`](/documentation/StoreKit/SKPaymentQueue/finishTransaction(_:))

Notifies the App Store that the app finished processing the transaction.

### Restoring Purchases

[`restoreCompletedTransactions()`](/documentation/StoreKit/SKPaymentQueue/restoreCompletedTransactions())

Asks the payment queue to restore previously completed purchases.

[`restoreCompletedTransactions(withApplicationUsername:)`](/documentation/StoreKit/SKPaymentQueue/restoreCompletedTransactions(withApplicationUsername:))

Asks the payment queue to restore previously completed purchases, providing an opaque identifier for the user’s account.

### Showing Price Consent

[`showPriceConsentIfNeeded()`](/documentation/StoreKit/SKPaymentQueue/showPriceConsentIfNeeded())

Asks the system to display the price consent sheet if the user hasn’t yet responded to a subscription price increase.

### Redeeming Codes

[`presentCodeRedemptionSheet()`](/documentation/StoreKit/SKPaymentQueue/presentCodeRedemptionSheet())

Displays a sheet that enables customers to redeem offer codes that you configure in App Store Connect.

### Downloading Content

[`start(_:)`](/documentation/StoreKit/SKPaymentQueue/start(_:))

Adds a set of downloads to the download list.

[`cancel(_:)`](/documentation/StoreKit/SKPaymentQueue/cancel(_:))

Removes a set of downloads from the download list.

[`pause(_:)`](/documentation/StoreKit/SKPaymentQueue/pause(_:))

Pauses a set of downloads.

[`resume(_:)`](/documentation/StoreKit/SKPaymentQueue/resume(_:))

Resumes a set of downloads.



---

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)