Connect Azure
Connect Azure by pointing FinomateAI at a billing export in a storage account and a service principal that can read that export. The principal must not be a subscription Owner.
Before you begin
- Access to the Microsoft Entra tenant that owns the subscriptions
- Permission to create an app registration
- A Cost Management export writing to a storage container
What FinomateAI asks for
| Field | Purpose |
|---|---|
| Azure tenant ID | Directory (tenant) ID |
| Subscription IDs | Comma-separated subscriptions in scope |
| Storage account | Account that receives the export |
| Container name | Container for the export |
| Blob prefix | Optional path |
| Client secret | Service principal secret, stored securely |

Step 1: Confirm the export
In Azure Cost Management:
- Open Exports.
- Create or confirm an export for the subscriptions you want to analyse.
- Use a FOCUS or actual-cost export to a dedicated storage account.
- Confirm blobs are arriving in the container.
- Record storage account, container and prefix.
Wait for the first successful export run before onboarding. An empty container looks like a permissions failure.
Step 2: Create a service principal
- Register an application in Microsoft Entra ID.
- Create a client secret. Store it only for the onboarding form — do not paste it into tickets or chat.
- Grant:
- Storage Blob Data Reader on the export container (or account)
- Cost Management Reader on the subscriptions in scope, if your tenant also queries Cost Management APIs
- Do not grant Contributor, User Access Administrator, or any role that can create VMs.
Step 3: Complete onboarding
- Open Complete onboarding and select Azure.
- Enter tenant ID, subscription IDs, storage account, container, optional prefix and client secret.
- Select Complete onboarding.
Step 4: Validate
- Confirm Healthy on Connected accounts.
- In Cost Explorer, select Azure.
- Compare a completed period with Azure Cost Analysis for the same subscriptions and grain.
Troubleshooting
| Symptom | Check |
|---|---|
| Authentication fails | Tenant ID, application ID, secret value, secret expiry |
| Container empty | Export schedule and first run |
| 403 on blobs | Blob Data Reader is on the right container; firewall allows FinomateAI if the account is locked down |
| Subscriptions missing | Subscription list on the form vs the export |
| Totals differ | Period, credits, Azure Hybrid Benefit, currency, amortized vs actual |
If AWS or GCP is healthy and Azure is not, the fault is this connector — see Manage connected accounts.
Expected result
FinomateAI can read the approved Azure export, expected subscriptions appear, and a completed period reconciles.