NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #514 most downloaded on pub.dev
A Flutter plugin for in-app purchases. Exposes APIs for making in-app purchases through the App Store and Google Play.
Last release 19 days ago
18 Sep 2026
Release timing varies
gaps range from 4 weeks to 13 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
107 releases · first in 2018
Adds a readme_examples.dart file under example/lib for the in_app_purchase package and switches the package README to use <?code-excerpt?> -generated
Adds a readme_examples.dart file under example/lib for the in_app_purchase package and switches the package README to use <?code-excerpt?>-generated snippets sourced from it, instead of hand-maintained inline code blocks. This keeps the README examples compiling and in sync with the current package API, and removes in_app_purchase's exemption from code-excerpt adoption.
Also fixes several runtime-safety issues in those new excerpts that were flagged in review (missing Platform.isIOS/Platform.isMacOS guards around StoreKit-only APIs, and unsafe null/index access when reading Android subscription offers and StoreKit 2 transactions), and bumps the package version with a CHANGELOG entry for the change.
Addresses the in_app_purchase/in_app_purchase item of flutter/flutter#102679 (that issue tracks many packages, so it should stay open after this merges).
Test plan
Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the gemini-code-assist bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.
One column per quarter.
Updates in_app_purchase_android dependency to ^0.5.0.
in_app_purchase_android dependency to ^0.5.0.Bump org.json:json from 20251224 to 20260522 in example.
completePurchase usage and the consequences of unfinished transactions in the README and docstrings.Updates minimum in_app_purchase_storekit version to 0.4.0.
in_app_purchase_storekit version to 0.4.0.Updates README with Storekit 2 examples.
Updates minimum supported SDK version to Flutter 3.24/Dart 3.5.
in_app_purchase_android to 0.4.0.Updates minimum supported SDK version to Flutter 3.13/Dart 3.1.
countryCode API.Updates minimum required plugin_platform_interface version to 2.1.7.
Updates minimum supported SDK version to Flutter 3.10/Dart 3.0.
Updates documentation reference of finishPurchase to completePurchase.
finishPurchase to completePurchase.Updates example code for current versions of Flutter.
Adds pub topics to package metadata.
Updates documentation on handling subscription price changes to match Android's billing client v5.
Fixes unawaited_futures violations.
Bumps minimum in_app_purchase_android version to 0.3.0.
Updates links for the merge of flutter/plugins into flutter/packages.
Updates iOS minimum version in README.
Adds screenshots to pubspec.yaml.
Adds macOS as a supported platform.
Updates minimum Flutter version to 2.10.
Fixes avoid_redundant_argument_values lint warnings and minor typos.
Ignores deprecation warnings for upcoming styleFrom button API changes.
Updates references to the obsolete master branch.
Minor fixes for new analysis options.
Adds OS version support information to README.
Adds additional explanation on why it is important to complete a purchase.
Internal code cleanup for stricter analysis options.
BREAKING CHANGE Updates restorePurchases to emit an empty list of purchases on StoreKit when there are no purchases to restore (same as Android).
restorePurchases to emit an empty list of purchases on StoreKit when there are no purchases to restore (same as Android).
Removes the instructions on initializing the plugin since this functionality is deprecated.
Deprecates the InAppPurchaseAndroidPlatformAddition.enablePendingPurchases() method and InAppPurchaseAndroidPlatformAddition.enablePendingPurchase pro…
BREAKING CHANGES:
PurchaseStatus named canceled. This means developers can distinguish between an error and user cancellation.restorePurchases to emit an empty list of purchases on StoreKit when there are no purchases to restore (same as Android).in_app_purchase_ios to in_app_purchase_storekit.InAppPurchaseIosPlatform to InAppPurchaseStoreKitPlatform.InAppPurchaseIosPlatformAddition to
InAppPurchaseStoreKitPlatformAddition.Deprecates the InAppPurchaseAndroidPlatformAddition.enablePendingPurchases() method and InAppPurchaseAndroidPlatformAddition.enablePendingPurchase property.
Adds support for promotional offers on the store_kit_wrappers Dart API.
Fixes integration tests.
Updates example app Android compileSdkVersion to 31.
Handle purchases with PurchaseStatus.restored correctly in the example App.
PurchaseStatus.restored correctly in the example App.in_app_purchase_android and in_app_purchase_ios to their latest versions (version 0.1.5 and 0.1.3+5 respectively).Fix repository link in pubspec.yaml.
Added import flutter foundation dependency in README.md to be able to use defaultTargetPlatform.
defaultTargetPlatform.Add explanation for casting ProductDetails and PurchaseDetails to platform specific implementations in the readme.
ProductDetails and PurchaseDetails to platform specific implementations in the readme.Fix Restoring previous purchases link in the README.md.
Restoring previous purchases link in the README.md.Added a "Restore purchases" button to conform to Apple's StoreKit guidelines on restoring products;
Fix ignoring "autoConsume" param in "InAppPurchase.instance.buyConsumable".
Migrate maven repository from jcenter to mavenCentral.
Stable release of in_app_purchase plugin.
…platforms this version contains the following breaking changes:
As part of implementing federated architecture and making the interface compatible for other platforms this version contains the following breaking changes:
InAppPurchaseConnection.instance to access generic In App Purchase APIs, please use InAppPurchase.instance instead;InAppPurchaseConnection.purchaseUpdatedStream has been renamed to InAppPurchase.purchaseStream;InAppPurchaseConnection.queryPastPurchases method has been removed. Instead, you should use InAppPurchase.restorePurchases. This method emits each restored purchase on the InAppPurchase.purchaseStream, the PurchaseDetails object will be marked with a status of PurchaseStatus.restored;InAppPurchase.completePurchase method no longer returns an instance BillingWrapperResult class (which was Android specific). Instead it will return a completed Future if the method executed successfully, in case of errors it will complete with an InAppPurchaseException describing the error.InAppPurchaseConnection.consumePurchase and InAppPurchaseConnection.enablePendingPurchases methods have been removed from the platform agnostic interface and moved to the Android specific InAppPurchaseAndroidPlatformAddition class:
InAppPurchaseAndroidPlatformAddition.enablePendingPurchases is 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';);InAppPurchaseAndroidPlatformAddition.consumePurchase method, acquire an instance using the InAppPurchase.getPlatformAddition method. For example:// Acquire the InAppPurchaseAndroidPlatformAddition instance.
InAppPurchaseAndroidPlatformAddition androidAddition = InAppPurchase.instance.getPlatformAddition<InAppPurchaseAndroidPlatformAddition>();
// Consume an Android purchase.
BillingResultWrapper billingResult = await androidAddition.consumePurchase(purchase);
import 'package:in_app_purchase_android/billing_client_wrappers.dart';;InAppPurchaseConnection.presentCodeRedemptionSheet and InAppPurchaseConnection.refreshPurchaseVerificationData methods have been removed from the platform agnostic interface and moved into the iOS specific InAppPurchaseIosPlatformAddition class. To use them acquire an instance through the InAppPurchase.getPlatformAddition method 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();
import 'package:in_app_purchase_ios/store_kit_wrappers.dart';;Added a reference to the in-app purchase codelab in the README.md.
Added rawPrice and currencyCode to the ProductDetails model.
rawPrice and currencyCode to the ProductDetails model.[iOS] Introduce SKPaymentQueueWrapper.presentCodeRedemptionSheet
SKPaymentQueueWrapper.presentCodeRedemptionSheetFix error message when trying to consume purchase on iOS.
Update README to provide a better instruction of the plugin.
Configured the iOS example App to make use of StoreKit Testing on iOS 14 and higher.
Above breaking changes are inline with the breaking changes introduced in Google Play Billing 3.0 release.
obfuscatedProfileId, purchaseToken in [BillingClientWrapper.launchBillingFlow].developerPayload in [BillingClientWrapper.acknowledgePurchase], [BillingClientWrapper.consumeAsync], [InAppPurchaseConnection.completePurchase], [InAppPurchaseConnection.consumePurchase].isRewarded from [SkuDetailsWrapper].int instead of String.Support InApp subscription upgrade/downgrade.
Deprecate sandboxTesting, introduce simulatesAskToBuyInSandbox.
sandboxTesting, introduce simulatesAskToBuyInSandbox.callbackChannel in channels.dart, see https://github.com/flutter/flutter/issues/69225.[Android] Fixed: added support for the SERVICE_TIMEOUT (-3) response code.
Update the example app: remove the deprecated RaisedButton and FlatButton widgets.
RaisedButton and FlatButton widgets.Expose SKError code to client apps.
iOS: Fix the bug that SKPaymentQueueWrapper.transactions doesn't return all transactions.
SKPaymentQueueWrapper.transactions doesn't return all transactions.InAppPurchaseConnection.instance is called in the main().Fixed typo 'manuelly' for 'manually'.
Update package:e2e -> package:integration_test
Added necessary README docs for getting started with Android.
iOS: Fix the bug that prevent restored subscription transactions from being completed
iOS: Fix typo of the simulatesAskToBuyInSandbox key.
simulatesAskToBuyInSandbox key.[iOS] Fixed: purchase dialog not showing always.
[iOS] Fixed: purchase dialog not showing always.
Your coding agent can read these notes before it upgrades. Set up the MCP server →