Cloud

Azure

Roiva books the Azure spend tagged to each AI initiative, Azure OpenAI included, so its ROI is net of the cloud costs it actually runs on.

What each AI initiative's Azure footprint costs, Azure OpenAI included, by the tags you already use

Monthly cost by service from Cost Management, and the same filtered by a tag an initiative names. Not by deployment or model.

An app registration with Cost Management Reader and nothing else, made by a script you run in Cloud Shell

What you can measure with Azure
Spend by tag

Tag the resources an initiative runs on, Initiative=InvoiceAI for instance, and what carries the tag is booked to it, across every service.

azure.cost.service_spend
Whole services

Or map a whole service to an initiative, all of Azure OpenAI for instance, under the cost type you pick.

azure.cost.service_spend
One resource per initiative

Azure tags a resource, not the deployments inside it, so two initiatives on one Azure OpenAI resource can't be told apart. Give each its own and the tag does the rest.

Only the AI part of the bill

AI Spend counts Azure's AI services and what initiatives claim, and lists the rest of the bill as outside its figures.

azure.cost.total_spend
A worked month

An invoice-reading model on Azure OpenAI

Cloud cost, booked from Cost Management by tag, for September

Azure OpenAI tagged Initiative=InvoiceAI $5,240 Azure
Azure AI Search with the same tag $860 Azure
Storage with the same tag $70 Azure

$5,240 + $860 + $70

$6,170 booked to the AP initiative for September, from a $72,400 Azure bill

Azure reports Azure OpenAI as one line for the subscription, so the tag is what separates this initiative's share from another's. The untagged rest of the bill stays out of every initiative.

Illustrative figures. Roiva keeps every input with the entry it calculates, and none of it counts until it's approved.

Each initiative linked to Azure, the tag it books by, and what it booked over the last 90 days.

What gets synced

Roiva writes these metric observations on each sync. Reference the key in a value formula to use this data in your ROI calculations.

Billing

azure.cost.total_spend Total Spend currency
azure.cost.service_spend Per-service spend (one row per service, the service in the row's dimensions) currency
What Roiva keeps

Reads: Monthly cost by service from Cost Management for the last 12 months, and the same filtered by a tag where an initiative names one.

Keeps: Records of monthly cost by service, plus the totals worked out from them.

What Roiva keeps from each platform, field by field →

Common questions
Does the Azure connection break out Azure OpenAI by deployment or by resource?
Not by deployment or model. Roiva reads Azure's monthly cost by service, so Azure OpenAI is one line for the subscription. To book an initiative only its own Azure OpenAI spend, tag the Azure OpenAI resource it runs on (Initiative=InvoiceAI, say) and enter that tag where Azure is linked to it, and the connection books only the costs carrying it. Azure tags a resource, not the deployments inside it, so two initiatives that share one resource can't be told apart this way: give each its own resource. Roiva reads cost only from Azure, not tokens or requests. Linking connections to initiatives →
How to connect

Roiva is listed on Microsoft Marketplace — you can start free there with your Microsoft work account.

You connect Azure from inside Roiva, so you need a Roiva workspace first. Sign in to connect it now. New to Roiva? Start free with your work email, take the free assessment and create your workspace at the end, or request an invite.

  1. In Azure: Open Cloud Shell (Bash) as someone who can register apps in Microsoft Entra ID and assign roles on the subscription, and run the setup script below. It registers an app for Roiva, gives it Cost Management Reader on the subscription and nothing else, and prints the Subscription ID and the credentials as tenant_id:client_id:client_secret
  2. Back in Roiva: Enter the Subscription ID the script printed, paste its credentials line into API Key / Secret, and save the connection
  3. Back in Roiva: The connection page checks each step as the app and gives the command for anything still missing. Once it's all ticked, click Test Connection
  4. Back in Roiva: After connecting, link this connection to an initiative on the Initiatives tab
  5. Back in Roiva: To count one initiative's costs rather than the whole subscription's, which is optional, tag the Azure resources it runs on and choose the tag under Tag key and Tag value where it's linked to the initiative. Counting one initiative's Azure costs walks through it
Setup script
# Run in Azure Cloud Shell (Bash) as someone who can register apps and
# assign roles on the subscription. It uses the subscription Cloud Shell
# is set to; for another, first run: az account set --subscription <name or id>
SUBSCRIPTION_ID=$(az account show --query id -o tsv)
echo "Subscription ID: $SUBSCRIPTION_ID"

# An app for Roiva that can read this subscription's costs and nothing else.
# The line it prints goes in API Key / Secret: tenant_id:client_id:client_secret.
# Its secret lasts a year.
az ad sp create-for-rbac --name roiva-cost-reader \
  --role "Cost Management Reader" \
  --scopes "/subscriptions/$SUBSCRIPTION_ID" \
  --query "join(':', [tenant, appId, password])" -o tsv
Need help?

Email hello@roiva.ai with what you're seeing, and you'll hear back within one business day.

Azure

Start free, then connect Azure once your workspace is set up. Or begin with the free AI ROI exposure assessment.

Start free → Sign in to connect
AWS