Description
Summary
Apple introduced monthly subscriptions with a 12-month commitment, configured on an existing yearly auto-renewable subscription. StoreKit exposes this through Product.SubscriptionInfo.pricingTerms and requires passing an explicit purchase
option to choose the billing plan:
try await product.purchase(options: [.billingPlanType(.monthly)])
Currently, Adapty iOS SDK exposes:
try await Adapty.makePurchase(product: product)
but I cannot find a public way to pass Product.PurchaseOption.billingPlanType(_:) or otherwise choose between .upFront and .monthly billing plans for the same yearly product.
Use case
We have one App Store product, that can be sold as:
- yearly upfront: billingPlanType == .upFront
- monthly payments with 12-month commitment: billingPlanType == .monthly
Both choices share the same App Store product ID, but they need distinct UI rows and distinct purchase routing.
Current workaround
For the commitment option, we have to bypass Adapty purchase flow and call StoreKit directly:
let result = try await sk2Product.purchase(options: [.billingPlanType(.monthly)])
Then we call Adapty restore/profile refresh to sync entitlement state.
This works for StoreKit purchase selection, but it may lose or weaken Adapty dashboard attribution, paywall variation attribution, A/B test attribution, and purchase analytics because the purchase did not go through:
Adapty.makePurchase(product:)
Requested API
Please add a public purchase API that allows selecting the StoreKit billing plan while preserving Adapty purchase tracking and paywall attribution.
Possible shape:
try await Adapty.makePurchase(
product: product,
options: [.billingPlanType(.monthly)]
)
or a typed Adapty abstraction:
try await Adapty.makePurchase(
product: product,
billingPlanType: .monthly
)
For yearly upfront:
try await Adapty.makePurchase(
product: product,
billingPlanType: .upFront
)
Why this matters
Without this, apps that use Adapty for paywalls and subscription analytics must choose between:
- using Adapty purchase flow but not being able to select the monthly commitment billing plan, or
- using native StoreKit purchase flow and risking incomplete Adapty dashboard/paywall attribution.
Environment
- iOS SDK: Xcode 26.5 SDK
- Runtime requirement: iOS 26.4+
- StoreKit API: Product.SubscriptionInfo.pricingTerms, Product.PurchaseOption.billingPlanType(_:)
- Adapty iOS SDK: current public API exposes Adapty.makePurchase(product:)
Question
Is billing plan selection for 12-month commitment subscriptions already supported somewhere in the SDK or planned for an upcoming release?
If not, would you consider exposing a public API for passing Product.PurchaseOption.billingPlanType(_:) while keeping Adapty’s transaction validation, profile updates, paywall attribution, and dashboard analytics intact?
Proposed Solution
No response
Description
Summary
Apple introduced monthly subscriptions with a 12-month commitment, configured on an existing yearly auto-renewable subscription. StoreKit exposes this through
Product.SubscriptionInfo.pricingTermsand requires passing an explicit purchaseoption to choose the billing plan:
Currently, Adapty iOS SDK exposes:
but I cannot find a public way to pass
Product.PurchaseOption.billingPlanType(_:)or otherwise choose between.upFrontand.monthlybilling plans for the same yearly product.Use case
We have one App Store product, that can be sold as:
Both choices share the same App Store product ID, but they need distinct UI rows and distinct purchase routing.
Current workaround
For the commitment option, we have to bypass Adapty purchase flow and call StoreKit directly:
Then we call Adapty restore/profile refresh to sync entitlement state.
This works for StoreKit purchase selection, but it may lose or weaken Adapty dashboard attribution, paywall variation attribution, A/B test attribution, and purchase analytics because the purchase did not go through:
Requested API
Please add a public purchase API that allows selecting the StoreKit billing plan while preserving Adapty purchase tracking and paywall attribution.
Possible shape:
or a typed Adapty abstraction:
For yearly upfront:
Why this matters
Without this, apps that use Adapty for paywalls and subscription analytics must choose between:
Environment
Question
Is billing plan selection for 12-month commitment subscriptions already supported somewhere in the SDK or planned for an upcoming release?
If not, would you consider exposing a public API for passing
Product.PurchaseOption.billingPlanType(_:)while keeping Adapty’s transaction validation, profile updates, paywall attribution, and dashboard analytics intact?Proposed Solution
No response