Microsoft Store in-app purchases and subscriptions explained
In the Microsoft Store, anything people buy inside your app is an add-on. Here's what each kind of add-on does, how you create one in Partner Center and sell it from your code, how to test it, and when a non-game app can skip Microsoft's commerce and use its own.
Use a durable add-on for a one-time unlock, a consumable for things people use up, and a subscription for recurring billing. If your app isn't a game, decide early whether you'd rather use your own checkout.
- There are four add-on types: durable, developer-managed consumable, Store-managed consumable and subscription.
- You create each add-on in Partner Center and it goes through its own certification.
- Your app sells it with StoreContext.RequestPurchaseAsync from the Windows.Services.Store namespace.
- Testing needs the app published in the Store, though it can stay hidden.
- Non-game apps on Windows PCs can use Stripe or another secure third-party API instead.
What kinds of add-ons are there?
Microsoft's in-app purchases overview lists four types. You pick one when you create the add-on, and you can't change it afterwards.
| Type | How it works |
|---|---|
| Durable | Bought once and kept forever by default. You can give it a lifetime of 1 to 365 days instead, and then people can buy it again after it expires. |
| Developer-managed consumable | Bought, used up, then bought again. Your app or service tracks the balance, and the customer can't buy it again until you report the last purchase as fulfilled. |
| Store-managed consumable | Bought as often as people like. The Store tracks the balance across their devices, and your app reports how many units were used. |
| Subscription | A durable add-on billed every 1, 3 or 6 months, or every 1 or 2 years, with an optional 1 week or 1 month free trial. Customers can cancel at any time. |
Store-managed consumables and subscriptions need the Windows.Services.Store namespace and Windows 10, version 1607 or later. The older Windows.ApplicationModel.Store namespace still works for durables and developer-managed consumables, but Microsoft no longer adds features to it and it isn't supported in packaged desktop apps.
How do I create an add-on in Partner Center?
You need a developer account and the app already created in Partner Center. If you don't have those yet, start with the developer account guide. Then follow Create an add-on submission.
- Open your app's Add-ons page and select Create a new add-on.
- Choose the product type and enter a product ID.
- Select Start your submission and fill in properties, pricing and availability, and the Store listing (the title and description customers see).
- Select Submit to the Store. The add-on goes through certification like an app submission.
A few rules about product IDs and timing are worth knowing before you start.
- A product ID has to be unique within the app and can be up to 100 characters long.
- You can't change or delete a product ID once the add-on is published.
- The product ID is yours. Partner Center also gives each add-on a 12-character Store ID, and that's what most Windows.Services.Store methods take.
- Store-managed consumables and subscriptions can't be published until the app itself is, though you can work on the submission any time.
- New add-ons start at Free. Price tiers are the same as for apps, which the pricing and markets guide covers.
How does my app sell an add-on?
Through the StoreContext class in Windows.Services.Store. You get a StoreContext, check the customer's license with GetAppLicenseAsync, and call RequestPurchaseAsync with the add-on's Store ID when they want to buy. The Store shows its own purchase dialog and tells you how it went.
Desktop apps with a window handle, like WinUI 3, WPF or Win32 apps, have to tell StoreContext which window owns that dialog. Microsoft says it returns wrong data or errors if you skip this. Here's the short version for C# on .NET 6 or later.
using Windows.Services.Store;
// In a WinUI 3 or WPF app on .NET 6 or later
var context = StoreContext.GetDefault();
var hwnd = WinRT.Interop.WindowNative.GetWindowHandle(window);
WinRT.Interop.InitializeWithWindow.Initialize(context, hwnd);
// The add-on's Store ID from Partner Center, like 9NBLGGH4R315
StorePurchaseResult result = await context.RequestPurchaseAsync(storeId);
switch (result.Status)
{
case StorePurchaseStatus.Succeeded:
case StorePurchaseStatus.AlreadyPurchased:
// Unlock the feature
break;
case StorePurchaseStatus.NotPurchased:
// The customer cancelled
break;
default:
// NetworkError or ServerError; see result.ExtendedError
break;
}For consumables you also call ReportConsumableFulfillmentAsync once the items are used. For subscriptions, Microsoft's subscription add-ons guide shows how to read the trial and billing period from the add-on's SKU. In-app purchase doesn't work in apps running elevated.
What should I know about subscription add-ons?
- Each add-on has one billing period and one trial, so monthly and yearly plans, with and without a trial, are separate add-ons.
- You can't change the period or trial after publishing, and you can lower the price but never raise it.
- Each customer can only get the free trial once, and they need a valid payment method to start it.
- Customers manage and cancel subscriptions at account.microsoft.com/services. A cancelled subscription runs to the end of the period with no partial refund.
- There's no grace period. If a renewal charge keeps failing, the subscription ends with the period.
- Upgrading between tiers, sales and promotional codes aren't supported for subscriptions.
Microsoft also has REST APIs your server can call to check a user's subscriptions and cancel or extend them, which helps if the same subscription unlocks things on other platforms.
How do I test in-app purchases?
Windows.Services.Store has no simulator. Microsoft's testing guidance works like this.
- Publish the app through certification. You can set it to hidden in the Store while you test, and you can make test add-ons hidden too.
- Create the add-ons you want to test in Partner Center.
- In Visual Studio, use Project, Store, Associate App with the Store and pick that app.
- Install the app from the Store once, run it, and close it so a license lands on your machine.
- Run or debug your local project. It reads the real app and add-on data from the Store.
After that you can keep changing code and debugging without uploading new packages. If you skip the association step, StoreContext calls fail with error 0x803F6107, which means the Store doesn't know the app.
Can I use Stripe or my own payments instead?
For a non-game app on Windows PCs, yes. Policy 10.8.1 of the Microsoft Store Policies (version 7.20) says "Non-game products made available on PC devices may either use a secure third-party purchase API or the Microsoft Store in-product purchase API for in-app purchases of digital items or services that are consumed or used within the product." Policy 10.8.6 says the same for subscriptions with Microsoft's recurring billing API. Purchases made through your own commerce don't pay Microsoft's Store Fee, which the pricing guide breaks down.
When you use a third-party API, policy 10.8.2 asks you to do the following.
- Identify the payment provider, authenticate the user and get their confirmation at checkout.
- Let people turn off in-app purchases or require sign-in for each one, even if you offer to keep them signed in.
- Meet PCI DSS if you or your payment processor collect card details.
- Keep any registration or payment needed at install inside the app. After install, you can send people to a browser to finish.
- Note the third-party purchase API in Partner Center when you submit.
Policy 10.8.4 also asks every app to describe the kinds of in-app purchases and the price range in its listing, and to be clear about the terms of any trial.
| What you sell | Which purchase API |
|---|---|
| Non-game app on Windows PCs | Microsoft's API or a secure third-party API like Stripe |
| Game | Microsoft's API, except games in PC gaming subscription services |
| Any product on Xbox consoles | Microsoft's API |
| Physical goods or services | Microsoft's payment request API or a secure third-party API |
Apps that have to use Microsoft's API can't point people to another way to pay, though they can let people use content they already bought elsewhere.
What StoreFast does and doesn't do here
StoreFast doesn't create, price or submit add-ons, and it doesn't touch their submissions. Set them up in Partner Center. What StoreFast does is publish the app updates that carry your purchase code. You upload the .msix from the dashboard, CI or a coding agent, and StoreFast sends the submission and tracks it through certification.
Questions
- What is a Microsoft Store add-on?
- It's Microsoft's name for an in-app product: something customers buy inside your app, like a feature unlock, a pack of credits or a subscription. Each add-on belongs to one app, has its own product ID, price and listing in Partner Center, and goes through its own submission.
- Can I use Stripe or Paddle in a Microsoft Store app?
- If it's a non-game app on Windows PCs, yes. Store policy 10.8 lets it use a secure third-party purchase API for in-app purchases and subscriptions instead of Microsoft's. You have to note that in Partner Center when you submit, identify the payment provider at checkout and meet PCI DSS for card payments. Games and anything on Xbox consoles have to use the Microsoft Store purchase API.
- Which subscription periods and trials can a subscription add-on have?
- Billing periods of 1 month, 3 months, 6 months, 1 year or 2 years, with an optional free trial of 1 week or 1 month. Each add-on has one period and one trial, so a monthly and a yearly plan are two add-ons. You can't change the period or the trial after you publish.
- Can I test in-app purchases without publishing my app?
- Not with Windows.Services.Store. Microsoft's docs say you have to publish the app, install it from the Store once to get a license, and then debug your local build associated with that app. You can keep the app hidden in the Store while you test. Only the older Windows.ApplicationModel.Store namespace has a simulator.
- Can I raise the price of a subscription add-on later?
- No. Microsoft says you can lower a subscription's price after you publish but you can't raise it. New add-ons start at Free, so set the price before you submit.
- Does StoreFast create or manage add-ons?
- No. StoreFast doesn't create, price or submit add-ons. Set them up in Partner Center. StoreFast publishes the app updates that contain your purchase code.
Ship the update that turns purchases on
Connect your Partner Center account and publish MSIX updates from the dashboard, CI or a coding agent. Try it free for 7 days, no card needed.
Sources
Facts about Microsoft's tools were checked against these pages on October 5, 2026.