A Purview hold does not stop an unpaid OneDrive being deleted at day 365
Since 1 July 2026 an unlicensed OneDrive that is neither relicensed nor covered by unlicensed-account billing is subject to deletion after 365 cumulative unpaid days, whatever Purview retention or hold sits on it, and it drops out of eDiscovery at day 275. This note gives the read-only check.
An unlicensed OneDrive account that is neither relicensed nor covered by unlicensed-account billing is subject to deletion after 365 cumulative unpaid days, and a Purview retention policy or hold does not stop that. The rule has been in force since 1 July 2026, and the account leaves eDiscovery at day 275.
Last verified: 2026-08-20.
What Microsoft actually says
Manage unlicensed OneDrive user accounts carries the rule in one FAQ sentence: "If billing is not enabled for unlicensed OneDrive accounts, and accounts are still retained 365 days after becoming unlicensed, then the unlicensed accounts will be subject to deletion 365 days after being unlicensed even if retention policies, settings, or holds exist on the OneDrive account."
The page defines an unpaid account as one that "isn't covered by an applicable paid license or billing/storage option", and gives its milestones as day counts, not dates. A hold is neither a licence nor a billing option, and "The 365 days of nonpayment is cumulative."
flowchart TD accTitle: The cumulative unpaid clock on an unlicensed OneDrive account accDescr: A vertical timeline of the published unpaid day counts on an unlicensed OneDrive account. Day 1 the clock starts, day 60 read only, day 93 archived, day 275 out of eDiscovery, then a derived 90 day window in which a search returns nothing, ending at day 365 subject to deletion. A side branch shows that switching billing on pauses the count and switching it off resumes it, which is why the 365 days are cumulative. D1["Day 1, clock starts"] --> D60["Day 60, read only"] D60 --> D93["Day 93, archived"] D93 --> D275["Day 275, out of eDiscovery"] D275 -->|"90 days, derived"| D365["Day 365, subject to deletion"] D1 -.->|"billing on"| P1["Count pauses"] P1 -.->|"billing off"| P2["Count resumes, cumulative"]
Why it is easy to get wrong
That FAQ answer opens by saying archived accounts honour retention policies, settings and litigation holds when billing is enabled. The conditional reads as a description of the normal state rather than the precondition it is, and three further surfaces confirm the error.
| What Microsoft publishes | Where | Reader concludes |
|---|---|---|
| "the OneDrive won't be deleted until the hold is removed" | Retention and deletion, body | The hold outranks everything |
| "permanent deletion is always suspended ... under eDiscovery holds" | Retention for SharePoint and OneDrive | The same, no exception |
| "After 12 month of Unpaid storage/archive the OneDrive Data might be deleted regardless of ... all holds" | Retention and deletion, Important banner | Right outcome, wrong unit |
| "the unlicensed account can't be deleted, and the administrator receives an error message" | Unlicensed accounts, delete section | The belief survives a test |
Plan against the unlicensed-accounts page: it is the narrower and later statement, and neither dissenting page carries an unlicensed-account carve-out. OneDrive retention and deletion even contradicts itself, banner against body. The last row is why the belief survives testing. Admin-initiated deletion of a held account is genuinely blocked, and no page distinguishes it from service-initiated deletion at day 365.
What the misreading costs
The control stops enforcing without saying so. After deletion, "eDiscovery hold records remain, but held OneDrive content becomes unrecoverable", and retention policy or label assignments "can still appear healthy, but the target site no longer exists".
Ninety days earlier, the ability to answer disappears before the data does. From day 275 the account is out of eDiscovery while the content is still present, so a search returns nothing. An operator producing leaver data under a GDPR Article 15, DORA or NIS2 request reads a zero result as nothing responsive. Microsoft says it plainly: "customers should not rely on retention or legal hold settings alone to preserve content indefinitely in an unpaid, unlicensed OneDrive account."
Prerequisites
The SharePoint Online Management Shell, and, per the Get-SPOSite reference, "You need to be a SharePoint Online administrator and be a site collection administrator to run the cmdlet." No read-only role is documented. Stopping the clock needs more than a toggle: the unlicensed-accounts page says the unlicensed OneDrive accounts billing toggle "can only be enabled once a general pay-as-you-go billing method has been set up", and Set up Microsoft 365 Archive places that toggle on the pay-as-you-go services panel.
The read-only check
Enumerate the archived sites and keep the personal ones. The -IncludePersonalSite $true switch adds personal sites to the result, it does not restrict the result to them, so both commands filter on the OneDrive URL shape as well.
Connect-SPOService -Url https://<tenant>-admin.sharepoint.com
# Read only. Get-SPOSite returns objects. Nothing below writes.
# Archived by the service at 93 or more unlicensed days.
Get-SPOSite -IncludePersonalSite $true -Limit ALL -ArchiveStatus Archived |
Where-Object { $_.Url -like '*-my.sharepoint.com/personal/*' } |
Select-Object Url, Owner, ArchiveStatus, LockState
# Past the day 60 read-only enforcement, not yet archived.
Get-SPOSite -IncludePersonalSite $true -Limit ALL -ArchiveStatus NotArchived |
Where-Object { $_.Url -like '*-my.sharepoint.com/personal/*' -and $_.LockState -ne 'Unlock' } |
Select-Object Url, Owner, ArchiveStatus, LockState
Manage Microsoft 365 Archive says "OneDrive accounts (site template 21) can't be archived by admins", and that the service archives them at 93 or more unlicensed days.
Connect-SPOService -Url https://<tenant>-admin.sharepoint.com
# Read only. Get-SPOSite returns objects. Nothing below writes.
# Archived by the service at 93 or more unlicensed days.
Get-SPOSite -IncludePersonalSite $true -Limit ALL -ArchiveStatus Archived |
Select-Object Url, Owner, ArchiveStatus, LockState
# Past the day 60 read-only enforcement, not yet archived.
Get-SPOSite -IncludePersonalSite $true -Limit ALL -ArchiveStatus NotArchived |
Where-Object { $_.LockState -ne 'Unlock' } |
Select-Object Url, Owner, ArchiveStatus, LockState
Two portal reads finish it. Two portal reads finish it. The SharePoint admin centre's detailed OneDrive accounts report gives each account's URL, title, storage used, unlicensed date, unlicensed reason and archive status, and the downloadable CSV of unlicensed accounts carries the deletion-scheduled column. The Microsoft 365 admin centre's pay-as-you-go services settings hold the toggle governing archived unlicensed OneDrive accounts. Billing off, plus rows in that report, means the counter is running.
Expected output
One row per personal site in the two states these filters cover. -ArchiveStatus accepts five documented values, NotArchived, FullyArchived, RecentlyArchived, Reactivating and Archived, so an account currently archiving or reactivating appears in neither command and has to be queried separately. Any row under Archived is an account the OneDrive service archived at 93 or more unlicensed days. That is a different count from the cumulative unpaid clock, which started on 1 July 2026 for accounts already unlicensed then, so an archived row proves exposure and says nothing about how far the deletion clock has run. An empty result means no personal site has reached service archival, not that no account is unlicensed. A LockState other than Unlock indicates the day 60 enforcement or an admin lock.
Side effects
None. Get-SPOSite returns objects and both portal steps are reads. Nothing assigns a licence, enables billing, reactivates an account or deletes anything.
Rollback
Nothing to roll back, because nothing changed. The remediation does need one: enabling unlicensed-account billing starts charges Microsoft publishes at USD 0.60 per GB to reactivate an account and USD 0.05 per GB per month for every unlicensed account over 93 days.
Limitations
The check proves an account is archived or locked. It does not read the cumulative unpaid day count, and no cmdlet or endpoint exposing it appears on any page read here, so the check finds exposure without ranking it. It also cannot see what has moved on: "Site collections in the Recycle Bin will not be retrieved by using the Get-SPOSite cmdlet." Three segments are excluded: "These changes don't apply to EDU, GCC, or DoD customers." No page read here states whether the unlicensed-account enforcement rule applies to Office 365 operated by 21Vianet or to any other sovereign cloud. OneDrive retention and deletion and Manage Microsoft 365 Archive mention 21Vianet only to route admins to a different admin centre sign-in, so treat sovereign clouds as undocumented for this rule.
Decision: act now
Act now, and the reason is the already-live default rather than the deletion date. The counter has advanced since 1 July 2026 with no admin action, Microsoft publishes no way to read it, and the remedy needs an Azure pay-as-you-go link that takes procurement time. Earliest deletion risk for the legacy cohort is 1 July 2027, so the spend can be scheduled. The enumeration cannot, because counted days cannot be reconstructed later.
This sits beside the read-only per-departure evidence work in the offboarding evidence product.
Sources and further reading
Turn the procedure into a tenant decision.
The Architecture Workshop maps the checks, side effects, and rollback path to your own Microsoft 365 environment.
Review the workshopMore from Ops Log
A daily offboarding check can prove closure only as a bound
A leaver check that runs once a day can report closure only as a bound between two runs. A Graph 429, including one inside a batch that returns 200, and a membership read that returns nulls can each make a degraded run look clean, so an absence counts only from a run that read cleanly.
The Azure role called Cost Management Reader is not read-only
Cost Management Reader is described as able to view cost data, yet its action list carries a Microsoft.Support wildcard that includes creating and updating support tickets. The built-in Reader role matches it on every Cost Management feature and cannot write a ticket.
A Microsoft 365 DKIM CNAME target has two documented formats: read it per domain, never build it
Microsoft documents two DKIM CNAME target formats for Microsoft 365 custom domains, one ending in onmicrosoft.com and one in dkim.mail.microsoft. The page splits them by new versus existing custom domain and never mentions tenant age. Read each domain's values with Get-DkimSigningConfig.