flutter_inapp_purchase
In App Purchase plugin for flutter. This project has been forked by react-native-iap and we are willing to share same experience with that on react-native.
10.3.2
6.8K downloads/mo
#3448 most downloaded on pub.dev
hyodotdev/openiap
What this package is like to depend on
Last release 2 days ago
21 Aug 2026
Ships fairly regularly
a new release about every 2 weeks
Most releases are documented
notes for 182 of 215 stable releases
3 versions withdrawn
withdrawn after publishing
8 years old
227 releases · first in 2018
102 releases in the last 12 months
see the full history below
Release timeline
227 releases · Aug 2018 to Aug 2026Releases
latest 60 of 227-
10.3.221 Aug 2026Release notes
Open source →flutter_inapp_purchase 10.3.2
Flutter plugin for the OpenIAP specification.
What's Changed
- chore(release): [email protected] (
702a1f60) - chore(release): [email protected] (
8cd5909c) - fix: improve purchase diagnostics (#373) (
1d6b17fb) - ci: skip native matrices for docs-only changes (#363) (
453cf173) - docs: refresh amazon and iapkit surfaces (#361) (
f51aab31) - fix(security): harden release supply chain (#343) (
009e221b) - chore(release): standardize version commits (
ba0acef6)
Installation
# pubspec.yaml dependencies: flutter_inapp_purchase: ^10.3.2
flutter pub get
Documentation
Links
Release notes
Open source →- chore(release): [email protected]
- fix: improve purchase diagnostics (#373)
- ci: skip native matrices for docs-only changes (#363)
- docs: refresh amazon and iapkit surfaces (#361)
- fix(security): harden release supply chain (#343)
- chore(release): standardize version commits
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
- chore(release): [email protected] (
-
10.3.114 Aug 2026Release notes
Open source →- chore(google): bump version to 3.3.1
- chore(apple): bump version to 3.2.1
- fix: harden SDK compatibility and UI surfaces (#333)
- fix: harden iapkit response compatibility
- feat(conformance): add versioned conformance suite and fix entitlement defects (#316)
- feat(docs): live ecosystem diagram, Migration page rename, collapsible sidebar (#315)
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
10.3.011 Aug 2026Release notes
Open source →- chore(google): bump version to 3.3.0
- chore(apple): bump version to 3.2.0
- fix(kit): harden store verification integrity (#313)
- docs: formalize community service and governance
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
10.2.411 Aug 2026Release notes
Open source →- chore(google): bump version to 3.2.3
- fix(google): avoid r8 billing reflection (#309)
- test: enforce 90 percent SDK coverage (#308)
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
10.2.310 Aug 2026Release notes
Open source →- ci: configure monorepo coverage reporting (#306)
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
10.2.210 Aug 2026Release notes
Open source →- chore(google): bump version to 3.2.2
- fix(google): restore Kotlin consumer compatibility (#305)
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
10.2.110 Aug 2026 withdrawnRelease notes
Open source →- chore(google): bump version to 3.2.1
- chore(apple): bump version to 3.1.1
- fix: harden store API follow-up
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
10.2.009 Aug 2026 withdrawnRelease notes
Open source →- chore(google): bump version to 3.2.0
- chore(apple): bump version to 3.1.0
- fix: modernize store API integrations (#299)
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
10.1.008 Aug 2026 withdrawnRelease notes
Open source →- fix: harden remaining dependency release CI (#298)
- chore(google): bump version to 3.1.0
- chore: modernize library dependencies (#294)
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
10.0.103 Aug 2026Release notes
Open source →- chore(google): bump version to 3.0.1
- chore(apple): bump version to 3.0.1
- feat(google): expose amazon userId and marketplace on purchases (#275)
- fix(google): fall back to token for blank horizon order ids (#278)
- fix: preserve purchase query failures across sdks (#276)
- fix: ship app store-safe apple artifacts (#265)
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
10.0.030 Jul 2026Release notes
Open source →- chore(google): bump version to 3.0.0
- chore(apple): bump version to 3.0.0
- refactor(api)!: remove legacy compatibility (#256)
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.6.227 Jul 2026Release notes
Open source →- chore(google): bump version to 2.5.2
- fix(google): reconcile ambiguous purchase errors (#257)
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.6.126 Jul 2026Release notes
Open source →- chore(google): bump version to 2.5.1
- chore(apple): bump version to 2.4.4
- feat(kit): add scoped publishable and secret keys
- fix(android): support API 23 warning sets (#253)
- chore(apple): bump version to 2.4.3
- fix: preserve native purchase payloads across SDKs (#252)
- fix: preserve Flutter payloads and warn before legacy removals (#251)
- fix(release): derive spec from native version floor
- refactor(gql): enforce generated contract SSOT (#250)
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.6.023 Jul 2026Release notes
Open source →- chore(google): bump version to 2.5.0
- chore(apple): bump version to 2.4.2
- feat(iap): add Android offer code redemption across SDKs (#243)
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.5.116 Jul 2026Release notes
Open source →- No direct Flutter package changes found between releases; this release picks up the latest OpenIAP native package updates.
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.5.013 Jul 2026Release notes
Open source →- No direct Flutter package changes found between releases; this release picks up the latest OpenIAP native package updates.
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.4.112 Jul 2026Release notes
Open source →- No direct Flutter package changes found between releases; this release picks up the latest OpenIAP native package updates.
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.4.011 Jul 2026Release notes
Open source →- No direct Flutter package changes found between releases; this release picks up the latest OpenIAP native package updates.
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
Flutter keeps this file for pub.dev, while detailed release history remains centralized in the OpenIAP release notes and GitHub Releases.
- Consolidated release notes: https://openiap.dev/docs/updates/releases
- Flutter package releases: https://github.com/hyodotdev/openiap/releases?q=flutter-iap&expanded=true
-
9.4.0-rc.305 Jul 2026 pre-releaseRelease notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.4.0-rc.3
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.4.0-rc.205 Jul 2026 pre-releaseRelease notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.4.0-rc.2
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.4.0-rc.102 Jul 2026 pre-releaseNothing published for this version
-
9.3.701 Jul 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.3.7
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.3.627 Jun 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.3.6
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.3.525 Jun 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.3.5
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.3.423 Jun 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.3.4
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.3.323 Jun 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.3.3
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.3.211 Jun 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.3.2
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.3.119 May 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.3.1
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.3.016 May 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.3.0
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.2.813 May 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.2.8
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.2.708 May 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.2.7
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.2.608 May 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.2.6
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.2.507 May 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.2.5
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.2.404 May 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.2.4
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.2.324 Apr 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.2.3
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.2.224 Apr 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.2.2
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.2.116 Apr 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.2.1
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.2.016 Apr 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.2.0
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.1.015 Apr 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.1.0
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.0.315 Apr 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.0.3
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.0.214 Apr 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.0.2
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.0.114 Apr 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.0.1
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.0.011 Apr 2026Release notes
Open source →- See the Flutter GitHub Release for package-specific changes: https://github.com/hyodotdev/openiap/releases/tag/flutter-iap-9.0.0
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
9.0.0-rc.110 Apr 2026 pre-releaseRelease notes
Open source →- See the Flutter release tag for the source snapshot: https://github.com/hyodotdev/openiap/tree/flutter-iap-9.0.0-rc.1
- See the consolidated OpenIAP release notes: https://openiap.dev/docs/updates/releases
-
8.2.827 Feb 2026Release notes
Open source →- ci: add automated deploy workflow for pub.dev (#622)
- fix: map PlatformException to proper ErrorCode in all methods (#621)
- chore: update openiap apple to 1.3.15 (#618)
CHANGELOG
-
8.2.711 Feb 2026Release notes
Open source →Bug Fixes
- subscriptionOffers Parsing for iOS: Fixed
ProductSubscriptionIOS.subscriptionOffersalways being null even though the native OpenIAP layer returned the data correctly - Safe Numeric Parsing: Added
_toDoubleand_toInthelpers to handle bothnumandStringinputs from platform channels, preventing runtimeTypeErrors
- subscriptionOffers Parsing for iOS: Fixed
-
8.2.611 Feb 2026Release notes
Open source →New Features
- InstallmentPlanDetailsAndroid (Billing Library 7.0+): Subscription installment plan details for plans that allow users to pay in installments
- PendingPurchaseUpdateAndroid (Billing Library 5.0+): Details about pending subscription upgrades/downgrades
- purchaseOptionIdAndroid: New field on
DiscountOfferto identify which purchase option the user selected
Dependencies
- Updated OpenIAP versions:
openiap-gql: 1.3.16 -> 1.3.17openiap-google: 1.3.27 -> 1.3.28
-
8.2.525 Jan 2026Release notes
Open source →New Features
- ExternalPurchaseCustomLink API (iOS 18.1+): Support for Apple's custom external purchase links
isEligibleForExternalPurchaseCustomLinkIOS()- Check eligibilitygetExternalPurchaseCustomLinkTokenIOS()- Get token for reportingshowExternalPurchaseCustomLinkNoticeIOS()- Show disclosure notice
Dependencies
- Updated OpenIAP versions:
openiap-apple: 1.3.13 -> 1.3.14openiap-gql: 1.3.15 -> 1.3.16
- ExternalPurchaseCustomLink API (iOS 18.1+): Support for Apple's custom external purchase links
-
8.2.420 Jan 2026 -
8.2.320 Jan 2026Release notes
Open source →New Features
- One-Time Purchase Discounts (Android 8.0+): Added
offerTokenfield toRequestPurchaseAndroidPropsfor applying discounts to non-subscription purchases
Breaking Changes
- Simplified Android Field Names: Input fields in Android-specific request props now use simplified names without redundant
Androidsuffix:obfuscatedAccountIdAndroid->obfuscatedAccountIdobfuscatedProfileIdAndroid->obfuscatedProfileIdpurchaseTokenAndroid->purchaseTokenreplacementModeAndroid->replacementMode
Dependencies
- Updated OpenIAP versions:
openiap-apple: 1.3.12 -> 1.3.13openiap-gql: 1.3.14 -> 1.3.15openiap-google: 1.3.25 -> 1.3.26
- One-Time Purchase Discounts (Android 8.0+): Added
-
8.2.218 Jan 2026Release notes
Open source →New Features
- Win-Back Offers (iOS 18+): Re-engage churned subscribers with discounts or free trials via
WinBackOfferInputIOS - JWS Promotional Offers (iOS 15+): Simplified JWS format for promotional offers via
PromotionalOfferJWSInputIOS - Introductory Offer Eligibility Override (iOS 15+): Override system-determined eligibility with
introductoryOfferEligibility - Product Status Codes (Android 8.0+):
ProductStatusAndroidenum for product fetch results (Ok, NotFound, NoOffersAvailable, Unknown) - Suspended Subscriptions (Android 8.1+):
includeSuspendedAndroidoption andisSuspendedAndroidfield - Sub-Response Codes (Android 8.0+):
SubResponseCodeAndroidfor granular error information viaBillingResultAndroid
New Types
ProductStatusAndroid- Product fetch status enumSubResponseCodeAndroid- Detailed error codes enumSubscriptionOfferTypeIOS.WinBack- Win-back offer typeWinBackOfferInputIOS- Win-back offer configurationPromotionalOfferJWSInputIOS- JWS promotional offer inputBillingResultAndroid- Extended billing result with sub-response code
Breaking Changes
- Subscription-Only Fields Moved (iOS):
winBackOffer,promotionalOfferJWS,introductoryOfferEligibilityremoved fromRequestPurchaseIosProps, now only inRequestSubscriptionIosProps
Dependencies
- Updated OpenIAP versions:
openiap-apple: 1.3.10 -> 1.3.13openiap-gql: 1.3.12 -> 1.3.14openiap-google: 1.3.23 -> 1.3.25
- Win-Back Offers (iOS 18+): Re-engage churned subscribers with discounts or free trials via
-
8.2.117 Jan 2026Release notes
Open source →New Features
- Cross-platform Offer Types: Added standardized
DiscountOfferandSubscriptionOffertypes for cross-platform compatibility - Item-level Subscription Replacement (Android 8.1.0+): Added
subscriptionProductReplacementParamssupport as alternative to deprecatedreplacementModeAndroid
Improvements
- Code Generator: Simplified enum
fromJsonusing normalized value matching, removed redundant.map((e) => e).toList()for scalar lists
Dependencies
- Updated OpenIAP versions:
openiap-apple: 1.3.9 -> 1.3.10openiap-gql: 1.3.11 -> 1.3.12openiap-google: 1.3.22 -> 1.3.23
- Cross-platform Offer Types: Added standardized
-
8.2.029 Dec 2025Release notes
Open source →Breaking Changes
-
Parameter naming:
RequestPurchaseProps.inApp()andRequestPurchaseProps.subs()now useapple/googlefields instead ofios/android- This aligns with the OpenIAP GQL schema
- The type generation script now dynamically reads field names from the schema
// Before (8.1.x) RequestPurchaseProps.inApp(( ios: RequestPurchaseIosProps(sku: 'product_id'), android: RequestPurchaseAndroidProps(skus: ['product_id']), )) // After (8.2.0) RequestPurchaseProps.inApp(( apple: RequestPurchaseIosProps(sku: 'product_id'), google: RequestPurchaseAndroidProps(skus: ['product_id']), useAlternativeBilling: null, ))
Deprecated
-
AlternativeBillingModeAndroid: UseBillingProgramAndroidinsteadAlternativeBillingModeAndroid.alternativeOnly->BillingProgramAndroid.ExternalOfferAlternativeBillingModeAndroid.userChoice->BillingProgramAndroid.UserChoiceBilling
-
alternativeBillingModeAndroidparameter: UseenableBillingProgramAndroidininitConnection()instead
Dependencies
- Updated OpenIAP versions:
openiap-gql: 1.3.10 -> 1.3.11
-
-
8.1.228 Dec 2025Release notes
Open source →New Features
-
External Payments Program (Android 8.3.0+, Japan Only): Support for Google Play Billing Library 8.3.0's External Payments program
- Presents a side-by-side choice between Google Play Billing and the developer's external payment option directly in the purchase flow
- New
BillingProgramAndroid.ExternalPaymentsbilling program type - New
DeveloperBillingOptionParamsAndroidto configure external payment option in purchase flow - New
DeveloperBillingLaunchModeAndroidenum for how to launch the external payment link - New
DeveloperProvidedBillingDetailsAndroidtype containingexternalTransactionTokenwhen user selects developer billing - New
developerProvidedBillingAndroidstream for listening to developer billing selection events - New
developerBillingOptionfield inRequestPurchaseAndroidPropsandRequestSubscriptionAndroidProps
// Listen for developer billing selection iap.developerProvidedBillingAndroid.listen((details) { // User selected developer billing // Report transaction to Google within 24 hours using details.externalTransactionToken print('External transaction token: ${details.externalTransactionToken}'); }); // Request purchase with external payments option await iap.requestPurchaseWithBuilder( build: (builder) { builder.google.skus = ['product_id']; builder.google.developerBillingOption = DeveloperBillingOptionParamsAndroid( billingProgram: BillingProgramAndroid.ExternalPayments, launchMode: DeveloperBillingLaunchModeAndroid.LaunchInExternalBrowserOrApp, linkUri: 'https://example.com/checkout', ); builder.type = ProductQueryType.InApp; }, ); -
New Event:
IapEvent.DeveloperProvidedBillingAndroid- Fired when user selects developer billing in External Payments flow -
enableBillingProgramAndroid in InitConnectionConfig: Enable a specific billing program during connection initialization
// Enable External Payments during connection await iap.initConnection( enableBillingProgramAndroid: BillingProgramAndroid.ExternalPayments, );This provides a cleaner alternative to calling
enableBillingProgram()separately beforeinitConnection().
Dependencies
- Updated OpenIAP versions:
openiap-gql: 1.3.8 -> 1.3.10openiap-google: 1.3.16 -> 1.3.19openiap-apple: 1.3.7 -> 1.3.8
-
-
8.1.123 Dec 2025 -
8.1.023 Dec 2025Release notes
Open source →New Features
-
Advanced Commerce Data (iOS 15+): Support for StoreKit 2's
Product.PurchaseOption.customAPI- New
advancedCommerceDatafield inRequestPurchaseIosPropsandRequestSubscriptionIosProps - Pass campaign tokens, affiliate IDs, or other attribution data during purchases
await iap.requestPurchaseWithBuilder( build: (builder) { builder.ios.sku = 'com.example.premium'; builder.ios.advancedCommerceData = 'campaign_summer_2025'; builder.type = ProductQueryType.InApp; }, ); - New
-
googlefield support (Android): Newgooglefield in request parameters withandroidfallback- Aligns with OpenIAP specification for consistent cross-platform naming
androidfield is now deprecated; usegoogleinstead
Deprecated
-
requestPurchaseOnPromotedProductIOS(): UsepurchasePromotedstream +requestPurchase()instead- In StoreKit 2, promoted products can be purchased via the standard purchase flow
// Recommended approach iap.purchasePromoted.listen((productId) async { if (productId != null) { await iap.requestPurchaseWithBuilder( build: (builder) { builder.ios.sku = productId; builder.type = ProductQueryType.InApp; }, ); } });
Dependencies
- Updated OpenIAP versions:
openiap-apple: 1.3.5 -> 1.3.7openiap-google: 1.3.14 -> 1.3.16openiap-gql: 1.3.5 -> 1.3.8
-
-
8.0.016 Dec 2025Release notes
Open source →Breaking Changes
-
oneTimePurchaseOfferDetailsAndroidis now an array: Changed fromProductAndroidOneTimePurchaseOfferDetail?toList<ProductAndroidOneTimePurchaseOfferDetail>?to support multiple discount offers per product (Google Play Billing 7.0+)// Before (v7.x) final price = product.oneTimePurchaseOfferDetailsAndroid?.formattedPrice; // After (v8.x) final offers = product.oneTimePurchaseOfferDetailsAndroid; final price = offers?.isNotEmpty == true ? offers![0].formattedPrice : null; -
verifyPurchaseandvalidateReceiptAPI changed: Now uses platform-specific options instead of deprecatedskuandandroidOptionsparameters// Before (v7.x) final result = await iap.verifyPurchase(sku: 'product_id'); final result = await iap.verifyPurchase( sku: 'product_id', androidOptions: VerifyPurchaseAndroidOptions(...), ); // After (v8.x) - iOS final result = await iap.verifyPurchase( apple: VerifyPurchaseAppleOptions(sku: 'product_id'), ); // After (v8.x) - Android final result = await iap.verifyPurchase( google: VerifyPurchaseGoogleOptions( sku: 'product_id', accessToken: 'your-oauth-token', // From your backend packageName: 'com.your.app', purchaseToken: purchase.purchaseToken, ), );
New Features
-
Billing Programs API (Android 8.2.0+): Support for external billing programs
isBillingProgramAvailableAndroid()- Check if a billing program is availablecreateBillingProgramReportingDetailsAndroid()- Get external transaction token for reportinglaunchExternalLinkAndroid()- Launch external link for billing programs
// Check availability final result = await iap.isBillingProgramAvailableAndroid( BillingProgramAndroid.ExternalOffer, ); if (result.isAvailable) { // Launch external link await iap.launchExternalLinkAndroid( LaunchExternalLinkParamsAndroid( billingProgram: BillingProgramAndroid.ExternalOffer, launchMode: ExternalLinkLaunchModeAndroid.LaunchInExternalBrowserOrApp, linkType: ExternalLinkTypeAndroid.LinkToDigitalContentOffer, linkUri: 'https://your-payment-site.com/purchase', ), ); // Get reporting token final details = await iap.createBillingProgramReportingDetailsAndroid( BillingProgramAndroid.ExternalOffer, ); // Send details.externalTransactionToken to your server } -
One-Time Product Discounts (Android 8.0+): New fields in
ProductAndroidOneTimePurchaseOfferDetailofferId- Unique offer identifierfullPriceMicros- Full (non-discounted) pricediscountDisplayInfo- Discount percentage and amountlimitedQuantityInfo- Maximum and remaining quantityvalidTimeWindow- Offer validity periodofferTags- List of offer tagsofferToken- Token for purchase requestspreorderDetailsAndroid- Pre-order release dates (Android 8.0+)rentalDetailsAndroid- Rental period information (Android 8.0+)
-
Purchase Suspension Status (Android 8.1.0+): New
isSuspendedAndroidfield inPurchaseAndroid- Check if a subscription is suspended due to payment issues
- Do NOT grant entitlements for suspended subscriptions
for (final purchase in purchases) { if (purchase is PurchaseAndroid && purchase.isSuspendedAndroid == true) { // Subscription suspended - do not grant access // Direct user to fix payment method } }
Deprecated
checkAlternativeBillingAvailabilityAndroid()- UseisBillingProgramAvailableAndroid(BillingProgramAndroid.ExternalOffer)insteadshowAlternativeBillingDialogAndroid()- UselaunchExternalLinkAndroid()insteadcreateAlternativeBillingTokenAndroid()- UsecreateBillingProgramReportingDetailsAndroid(BillingProgramAndroid.ExternalOffer)instead
Fixes
- Web Build Error: Fixed
dart:ioimport causing web build failures- Replaced
dart:io PlatformwithdefaultTargetPlatformfrom Flutter foundation - Added
kIsWebguards to prevent native API calls on web - Note: IAP functionality is still iOS/Android only; this fix only enables web compilation
- Replaced
Dependencies
- Updated OpenIAP versions:
openiap-apple: 1.3.0 → 1.3.5openiap-google: 1.3.12 → 1.3.14openiap-gql: 1.3.2 → 1.3.5
Migration Guide
See Migration from v7 for detailed upgrade instructions.
-
-
7.2.009 Dec 2025Release notes
Open source →- feat: Add
IapStoreenum for unified store identification (apple,google,horizon,unknown) - feat: Add
storefield to Purchase types (deprecatesplatform) - feat: Support
apple/googlekeys in request parameters (alongside legacyios/android) - chore(deps): Update OpenIAP versions (apple: 1.3.0, google: 1.3.10, gql: 1.3.0)
- feat: Add
-
7.1.2107 Dec 2025Release notes
Open source →- feat: Add
verifyPurchaseWithProviderfor IAPKit integration- Supports server-side purchase verification via IAPKit
- New
VerificationMethodoption:ignore,local,iapkit - New verification status error codes
- fix: Deep conversion of purchase maps to avoid
_Map<Object?, Object?>cast errors on iOS 26- Fixes trial subscription purchase parsing failures
- Uses existing
normalizeDynamicMapfor recursive map conversion
- chore(deps): Update openiap versions (apple: 1.2.42, google: 1.3.8, gql: 1.2.7)
- feat: Add
-
7.1.2018 Nov 2025