NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #525 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 12 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
Fixed typo 'verity' for 'verify'.
[iOS] Fixed: crash when sending null for simulatesAskToBuyInSandbox parameter.
[iOS] Fixed: finishing purchases upon payment dialog cancellation.
One column per quarter.
Add test target to iOS example app Podfile
Update android compileSdkVersion to 29.
Add Dartdocs to all public APIs.
Introduce SKPaymentQueueWrapper.transactions.
SKPaymentQueueWrapper.transactions.Update documentations for InAppPurchase.completePurchase and update README.
InAppPurchase.completePurchase and update README.Post-v2 Android embedding cleanups.
iOS: Fix only transactions with SKPaymentTransactionStatePurchased and SKPaymentTransactionStateFailed can be finished.
Fix CocoaPods podspec lint warnings.
Android: Fix a bug where the BillingClient is disconnected when app goes to the background.
BillingClient is disconnected when app goes to the background.BillingClient object is disconnected before the activity is destroyed.Add pedantic to dev_dependency.
pedantic to dev_dependency.Fix potential casting crash on Android v1 embedding when registering life cycle callbacks.
[Breaking Change]: All the BillingClient methods that previously return a BillingResponse now return a BillingResultWrapper, including: launchBillingF…
Google Play Library to 2.0.3.
BillingResultWrapper which contains a detailed result of a BillingClient operation.
BillingResponse now return a BillingResultWrapper, including: launchBillingFlow, startConnection and consumeAsync.SkuDetailsResponseWrapper now contains a billingResult field in place of billingResponse field.billingResult field is added to the PurchasesResultWrapper.PurchaseWrapper: Add developerPayload, purchaseState and isAcknowledged fields.SkuDetailsWrapper: Add originalPrice and originalPriceAmountMicros fields.BillingClient.queryPurchaseHistory is updated to return a PurchasesHistoryResult, which contains a list of PurchaseHistoryRecordWrapper instead of PurchaseWrapper. A PurchaseHistoryRecordWrapper object has the same fields and values as A PurchaseWrapper object, except that a PurchaseHistoryRecordWrapper object does not contain isAutoRenewing, orderId and packageName.BillingClient.acknowledgePurchase API. Starting from this version, the developer has to acknowledge any purchase on Android using this API within 3 days of purchase, or the user will be refunded. Note that if a product is "consumed" via BillingClient.consumeAsync, it is implicitly acknowledged.enablePendingPurchases in BillingClientWrapper. The application has to call this method before calling BillingClientWrapper.startConnection. See enablePendingPurchases for more information.InAppPurchaseConnection.completePurchase now returns a Future<BillingResultWrapper> instead of Future<void>. A new optional parameter {String developerPayload} has also been added to the API. On Android, this API does not throw an exception anymore, it instead acknowledge the purchase. If a purchase is not completed within 3 days on Android, the user will be refunded.InAppPurchaseConnection.consumePurchase now returns a Future<BillingResultWrapper> instead of Future<BillingResponse>. A new optional parameter {String developerPayload} has also been added to the API.pendingCompletePurchase has been added to the PurchaseDetails class. Which can be used as an indicator of whether to call InAppPurchaseConnection.completePurchase on the purchase.enablePendingPurchases in InAppPurchaseConnection. The application has to call this method when initializing the InAppPurchaseConnection on Android. See enablePendingPurchases for more information.BillingClient migration and some documentation fixes.Fixing usage example. No functional changes.
Update te example app to avoid using deprecated api.
Fix pendingCompletePurchase flag status to allow to complete purchases.
Support the v2 Android embedder.
Android: Use android.arch.lifecycle instead of androidx.lifecycle:lifecycle in build.gradle to support apps that has not been migrated to AndroidX.
build.gradle to support apps that has not been migrated to AndroidX.Include lifecycle dependency as a compileOnly one on Android to resolve potential version conflicts with other transitive libraries.
Fix failing pedantic lints. None of these fixes should have any change in functionality.
Remove the deprecated author: field from pubspec.yaml
author: field from pubspec.yamlUpdate version of json_annotation to ^3.0.0 and json_serializable to ^3.2.0. Resolve conflicts with other packages e.g. flutter_tools from sdk.
* Correct a comment.
iOS: Add currencyCode to priceLocale on productDetails.
* Remove skipped driver test.
Android: Require a non-null Activity to use the launchBillingFlow method.
launchBillingFlow method.Android : Improved testability.
Update and migrate iOS example project.
* Define clang module for iOS. * Fix iOS build warning.
[Breaking Change] Rename 'PurchaseError' to 'IAPError'.
Fix an issue the type is not casted before passing to PurchasesResultWrapper.fromJson.
PurchasesResultWrapper.fromJson.Fix a google_play_connection purchase update listener regression introduced in 0.2.0+1.
Update the README.md so that the code samples compile with the latest Flutter/Dart version.
README.md so that the code samples compile with the latest Flutter/Dart version.Fixed code error in README.md and adjusted links to work on Pub.
README.md and adjusted links to work on Pub.iOS: Support unsupported UserInfo value types on NSError.
Add missing hashCode implementations.
hashCode implementations.Some error messages from iOS are slightly changed.
ProductDetailsResponse returned by queryProductDetails() now contains an PurchaseError object that represents any error that might occurred during the request.queryPastPurchases() on iOS now have the error stored in the response instead of throwing.queryProductDetails() and queryProductDetails().Make AdditionalSteps(Used in the unit test) a void function.
AdditionalSteps(Used in the unit test) a void function.Add missing template type parameter to invokeMethod calls.
invokeMethod calls.Ability to list products, load previous purchases, and make purchases.
Beta release.
StoreKit and BillingClient.Includes:
Manifest versionCode not found (#1076)strong_mode_implicit_dynamic_method for invokeMethod calls. (#1065)Add more consumable handling to the example app.
Fix bug where error only purchases updates weren't propagated correctly in google_play_connection.dart.
google_play_connection.dart.Guard against multiple onSetupFinished() calls.
Change the buy methods to return Future instead of void in order to propagate launchBillingFlow failures up through google_play_connection.
buy methods to return Future<bool> instead of void in order
to propagate launchBillingFlow failures up through google_play_connection.Added missing flutter_test package dependency.
Your coding agent can read these notes before it upgrades. Set up the MCP server →