in_app_purchase
A Flutter plugin for in-app purchases. Exposes APIs for making in-app purchases through the App Store and Google Play.
3.3.0
1000K downloads/mo
#71 most downloaded on pub.dev
flutter/packages
What this package is like to depend on
Last release 2 months ago
04 Jun 2026
Release timing varies
gaps range from 2 weeks to 13 months
Nearly every release is documented
notes for 106 of 106 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
106 releases · first in 2018
2 releases in the last 12 months
see the full history below
Release timeline
106 releases · Nov 2018 to Jun 2026Releases
latest 60 of 106-
3.3.003 Jun 2026 -
3.2.404 Jun 2026Release notes
Open source →- Bump org.json:json from 20251224 to 20260522 in example.
- Updates minimum supported SDK version to Flutter 3.38/Dart 3.10.
- Updates README to reflect currently supported OS versions for the latest
versions of the endorsed platform implementations.
- Applications built with older versions of Flutter will continue to use compatible versions of the platform implementations.
- Clarifies
completePurchaseusage and the consequences of unfinished transactions in the README and docstrings.
-
3.2.315 May 2025 -
3.2.212 May 2025Release notes
Open source →- Updates README with Storekit 2 examples.
- Updates README to indicate that Andoid SDK <21 is no longer supported.
-
3.2.123 Jan 2025Release notes
Open source →- Updates minimum supported SDK version to Flutter 3.24/Dart 3.5.
- Updates
in_app_purchase_androidto 0.4.0.
-
3.2.017 Apr 2024Release notes
Open source →- Adds
countryCodeAPI. - Updates minimum supported SDK version to Flutter 3.13/Dart 3.1.
- Updates support matrix in README to indicate that iOS 11 is no longer supported.
- Clients on versions of Flutter that still support iOS 11 can continue to use this package with iOS 11, but will not receive any further updates to the iOS implementation.
- Adds
-
3.1.1309 Jan 2024 -
3.1.1204 Jan 2024Release notes
Open source →- Updates minimum supported SDK version to Flutter 3.10/Dart 3.0.
- Fixes new lint warnings.
-
3.1.1111 Oct 2023 -
3.1.1030 Aug 2023 -
3.1.930 Aug 2023Release notes
Open source →- Adds pub topics to package metadata.
- Updates minimum supported SDK version to Flutter 3.7/Dart 2.19.
-
3.1.804 Aug 2023Release notes
Open source →- Updates documentation on handling subscription price changes to match Android's billing client v5.
-
3.1.724 May 2023 -
3.1.623 May 2023Release notes
Open source →- Bumps minimum in_app_purchase_android version to 0.3.0.
- Updates minimum supported SDK version to Flutter 3.3/Dart 2.18.
- Aligns Dart and Flutter SDK constraints.
-
3.1.522 Feb 2023 -
3.1.417 Feb 2023 -
3.1.103 Jan 2023 -
3.1.021 Dec 2022 -
3.0.821 Oct 2022Release notes
Open source →- Updates minimum Flutter version to 2.10.
- Bumps minimum in_app_purchase_android to 0.2.3.
-
3.0.709 Aug 2022 -
3.0.614 Jun 2022 -
3.0.506 Jun 2022 -
3.0.411 May 2022 -
3.0.310 May 2022Release notes
Open source →- Removes unnecessary imports.
- Adds OS version support information to README.
- Fixes library_private_types_in_public_api, sort_child_properties_last and use_key_in_widget_constructors lint warnings.
-
3.0.215 Mar 2022Release notes
Open source →- Adds additional explanation on why it is important to complete a purchase.
-
3.0.102 Mar 2022 -
3.0.023 Feb 2022Release notes
Open source →- BREAKING CHANGE Updates
restorePurchasesto emit an empty list of purchases on StoreKit when there are no purchases to restore (same as Android).- This change was listed in the CHANGELOG for 2.0.0, but the change was accidentally not included in 2.0.0.
- BREAKING CHANGE Updates
-
2.0.111 Dec 2021Release notes
Open source →- Removes the instructions on initializing the plugin since this functionality is deprecated.
-
2.0.001 Dec 2021Release notes
Open source →-
BREAKING CHANGES:
- Adds a new
PurchaseStatusnamedcanceled. This means developers can distinguish between an error and user cancellation. UpdatesrestorePurchasesto emit an empty list of purchases on StoreKit when there are no purchases to restore (same as Android).- Renames
in_app_purchase_iostoin_app_purchase_storekit. - Renames
InAppPurchaseIosPlatformtoInAppPurchaseStoreKitPlatform. - Renames
InAppPurchaseIosPlatformAdditiontoInAppPurchaseStoreKitPlatformAddition.
- Adds a new
-
Deprecates the
InAppPurchaseAndroidPlatformAddition.enablePendingPurchases()method andInAppPurchaseAndroidPlatformAddition.enablePendingPurchaseproperty. -
Adds support for promotional offers on the store_kit_wrappers Dart API.
-
Fixes integration tests.
-
Updates example app Android compileSdkVersion to 31.
-
-
1.0.929 Sep 2021Release notes
Open source →- Handle purchases with
PurchaseStatus.restoredcorrectly in the example App. - Updated dependencies on
in_app_purchase_androidandin_app_purchase_iosto their latest versions (version 0.1.5 and 0.1.3+5 respectively).
- Handle purchases with
-
1.0.820 Aug 2021 -
1.0.623 Jun 2021Release notes
Open source →- Added import flutter foundation dependency in README.md to be able to use
defaultTargetPlatform.
- Added import flutter foundation dependency in README.md to be able to use
-
1.0.508 Jun 2021Release notes
Open source →- Add explanation for casting
ProductDetailsandPurchaseDetailsto platform specific implementations in the readme.
- Add explanation for casting
-
1.0.403 Jun 2021 -
1.0.303 Jun 2021Release notes
Open source →- Added a "Restore purchases" button to conform to Apple's StoreKit guidelines on restoring products;
- Corrected an error in a example snippet displayed in the README.md.
-
1.0.202 Jun 2021Release notes
Open source →- Fix ignoring "autoConsume" param in "InAppPurchase.instance.buyConsumable".
-
1.0.127 May 2021 -
1.0.019 May 2021 -
0.6.013 May 2021Release notes
Open source →As part of implementing federated architecture and making the interface compatible for other platforms this version contains the following breaking changes:
- Changes to the platform agnostic interface:
- If you used
InAppPurchaseConnection.instanceto access generic In App Purchase APIs, please useInAppPurchase.instanceinstead; - The
InAppPurchaseConnection.purchaseUpdatedStreamhas been renamed toInAppPurchase.purchaseStream; - The
InAppPurchaseConnection.queryPastPurchasesmethod has been removed. Instead, you should useInAppPurchase.restorePurchases. This method emits each restored purchase on theInAppPurchase.purchaseStream, thePurchaseDetailsobject will be marked with astatusofPurchaseStatus.restored; - The
InAppPurchase.completePurchasemethod no longer returns an instanceBillingWrapperResultclass (which was Android specific). Instead it will return a completedFutureif the method executed successfully, in case of errors it will complete with anInAppPurchaseExceptiondescribing the error.
- If you used
- Android specific changes:
- The Android specific
InAppPurchaseConnection.consumePurchaseandInAppPurchaseConnection.enablePendingPurchasesmethods have been removed from the platform agnostic interface and moved to the Android specificInAppPurchaseAndroidPlatformAdditionclass:InAppPurchaseAndroidPlatformAddition.enablePendingPurchasesis a static method that should be called when initializing your App. Access the method like this:InAppPurchaseAndroidPlatformAddition.enablePendingPurchases()(make sure to add the following import:import 'package:in_app_purchase_android/in_app_purchase_android.dart';);- To use the
InAppPurchaseAndroidPlatformAddition.consumePurchasemethod, acquire an instance using theInAppPurchase.getPlatformAdditionmethod. For example:
// Acquire the InAppPurchaseAndroidPlatformAddition instance. InAppPurchaseAndroidPlatformAddition androidAddition = InAppPurchase.instance.getPlatformAddition<InAppPurchaseAndroidPlatformAddition>(); // Consume an Android purchase. BillingResultWrapper billingResult = await androidAddition.consumePurchase(purchase);- The billing_client_wrappers have been moved into the in_app_purchase_android package. They are still available through the in_app_purchase plugin but to use them it is necessary to import the correct package when using them:
import 'package:in_app_purchase_android/billing_client_wrappers.dart';;
- The Android specific
- iOS specific changes:
- The iOS specific methods
InAppPurchaseConnection.presentCodeRedemptionSheetandInAppPurchaseConnection.refreshPurchaseVerificationDatamethods have been removed from the platform agnostic interface and moved into the iOS specificInAppPurchaseIosPlatformAdditionclass. To use them acquire an instance through theInAppPurchase.getPlatformAdditionmethod like so:
// Acquire the InAppPurchaseIosPlatformAddition instance. InAppPurchaseIosPlatformAddition iosAddition = InAppPurchase.instance.getPlatformAddition<InAppPurchaseIosPlatformAddition>(); // Present the code redemption sheet. await iosAddition.presentCodeRedemptionSheet(); // Refresh purchase verification data. PurchaseVerificationData? verificationData = await iosAddition.refreshPurchaseVerificationData();- The store_kit_wrappers have been moved into the in_app_purchase_ios package. They are still available in the in_app_purchase plugin, but to use them it is necessary to import the correct package when using them:
import 'package:in_app_purchase_ios/store_kit_wrappers.dart';; - Update the minimum supported Flutter version to 1.20.0.
- The iOS specific methods
- Changes to the platform agnostic interface:
-
0.6.0+118 May 2021 -
0.5.209 Apr 2021 -
0.5.106 Mar 2021 -
0.5.1+125 Mar 2021 -
0.5.1+206 Apr 2021 -
0.5.1+307 Apr 2021Release notes
Open source →- Configured the iOS example App to make use of StoreKit Testing on iOS 14 and higher.
-
0.5.002 Mar 2021Release notes
Open source →- Migrate to Google Billing Library 3.0
- Add
obfuscatedProfileId,purchaseTokenin [BillingClientWrapper.launchBillingFlow]. - Breaking Change
- Removed
developerPayloadin [BillingClientWrapper.acknowledgePurchase], [BillingClientWrapper.consumeAsync], [InAppPurchaseConnection.completePurchase], [InAppPurchaseConnection.consumePurchase]. - Removed
isRewardedfrom [SkuDetailsWrapper]. - [SkuDetailsWrapper.introductoryPriceCycles] now returns
intinstead ofString. - Above breaking changes are inline with the breaking changes introduced in Google Play Billing 3.0 release.
- Additional information on some the changes:
- Removed
- Add
- Migrate to Google Billing Library 3.0
-
0.4.125 Feb 2021 -
0.4.022 Feb 2021Release notes
Open source →- Migrate to nullsafety.
- Deprecate
sandboxTesting, introducesimulatesAskToBuyInSandbox. - Breaking Change:
- Removed
callbackChannelinchannels.dart, see https://github.com/flutter/flutter/issues/69225.
- Removed
-
0.3.507 Jan 2021Release notes
Open source →- [Android] Fixed: added support for the SERVICE_TIMEOUT (-3) response code.
-
0.3.5+108 Jan 2021Release notes
Open source →- Update the example app: remove the deprecated
RaisedButtonandFlatButtonwidgets.
- Update the example app: remove the deprecated
-
0.3.426 May 2020 -
0.3.4+124 Jun 2020Release notes
Open source →- iOS: Fix the bug that
SKPaymentQueueWrapper.transactionsdoesn't return all transactions. - iOS: Fix the app crashes if
InAppPurchaseConnection.instanceis called in themain().
- iOS: Fix the bug that
-
0.3.4+301 Aug 2020 -
0.3.4+422 Aug 2020 -
0.3.4+526 Aug 2020 -
0.3.4+610 Sep 2020Release notes
Open source →- iOS: Fix the bug that prevent restored subscription transactions from being completed
-
0.3.4+711 Sep 2020 -
0.3.4+812 Sep 2020Release notes
Open source →- [iOS] Fixed: purchase dialog not showing always.
- [iOS] Fixed: completing purchases could fail.
- [iOS] Fixed: restorePurchases caused hang (call never returned).
-
0.3.4+923 Sep 2020Release notes
Open source →- [iOS] Fixed: purchase dialog not showing always.
- [iOS] Fixed: completing purchases could fail.
- [iOS] Fixed: restorePurchases caused hang (call never returned).
-
0.3.4+1029 Sep 2020