<!--
{
  "availability" : [
    "iOS: 27.3.0 -",
    "iPadOS: 27.3.0 -",
    "macOS: 27.3.0 -",
    "tvOS: 27.3.0 -",
    "visionOS: 27.3.0 -",
    "watchOS: 27.3.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "StoreKit",
  "identifier" : "/documentation/StoreKit/Product/SubscriptionInfo/PricingTerms-swift.struct/PricingModel-swift.enum",
  "metadataVersion" : "0.1.0",
  "role" : "Enumeration",
  "symbol" : {
    "kind" : "Enumeration",
    "modules" : [
      "StoreKit"
    ],
    "preciseIdentifier" : "s:8StoreKit7ProductV16SubscriptionInfoV12PricingTermsV0F5ModelO"
  },
  "title" : "Product.SubscriptionInfo.PricingTerms.PricingModel"
}
-->

# Product.SubscriptionInfo.PricingTerms.PricingModel

The pricing models of an auto-renewable subscription, with the pricing details for each model.

```
enum PricingModel
```

## Overview

Switch over a pricing model to get a subscription’s pricing details. A subscription that a customer buys individually uses the [`Product.SubscriptionInfo.PricingTerms.PricingModel.singlePrice(_:)`](/documentation/StoreKit/Product/SubscriptionInfo/PricingTerms-swift.struct/PricingModel-swift.enum/singlePrice(_:)) model. A subscription that a customer buys with seats uses the [`Product.SubscriptionInfo.PricingTerms.PricingModel.seatBased(_:)`](/documentation/StoreKit/Product/SubscriptionInfo/PricingTerms-swift.struct/PricingModel-swift.enum/seatBased(_:)) model, which provides a per-seat price for each price tier.

StoreKit might add pricing models in the future, so include an `@unknown default` case when you switch over a pricing model.

The following example builds a price label for single-price terms, and a label for each price tier of seat-based terms:

```swift
var priceLabel = ""
var tierLabels: [String] = []

switch pricingTerms.pricingModel {
case .singlePrice(let singlePrice):
    priceLabel = singlePrice.billingInfo.displayPrice
case .seatBased(let seatBasedPricing):
    tierLabels = seatBasedPricing.priceTiers.map { tier in
        let seats = tier.maximumSeats.map { "\(tier.minimumSeats)-\($0)" } ?? "\(tier.minimumSeats)+"
        return "\(seats) seats: \(tier.billingInfo.displayPrice) per seat"
    }
@unknown default:
    break
}
```

For more information, see [Supporting multiseat purchases in your app](/documentation/StoreKit/supporting-multiseat-purchases-in-your-app).

## Topics

### Identifying the pricing model

[`case singlePrice(Product.SubscriptionInfo.PricingTerms.SinglePrice)`](/documentation/StoreKit/Product/SubscriptionInfo/PricingTerms-swift.struct/PricingModel-swift.enum/singlePrice(_:))

A pricing model that uses a single price for the subscription.

[`case seatBased(Product.SubscriptionInfo.PricingTerms.SeatBasedPricing)`](/documentation/StoreKit/Product/SubscriptionInfo/PricingTerms-swift.struct/PricingModel-swift.enum/seatBased(_:))

A pricing model that uses per-seat prices from one or more price tiers.

## Relationships

### Conforms To

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

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

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

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

---

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)