A Microsoft offering that enables tracking of cloud usage and expenditures for Azure and other cloud providers.
Hello Sumit Gaur, thank you for posting your query on Microsoft Q&A platform.
You are using ALZ Subscription Vending (AVM Terraform module) to create subscriptions. Manual subscription creation via Azure Portal works but Terraform (AzAPI / ARM alias) fails with error: "InsufficientPermissionsOnInvoiceSection".
Yes, MCA "Individual" accounts have practical limitations for programmatic subscription creation. What works interactively in the portal does not always work via automation (Terraform / ARM), even with correct roles. The error you’re seeing is expected behavior in many MCA Individual tenants when using subscription vending automation.
Azure Portal performs interactive, delegated billing operations but Terraform/ALZ uses ARM Microsoft.Subscription/aliases, Non-interactive API calls and AzAPI provider. For MCA billing, API subscription creation is stricter than the portal.
From Microsoft’s own MCA automation guidance:
- Programmatic subscription creation requires: - Owner / Contributor directly on the Invoice Section - The invoice section must be automation-compatible
- MCA Individual accounts are optimized for human billing, not enterprise automation
- Certain invoice sections created under Individual MCA do not allow alias-based creation
Microsoft does not block this explicitly, but it is a documented practical limitation
You can try with the below steps:
- Even if your Service Principal (SPN) is a Billing Account Owner, you must explicitly assign the Azure subscription creator role at the Invoice Section scope. Use the Object ID of the SPN, not the Application ID, when assigning the role.
- Go to Cost Management + Billing > Billing scopes > Invoice Section > Access Control (IAM) > Add role assignment.
- Role: Azure subscription creator
- Assign to: Service Principal (your Terraform SPN).
This ensures the SPN has the precise permission needed to create subscriptions under that invoice section.
- The
billing_scopeparameter passed to the ALZ module must be the fully qualified Resource ID of the invoice section.
/providers/Microsoft.Billing/billingAccounts/{account-id}/billingProfiles/{profile-id}/invoiceSections/{section-id}
Using a billing profile ID or account ID alone will fail. The module requires the full invoice section path.
- MCA accounts (especially “Individual” type) have limits that can block automation:
- By default, only 5 subscriptions can be created under an Individual MCA. Beyond that, you need a support ticket to raise the limit.
- After creating a subscription, there’s a 24‑hour cooldown before another can be created programmatically.
These constraints explain why manual portal creation sometimes works (the portal bypasses certain checks), while Terraform fails.
Reference:
Hope this helps. and please feel free to reach out if you have any further questions. Thanks