Skip to main content

Entitlements

When entitlements don’t match a player’s purchase activity, check for the following cases:
  • If you’re testing in a development sandbox on PC, XBOX test accounts must sign into the XBOX App before they sign into the Microsoft Store. If a test account signs into the Microsoft Store first, the Microsoft Store defaults to using the RETAIL environment.
  • Pre-order entitlements are inactive until their release date and aren’t returned with client-based entitlement queries.
  • Ensure that test accounts are restricted to purchasing within a single sandbox. The collections service can return invalid results if the account has entitlements in multiple sandboxes.
  • If you’re testing in a development sandbox on console, an entitlement is immediately granted for a free product after selecting the Get button on the product details page in the Microsoft Store or when the game calls XStoreShowPurchaseUIAsync. The entitlement is granted even if the purchase is aborted. To avoid an automatic entitlement grant from occurring, publish add-on content with a non-zero price in sandbox.
For more information about entitlements, see Granting players access to add-on content.

Licensing

When a license is acquired for content a player doesn’t own, verify that license sharing or caching isn’t occurring on the device.
  • License sharing and caching can leave test machines in an unclean state.
    • Removing accounts from a device doesn’t remove their ‘offline’ designation. Offline-capable licenses continue to be shared with other accounts until the designation is changed or the licenses expire.
    • When a new account is added to a PC, the ‘Offline permissions’ setting can automatically be enabled for the account, which can cause unexpected license sharing to occur.
  • To ensure a clean PC environment, always test in a fresh Virtual Machine.
  • To return the console to a clean state, try the following steps:
    • Disable ‘Home XBOX’ (Settings > General > Personalization > My home XBOX) for each test account before removing them from the device.
    • Run ‘Reset home XBOX’ (Settings > Developer > Developer Settings) multiple times (15+) to remove the device designation for older accounts and then reboot the console.
    • If licenses continue to be shared, a factory reset might be required.
For more information about licensing, see Granting players access to add-on content.

Callback assigned in XPackageRegisterPackageInstalled isn’t hit when DLC (Durable with package) is installed

If DLC installation state isn’t obvious, first check xbapp listdlc or wdapp listdlc to verify that the expected DLC is listed. Then check that the AllowedProduct in DLC microsoftgame.config matches that of the base game’s StoreId node in its microsoftgame.config If this DLC is a Smart Delivery product and the XBOX Series X/S base game is using an ERA DLC package, and the AllowedProduct in the ERA DLC’s appxmanifest isn’t the same as the product ID assigned to the XBOX Series X/S base game (xbapp list /d), then you might need to override the product ID. This override is only possible for a packaged build:
This situation can arise with an XBOX One base game that was migrated from the retired XBOX Developer Portal site.

XStoreShowPurchaseUIAsync on PC shows purchase dialog briefly then returns E_ABORT

This issue can occur when:
  • XStoreShowPurchaseUIAsync is called from an elevated (Administrator) process.
  • You’re debugging in Visual Studio with Administrator privileges, or from any process that was set to Run as Administrator. The solution is to avoid calling this API while running as Administrator.
  • UAC (User Access Control) is set to not display the confirmation prompt to the interactive user’s desktop.
UAC is governed with these registry values: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\PromptOnSecureDesktop EnableLUA should be 1. In some instances, toggling PromptOnSecureDesktop to 0 can also be effective. This page has more information on this and other related controls.

Reference API documentation

See also

Commerce Overview Enabling XStore development and testing XStore API reference
Last modified on August 20, 2026