expired AcademicSponsorship spending limit stuck "On", cannot convert to Pay-As-You-Go ("It looks like you've already upgraded")

dev teamA 0 Reputation points
2026-07-03T06:36:43.4766667+00:00

Our production subscription was disabled when an academic sponsorship credit expired, and we cannot bring it back to a working Pay-As-You-Go state through any self-service path. Roughly 175 production resources are offline. I've validated the billing configuration via ARM REST and believe the issue is a stuck spending limit that self-service cannot clear.

What the billing property shows (Microsoft.Billing/billingProperty/default), with identifiers removed:

  • skuDescription: Microsoft Azure Plan (the subscription is already on the Azure Plan / MCA)
  • billingProfileStatus: Active
  • spendingLimit: On
  • spendingLimitDetails.type: AcademicSponsorship
  • spendingLimitDetails.status: Expired (end date 2026-06-30)
  • subscriptionBillingStatus: Disabled — reason: Expired

What I've already confirmed:

  • The billing profile is Active and has a valid credit card attached (expires 2030), set as default.
  • The subscription is already on the Microsoft Azure Plan - so the portal's "upgrade to Pay-As-You-Go" flow returns "It looks like you've already upgraded" and does nothing.

The problem: the subscription appears trapped - it's on the Azure Plan with a valid payment method, but the expired AcademicSponsorship spending limit is still On, which keeps subscriptionBillingStatus = Disabled. Because the portal thinks the upgrade already happened, there's no self-service option to remove the spending limit.

My questions:

  1. Is there a supported way (portal, Azure CLI, PowerShell, or REST) to turn off / remove an expired AcademicSponsorship spending limit so the subscription bills to the attached card as true Pay-As-You-Go?
  2. Is there a REST operation to set spendingLimit to Off on an MCA Azure Plan subscription in this state, or is this strictly a backend/support operation?
  3. Has anyone resolved the "already upgraded" dead-end for a subscription that is on the Azure Plan but still Disabled due to an expired sponsorship?

Any pointers appreciated - this is a production outage. Thank you.

Cost Management
Cost Management

A Microsoft offering that enables tracking of cloud usage and expenditures for Azure and other cloud providers.

0 comments No comments

Answer accepted by question author

Jerald Felix 15,690 Reputation points Volunteer Moderator
2026-07-03T10:47:27.7066667+00:00

Hello dev teamA,

Greetings! Thanks for raising this question in the Q&A forum.

Your diagnosis is accurate, and I want to be upfront about what I found rather than send you down another self-service dead end. The spendingLimitDetails block on an MCA Azure Plan subscription is not one of the properties exposed for update on the Microsoft.Billing/billingProperty/default PATCH operation. The documented updatable fields on that resource are things like costCenter and subscriptionServiceUsageAddress, not the spending limit flag itself. There is no Azure CLI, PowerShell, or REST operation that flips spendingLimitDetails.status or clears an expired AcademicSponsorship limit on a subscription that has already migrated to the Azure Plan billing model. This specific combination, Azure Plan SKU with a payment method attached but still carrying a legacy sponsorship spending limit flag, is a known gap where the portal's "switch offer" flow assumes you are still on a pre-Azure Plan offer type and therefore reports "already upgraded" instead of giving you a remove-limit control. Clearing that flag is a backend billing operation that only Azure Billing Support can perform.

  1. Open a Severity A support request given this is a production outage

Since you have 175 production resources offline, this qualifies for the highest severity level available on your support plan. Go to Help + support > Create a support request in the Azure portal, select Issue type: Billing, then Subscription Management as the problem type, and choose the severity level that reflects a production-down scenario (Sev A / Sev 1 depending on your plan, typically described as "critical business impact, complete loss of service").

  1. Attach your ARM diagnostic output directly in the ticket

The billing property values you already pulled are exactly what the billing engineering team needs to action this without back and forth. Include the subscriptionId, and the full billingProperty payload showing skuDescription: Microsoft Azure Plan, billingProfileStatus: Active, spendingLimit: On, spendingLimitDetails.type: AcademicSponsorship, spendingLimitDetails.status: Expired, subscriptionBillingStatus: Disabled, reason Expired. Also mention that the credit card on the billing profile is valid through 2030 and is set as default, and that the portal's upgrade flow returns "It looks like you've already upgraded" with no further action available.

  1. Explicitly request the backend action, not just a general review

State in the ticket description that you need the expired AcademicSponsorship spending limit cleared/removed on the billing profile so the subscription resumes billing to the attached payment method as Pay-As-You-Go under the existing Azure Plan, and that self-service has no path for this because the subscription already shows as upgraded. This framing routes the ticket to the right specialized billing team faster than a generic "subscription disabled" description.

  1. If you have a Microsoft account team or CSA, loop them in parallel

If your organization has a Cloud Solution Architect, TAM, or partner contact, notify them in parallel to the support ticket. Production-impacting billing state issues like this one can sometimes be expedited outside the standard queue when there is an account team involved.

  1. While waiting, do not attempt to create a parallel subscription and move resources unless support explicitly advises it

Resource moves between subscriptions can be blocked once a subscription is Disabled, and moving 175 production resources under time pressure carries its own risk of breaking resource dependencies, private endpoints, or managed identity bindings. It is safer to get the existing subscription re-enabled in place first.

If this answer helps you kindly accept the answer which will help others who have similar questions.

Best Regards,

Jerald Felix.

Was this answer helpful?

1 person found this answer helpful.
0 comments No comments

0 additional answers

Sort by: Most helpful

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.