One Logo Pool Ball
StoreKit · IOS API REFERENCE

Product.SubscriptionInfo.RenewalInfo

struct · iOS 15.0+ · SDK 27.1

struct RenewalInfo

Represents signed renewal information for a purchase.

Members (35)

get · iOS 26.4+

commitmentInfo

TypeScript
get commitmentInfo(): (Product_SubscriptionInfo_RenewalInfo_CommitmentInfo) | null
Swift declaration
let commitmentInfo: Product.SubscriptionInfo.RenewalInfo.CommitmentInfo?
get · iOS 18.4+

advancedCommerceInfo

TypeScript
get advancedCommerceInfo(): (Product_SubscriptionInfo_RenewalInfo_AdvancedCommerceInfo) | null
Swift declaration
let advancedCommerceInfo: Product.SubscriptionInfo.RenewalInfo.AdvancedCommerceInfo?

Metadata specific to Advanced Commerce.

get · iOS 15.0+

bundleProductID

TypeScript
get bundleProductID(): (string) | null
Swift declaration
@backDeployed(before: iOS 27.0, macOS 27.0, tvOS 27.0, watchOS 27.0, visionOS 27.0)
var bundleProductID: String? { get }

Identifies the bundle product the next renewal is for. If the next renewal is created as part of a subscription bundle, this field will be populated with the product ID of the bundle.

get · iOS 15.0+

bundleSubscriptionGroupID

TypeScript
get bundleSubscriptionGroupID(): (string) | null
Swift declaration
@backDeployed(before: iOS 27.0, macOS 27.0, tvOS 27.0, watchOS 27.0, visionOS 27.0)
var bundleSubscriptionGroupID: String? { get }

Identifies the subscription bundle group the next renewal is for. - Note: Only for renewals of subscriptions included in a bundle.

get · iOS 15.0+

recentSubscriptionStartDate

TypeScript
get recentSubscriptionStartDate(): globalThis.Date
Swift declaration
@backDeployed(before: iOS 16.0, macOS 13.0, tvOS 16.0, watchOS 9.0, macCatalyst 16.0)
var recentSubscriptionStartDate: Date { get }

The date that marks the start of the most recent period of *continuous subscription*. A period is considered a *continuous subscription* if there is no more than a 60 day gap between any two subscribed periods. - Important: When using `recentSubscriptionStartDate` on systems earlier than iOS 16.0, macOS 13.0, tvOS 16.0 or watchOS 9.0, the property may return a sentinel date equal to `Date.distantPast` in some uncommon cases: (1) StoreKit Testing in Xcode (workaround: test your app on a device running a more recent OS) or (2) a critical server error.

get · iOS 15.0+

currentProductID

TypeScript
get currentProductID(): string
Swift declaration
let currentProductID: String

The currently active product identifier, or the most recently active product identifier if the subscription is expired.

get · iOS 15.0+

signedDate

TypeScript
get signedDate(): globalThis.Date
Swift declaration
let signedDate: Date

The date this renewal info was generated and signed.

get · iOS 16.0+

environment

TypeScript
get environment(): AppStore_Environment
Swift declaration
let environment: AppStore.Environment

The server environment the renewal info was created in.

get · iOS 15.0+

renewalDate

TypeScript
get renewalDate(): (globalThis.Date) | null
Swift declaration
@backDeployed(before: iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0, macCatalyst 17.0)
var renewalDate: Date? { get }

The date of the next subscription renewal.

get · iOS 15.0+ · Deprecated in iOS 16.0

currencyCode

TypeScript
get currencyCode(): (string) | null
Swift declaration
@backDeployed(before: iOS 16.0, macOS 13.0, tvOS 16.0, watchOS 9.0)
var currencyCode: String? { get }

ISO3A code for the currency used for the purchase. - Important: The property may return a `nil` value in some uncommon cases: (1) The renewalPrice is also `nil`, (2) StoreKit Testing in Xcode (workaround: test your app on a device running a more recent OS) or (3) a critical server error. @DeprecationSummary { Use the ``currency`` property instead. }

get · iOS 15.0+

renewalPrice

TypeScript
get renewalPrice(): (_Foundation_Decimal) | null
Swift declaration
@backDeployed(before: iOS 18.0, macOS 15.0, tvOS 18.0, watchOS 11.0, visionOS 2.0)
var renewalPrice: Decimal? { get }

The amount that will be charged to the customer on the next renewal date.

get · iOS 15.0+

willUnbundle

