Skip to content

Releases: needle-mirror/com.unity.purchasing

5.4.2

Choose a tag to compare

@Needle-Mirror-Bot Needle-Mirror-Bot released this 25 Jul 22:11

[5.4.2] - 2026-07-24

Added

  • Payment Providers - IPaymentProvidersExtendedPurchaseService.SetCustomReferenceId(string?) — sets the CustomReferenceId sent on new Payment Provider orders, echoed back on the order and its webhooks so you can reconcile IAP orders with your own internal system.
  • Payment Providers - IPaymentProvidersExtendedPurchaseService.SetCustomMetadata(IReadOnlyDictionary<string, string>?) — sets an arbitrary string key/value dictionary sent as Metadata on new Payment Provider orders.
  • Payment Providers - IPaymentProvidersOrderInfo — Payment-Provider-specific order details accessible via order.Info.PaymentProviders. Exposes CustomReferenceId (the value set via SetCustomReferenceId) and Metadata (the value set via SetCustomMetadata).
  • Authoring - Deploy auto-creates any webshop categories referenced by catalog items but missing from the categories document. Existing categories are left untouched.

Changed

  • Package description - Corrected the setup instructions to point to Services > In-App Purchasing > Configure, replacing the outdated Window > General > Services path.
  • Purchasing - Purchases with a store specific id not found in the current catalog will attempt to find the matching uSku in the Remote Catalog
  • Purchase Options UI - Replace "Google Pay" and "Apple Pay" assets with appropriate "Google Play" and "In-App Purchase" assets.

Fixed

  • GooglePlay - A failed purchases query (non-OK billing result) was indistinguishable from a user owning no purchases, so a lapsed subscription could not be reliably detected.
    • FetchPurchases now invokes OnPurchasesFetchFailed on failure with the billing response code instead of OnPurchasesFetched with an empty list.
    • CheckEntitlement now reports EntitlementStatus.Unknown on failure instead of EntitlementStatus.NotEntitled when the purchases query fails.
  • Apple (StoreKit 2) - FetchPurchases no longer reports expired subscriptions as pending purchases via OnPurchasePending.
  • Apple (StoreKit 2) - Purchase failures were reported with the wrong PurchaseFailureReason. Unknown errors were surfaced as either ValidationFailure or SignatureInvalid.
  • Apple (StoreKit 2) - Purchase failures that have a specific PurchaseFailureReason are now more accurately reported instead of being Unknown.
  • Apple (StoreKit 2) - confirm success (OnPurchaseConfirmed) is now reported only after the native Transaction.finish call has completed, instead of unconditionally before it ran. A finish that does not find a matching unfinished transaction now reports a DuplicateTransaction confirm failure, as the transaction has likely already been finished.
  • Apple - Added missing tvOS 18.1 availability check, causing 'ExternalPurchaseCustomLink' is only available in tvOS 18.1 or newer build failure.

5.4.1

Choose a tag to compare

@Needle-Mirror-Bot Needle-Mirror-Bot released this 08 Jul 22:14

[5.4.1] - 2026-07-07

Changed

  • Updated AI skill with D2C and migration patterns.

Fixed

  • Apple - Resolved compiler error when building for macOS.
  • Catalog Editor - Changed visibility on some generated classes from public to internal.

5.4.0

Choose a tag to compare

@Needle-Mirror-Bot Needle-Mirror-Bot released this 30 Jun 22:12

[5.4.0] - 2026-06-29

Added

  • Direct to Consumer (D2C) payment providers - Integrate D2C payment providers with Unity In-App Purchasing to sell and fulfill products through off-platform transactions.
  • Unity Webshops - Launch a branded web storefront for your In-App Purchasing catalog from the Unity Dashboard, with theming, hosting, and payments handled for you.
  • Remote Catalog - Define your product catalog and upload it to the Remote Catalog service.
  • Purchase Options UI - Start a purchase from your application and let players choose how to pay with the Purchase Options UI.

5.3.1

Choose a tag to compare

@Needle-Mirror-Bot Needle-Mirror-Bot released this 27 May 22:14

[5.3.1] - 2026-05-27

Added

