Product as loaded from AppStore

interface ValidProduct {
    billingPeriod?: number;
    billingPeriodUnit?: IPeriodUnit;
    countryCode: string;
    currency: string;
    description: string;
    discounts?: Discount[];
    group?: string;
    id: string;
    introPrice?: string;
    introPriceEligible?: boolean;
    introPriceMicros?: number;
    introPricePaymentMode?: PaymentMode;
    introPricePeriod?: number;
    introPricePeriodUnit?: IPeriodUnit;
    price: string;
    priceMicros: number;
    title: string;
}

Properties

billingPeriod?: number

Number of period units in each billing cycle

billingPeriodUnit?: IPeriodUnit

Unit for the billing cycle

countryCode: string

AppStore country this product has been fetched for

currency: string

Currency used by this product

description: string

localized description

discounts?: Discount[]

Available discount offers

group?: string

Group this product is member of

id: string

product id

introPrice?: string

Localized price for introductory period

introPriceEligible?: boolean

Whether the user is eligible for the introductory price.

Populated from StoreKit 2's Product.SubscriptionInfo.isEligibleForIntroOffer when running on SK2 (iOS 15+). Absent on SK1 and on older native builds that don't surface it — in which case the discount eligibility determiner is used as before.

introPriceMicros?: number

Introductory price in micro units

introPricePaymentMode?: PaymentMode

Payment mode for introductory price

introPricePeriod?: number

Number of introductory price periods

introPricePeriodUnit?: IPeriodUnit

Duration of an introductory price period

price: string

localized price

priceMicros: number

Price in micro units

title: string

localized title