TypeScript
get willUnbundle(): boolean
Swift declaration
@backDeployed(before: iOS 27.0, macOS 27.0, tvOS 27.0, watchOS 27.0, visionOS 27.0)
var willUnbundle: Bool { get }

Whether the subscription will leave the bundle at the next renewal and renew as a standalone product. - Note: Only for renewals of subscriptions included in a bundle.

get · iOS 15.0+

willAutoRenew

TypeScript
get willAutoRenew(): boolean
Swift declaration
let willAutoRenew: Bool

Whether the subscription will auto renew at the end of the current billing period.

get · iOS 15.0+

appAccountToken

TypeScript
get appAccountToken(): (string) | null
Swift declaration
@backDeployed(before: iOS 18.4, macOS 15.4, tvOS 18.4, watchOS 11.4, visionOS 2.4)
var appAccountToken: UUID? { get }
get · iOS 15.0+

appTransactionID

TypeScript
get appTransactionID(): string
Swift declaration
@backDeployed(before: iOS 18.4, macOS 15.4, tvOS 18.4, watchOS 11.4, visionOS 2.4)
var appTransactionID: String { get }
get · iOS 15.0+

debugDescription

TypeScript
get debugDescription(): string
Swift declaration
var debugDescription: String { get }

A textual representation of this instance, suitable for debugging. Calling this property directly is discouraged. Instead, convert an instance of any type to a string by using the `String(reflecting:)` initializer. This initializer works with any type, and uses the custom `debugDescription` property for types that conform to `CustomDebugStringConvertible`: struct Point: CustomDebugStringConvertible { let x: Int, y: Int var debugDescription: String { return "(\(x), \(y))" } } let p = Point(x: 21, y: 30) let s = String(reflecting: p) print(s) // Prints "(21, 30)" The conversion of `p` to a string in the assignment to `s` uses the `Point` type's `debugDescription` property.

get · iOS 15.0+

expirationReason

TypeScript
get expirationReason(): (Product_SubscriptionInfo_RenewalInfo_ExpirationReason) | null
Swift declaration
let expirationReason: Product.SubscriptionInfo.RenewalInfo.ExpirationReason?

The reason the subscription expired.

get · iOS 15.0+

isInBillingRetry

TypeScript
get isInBillingRetry(): boolean
Swift declaration
let isInBillingRetry: Bool

Whether the subscription is in a billing retry period.

get · iOS 15.0+

deviceVerification

TypeScript
get deviceVerification(): ArrayBuffer
Swift declaration
let deviceVerification: Data

A SHA-384 hash of `AppStore.deviceVerificationID` appended after `deviceVerificationNonce` (both lowercased UUID strings).

get · iOS 15.0+

jsonRepresentation

TypeScript
get jsonRepresentation(): ArrayBuffer
Swift declaration
var jsonRepresentation: Data { get }

The JSON representation of the renewal information.

get · iOS 15.0+

autoRenewPreference

TypeScript
get autoRenewPreference(): (string) | null
Swift declaration
let autoRenewPreference: String?

The product identifier the subscription will auto renew to at the end of the current billing period. If the user disabled auto renewing, this property will be `nil`.

get · iOS 15.0+

priceIncreaseStatus

TypeScript
get priceIncreaseStatus(): Product_SubscriptionInfo_RenewalInfo_PriceIncreaseStatus
Swift declaration
let priceIncreaseStatus: Product.SubscriptionInfo.RenewalInfo.PriceIncreaseStatus

The status of a price increase for the user.

get · iOS 15.0+

originalTransactionID

TypeScript
get originalTransactionID(): number
Swift declaration
let originalTransactionID: UInt64

The original transaction identifier for the subscription group.

get · iOS 26.4+

renewalBillingPlanType

TypeScript
get renewalBillingPlanType(): (Product_SubscriptionInfo_BillingPlanType) | null
Swift declaration
let renewalBillingPlanType: SubscriptionInfo.BillingPlanType?
get · iOS 15.0+

deviceVerificationNonce

TypeScript
get deviceVerificationNonce(): string
Swift declaration
let deviceVerificationNonce: UUID

The nonce used when computing `deviceVerification`. - SeeAlso: `AppStore.deviceVerificationID`

get · iOS 18.0+

eligibleWinBackOfferIDs

TypeScript
get eligibleWinBackOfferIDs(): Array<string>
Swift declaration
let eligibleWinBackOfferIDs: [String]

List of win-back offers the user is eligible to apply to a purchase for this subscription group. - Note: The first item in the list is the best fit offer for the current user.