Fixed

  • Fixed compile errors caused by naming collisions when a project imports a third-party package that exposes a top-level UnityUtil namespace.
  • Google - Fixed a race condition where purchases could be silently lost when FetchPurchases completed before FetchProducts populated the product details cache. Missing product details are now pre-fetched before purchases are built.
  • Google - Fixed a NullReferenceException when constructing a GooglePurchase for an owned purchase whose AccountIdentifiers are null (test purchases or apps that don't call SetObfuscatedAccountId).
  • Google - Fixed a NullReferenceException in ProductDetailsConverter.BuildProductDescription when a product has no subscription offer details (returned as null by Google Play for non-subscription products).
  • Google - Fixed a NullReferenceException where Purchase references received from QueryPurchasesAsync could become invalid across an async boundary. The references are now cloned to long-lived global JNI references inside the billing-client callback.

5.3.0

Choose a tag to compare

@Needle-Mirror-Bot Needle-Mirror-Bot released this 04 May 22:13

[5.3.0] - 2026-05-04

Added

  • Added support for disabled domain reload in the Editor.
  • Xbox - Added integration with Xbox Store for Xbox Series, Xbox One, and Windows. Get started with Unity GDK integration.
  • Project Settings allow you to access IAP AI skill with migration capabilities from v4 to v5

Fixed

  • Apple - Fixed Swift 6 strict concurrency warnings that caused build failures when SWIFT_STRICT_CONCURRENCY is set to complete.
  • Apple - Fixed RestorePurchases/FetchPurchases callback never firing on StoreKit 1 when the user has no purchase history.
  • Apple - Fixed visionOS incorrectly defaulting to StoreKit 1 instead of StoreKit 2.
    • To continue using the previous behaviour, set StoreKitSelector.forceStoreKit1 to true on visionOS.
  • Fixed IndexOutOfRangeException happening in the catalog editor when exporting with an empty catalog item.

4.15.1

Choose a tag to compare

@Needle-Mirror-Bot Needle-Mirror-Bot released this 21 Apr 22:11

[4.15.1] - 2026-04-20

Fixed

  • Apple - Restored visionOS platform support in iOS plugin meta files, which was accidentally removed in 4.13.0.

5.2.1

Choose a tag to compare

@Needle-Mirror-Bot Needle-Mirror-Bot released this 28 Mar 22:10

[5.2.1] - 2026-03-27

Fixed

  • Apple - Fixed an issue where OnPurchaseFailed would not trigger when re-purchasing non-consumables.
  • Apple - Fixed tvOS build failure caused by missing tvOS 15.0 availability on the SKPaymentTransactionObserver extension in PurchaseUseCase.swift.
  • Apple - Fixed GetProductDetails returning an empty dictionary.
  • Google - Fixed an issue where OnPurchasesFetchFailed could be triggered when foregrounding the application while the store connection wasn't established.
  • Updated description of OnPurchaseDeferred in IPurchaseService and StoreController.

4.15.0

Choose a tag to compare

@Needle-Mirror-Bot Needle-Mirror-Bot released this 25 Mar 22:16

[4.15.0] - 2026-03-25

5.2.0

Choose a tag to compare

@Needle-Mirror-Bot Needle-Mirror-Bot released this 13 Mar 22:15

[5.2.0] - 2026-02-23

Added

  • Added OnStoreConnected callback to complement the existing OnStoreDisconnected callback, to provide symmetrical connection state handling.

Fixed

  • Apple - Fixed StorefrontResponse not being found on VisionOS.
  • Apple -IPurchaseService.ProcessPendingOrdersOnPurchasesFetched applies to AppleAppStore and MacAppStore.
    • This resolves a issue on iOS 26.2+, where OnPurchasePending was not invoked for existing pending orders during startup.
    • Setting IPurchaseService.ProcessPendingOrdersOnPurchasesFetched to false on Apple platforms may result in missing OnPurchasePending events for iOS versions 26.2+.
  • Apple - Fixed InvalidPublicKeyException exception being thrown when creating a CrossPlatformValidator.
    • If you experienced this issue, regenerate your AppleTangle.cs via Services > In-app Purchasing > Configure, and selecting Obfuscate Apple License Key.
  • Google - Fixed purchases made while the application is backgrounded not invoking the OnPurchasePending when foregrounding the application.
  • Fixed DuplicatedTransaction happening on first time purchasing Consumables/Non-Consumables.

5.2.0-pre.2

Choose a tag to compare

@Needle-Mirror-Bot Needle-Mirror-Bot released this 04 Feb 02:46

[5.2.0-pre.2] - 2026-02-03

  • GooglePlay - Fixed an exception that can occur when calling ExternalBillingProgramClient.CreateBillingProgramReportingDetailsAsync