Close the Revenue Leak: Block Self-Service Purchasing Across Every Tenant

TL;DR
- Microsoft's self-service purchase lets end users buy a limited set of subscriptions on their own credit card, billed and supported directly by Microsoft outside the CSP model.
- As of April 2021, the product list is short, but Microsoft confirmed two more offerings arrive April 19, 2021, and the long-term scope is unclear.
- For MSPs, self-service purchasing means license sprawl outside your CSP margin and products Microsoft supports directly instead of you.
- A single PowerShell script using Set-MsolCompanySettings -AllowAdHocSubscriptions $false disables it across every tenant in Partner Center.
- Add the same cmdlet to your onboarding checklist so net-new customers are covered after you become partner of record.
For over a year, Microsoft has let end users buy their own subscriptions. From Microsoft's FAQ (opens in new tab): "Customers can make a self-service purchase online from the product websites or from in-app purchase prompts. Customers are first asked to enter an email address to ensure that they're a user in an existing Azure Active Directory (AD) tenant." The user puts their own credit card on file and owns the subscription. Until now this has been a minor concern, for two reasons:
- It is uncommon for an end user to stumble onto these purchasing sites.
- Only a limited subset of products is actually available for self-service purchase.
Run a few cmdlets and you can see everything available today:

Why this is becoming a margin problem
Microsoft recently announced in the message center that two more offerings join self-service purchasing on April 19, 2021. How many products they intend to add long-term is unclear, and that uncertainty is the issue. For MSPs, the concerns are concrete:
- License sprawl outside the CSP model and your main margin stream.
- Products supported directly by Microsoft instead of through the CSP provider.
Because Microsoft's long-term intentions are uncertain, the safe move is to disable this purchasing path across all the tenants you manage in Partner Center.
The script that disables it everywhere
This script checks for the MSOnline module, installs it if missing, connects to Partner Center, and disables self-service purchasing in every tenant:
Write-Host "Checking for MSOnline module..."
$Module = Get-Module -Name "MSOnline" -ListAvailable
if ($Module -eq $null) {
Write-Host "MSOnline module not found, installing MSOnline"
Install-Module -name MSOnline
}
Write-Host "Please Enter your Partner Center Global Admin Credentials"
Connect-MSolservice -Credential $credential
$tenants = Get-MsolPartnerContract -All
ForEach($tenant in $tenants){
Write-Host "Disabling Self-Service for $($tenant.Name)" -ForegroundColor Green
Set-MsolCompanySettings -Tenant $tenant.tenantID -AllowAdHocSubscriptions $false
}The script is on GitHub (opens in new tab).
Credentials: You need to be a Global Admin in Partner Center to run this script.
Once it runs, you see the setting being disabled across your customer tenants:

What the cmdlet actually does, and covering future customers
Microsoft's PowerShell documentation (opens in new tab) defines the Set-MsolCompanySettings -AllowAdHocSubscriptions cmdlet this way: "Indicates whether to allow users to sign up for email based subscriptions. This setting is applied company-wide."
For net-new customers you onboard later, add the Set-MsolCompanySettings cmdlet to your onboarding checklist, or rerun this script after you have added yourself as partner of record in their account. For more background, see Microsoft's self-service sign-up support article (opens in new tab).
Frequently asked questions
What is self-service purchasing in Microsoft 365?
It is a Microsoft feature that lets end users buy certain subscriptions on their own, entering their email to confirm they belong to an existing Azure AD tenant and putting their own credit card on file. The user owns and is responsible for that subscription, and Microsoft bills and supports it directly rather than routing it through the CSP partner.
Why should an MSP disable self-service purchasing?
Two reasons. It creates license sprawl outside your CSP model and your main margin stream, and those products are supported directly by Microsoft instead of through you. Disabling it keeps purchasing inside the relationship you manage and bill.
Does the script cover customers I onboard later?
No. The script disables self-service for the tenants currently in your Partner Center. For net-new customers, add the Set-MsolCompanySettings cmdlet to your onboarding checklist, or rerun the script after you have added yourself as partner of record in their account.
Catch the settings that drift back
A disabled setting today can be re-enabled tomorrow, by Microsoft or by a tenant admin. CloudCapsule checks every tenant you manage against 250+ controls in 60 seconds, so a control that passed last quarter can't quietly fail this one.
Try a free scan
Written by
Nick Ross
CEO · Microsoft MVP · Founder, T-Minus 365
Nick is not just a CEO, he's a respected thought leader and influencer in the MSP space. Tens of thousands of MSPs learn through his YouTube channel, T-Minus365. Nick has been honored as a three-time Microsoft MVP for his educational content; his expertise and influence are the backbone of our mission, ensuring that you are in the best hands when it comes to security.
Nick joined Pax8 in 2017, where he would ultimately oversee product management for PSA and Microsoft integrations. Following his tenure at Pax8, Nick has continued to demonstrate his leadership prowess as an executive at various MSPs, culminating in his most recent role at Sourcepass.
Nick holds a Bachelor's Degree in Business Management from Florida State University, as well as a Minor Degree in Entrepreneurship. In his free time, Nick is an avid hiker, reader, and fitness-junkie.