get · iOS 15.0+

gracePeriodExpirationDate

TypeScript
get gracePeriodExpirationDate(): (globalThis.Date) | null
Swift declaration
let gracePeriodExpirationDate: Date?

The date the billing grace period will expire.

get · iOS 15.0+

bundleOriginalTransactionID

TypeScript
get bundleOriginalTransactionID(): (string) | null
Swift declaration
@backDeployed(before: iOS 27.0, macOS 27.0, tvOS 27.0, watchOS 27.0, visionOS 27.0)
var bundleOriginalTransactionID: String? { get }
get · iOS 15.0+ · Deprecated in iOS 16.0

environmentStringRepresentation

TypeScript
get environmentStringRepresentation(): string
Swift declaration
@backDeployed(before: iOS 16.0, macOS 13.0, tvOS 16.0, watchOS 9.0, macCatalyst 16.0)
var environmentStringRepresentation: String { get }

The server environment the renewal info was created in. The possible values this can return are "Production" for apps downloaded from the App Store, "Sandbox" for the App Store Sandbox and apps downloaded from TestFlight, and "Xcode" for StoreKit Testing in Xcode. - Important: The property may return a sentinel empty string in some uncommon cases: (1) StoreKit Testing in Xcode (workaround: test your app on a device running a more recent OS) or (2) a critical server error. If possible, use the ``Product/SubscriptionInfo/RenewalInfo/environment`` property to guarantee a valid value. @DeprecationSummary { Use the ``environment`` property instead. }

get · iOS 15.0+ · Deprecated in iOS 18.4

offerPeriodStringRepresentation

TypeScript
get offerPeriodStringRepresentation(): (string) | null
Swift declaration
@backDeployed(before: iOS 18.4, macOS 15.4, tvOS 18.4, watchOS 11.4, visionOS 2.4)
var offerPeriodStringRepresentation: String? { get }

The string representation of the subscription offer period applied to the next billing period. - Note: Only when there is an offer applied for this subscription. - Important: The property may return a sentinel nil value in some uncommon cases: (1) StoreKit Testing in Xcode (workaround: test your app on a device running a more recent OS), or (2) a critical server error. @DeprecationSummary { Use the ``offer`` property instead. }

get · iOS 15.0+ · Deprecated in iOS 18.0

offerPaymentModeStringRepresentation

TypeScript
get offerPaymentModeStringRepresentation(): (string) | null
Swift declaration
@backDeployed(before: iOS 18.0, macOS 15.0, tvOS 18.0, watchOS 11.0, visionOS 2.0)
var offerPaymentModeStringRepresentation: String? { get }

The string representation of the subscription offer payment mode applied to the next billing period. - Note: Only when there is an offer applied for this subscription. - Important: The property may return a `nil` value in some cases: (1) StoreKit Testing in Xcode (workaround: test your app on a device running a more recent OS), (2) older transaction information where this field is absent, or (3) a critical server error. @DeprecationSummary { Use the ``offer`` property instead. }

get · iOS 18.0+

offer

TypeScript
get offer(): (Transaction_Offer) | null
Swift declaration
let offer: Transaction.Offer?

A subscription offer that applies at the next renewal period.

get · iOS 15.0+ · Deprecated in iOS 18.0

offerID

TypeScript
get offerID(): (string) | null
Swift declaration
var offerID: String? { get }

Identifies the offer that will be applied to the next billing period. If `offerType` is `promotional`, this will be the offer identifier. If `offerType` is `code`, this will be the offer code reference name. This will be `nil` for `introductory` offers and if there will be no offer applied for the next billing period. @DeprecationSummary { Use the ``offer`` property instead. }

get · iOS 16.0+

currency

TypeScript
get currency(): (_Foundation_Locale_Currency) | null
Swift declaration
@backDeployed(before: iOS 18.0, macOS 15.0, tvOS 18.0, watchOS 11.0, visionOS 2.0)
var currency: Locale.Currency? { get }

The `Locale.Currency` used for the purchase. - Important: The currency value is nil if the renewalPrice is unavailable.

get · iOS 15.0+ · Deprecated in iOS 18.0

offerType

TypeScript
get offerType(): (Transaction_OfferType) | null
Swift declaration
var offerType: Transaction.OfferType? { get }

The type of the offer that will be applied to the next billing period. @DeprecationSummary { Use the ``offer`` property instead. }

Skipped declarations

No declarations were skipped in this snapshot.

All StoreKit types →