Billed Periods
Billed periods puts your cloud invoices next to your tracked cost. For each closed billing period it shows what Azure and AWS actually billed, what CloudOptify tracked for the same scope, and the difference. You can hand the numbers to finance knowing they match the invoice, or see straight away which period doesn’t.
You’ll find it on Spend → Billed periods.
What you see
Section titled “What you see”- Connection cards: one per Azure tenant and AWS connection. Each card shows where the figures come from and whether CloudOptify can read that connection’s invoices. If it can’t, the card names the exact permission to grant.
- Summary: how many closed periods there are, how many match the invoice, how many differ, and how many couldn’t be checked.
- The period table: rows grouped by billing month. Each row covers one Azure subscription or one AWS connection.
| Column | Meaning |
|---|---|
| Usage | Tracked usage charges for the period. |
| Tax | Tax lines, such as VAT or GST. Always included here, whatever your tax handling setting, because the invoice includes tax too. When the cost data has no tax lines, the tax stated on the invoice is shown instead — see below. |
| Credits | Credits and refunds applied to the period. |
| Tracked | Usage + tax + credits. This is the figure set against the invoice. |
| Invoiced | The total of the provider’s invoices for the period, with credit notes subtracted. |
| Difference | Invoiced minus tracked, before any credit applied on the invoice itself (see Credit applied on the invoice). It is only shown when both figures cover the same period and the same scope. |
| Status | The outcome for the row (see below). |
Expand a row to see its individual invoices: invoice ID (with a copy button), type, issue date, billing period and amount.
Amounts are shown in the currency they were billed in and are not converted to your display currency. An invoice in DKK is compared in DKK, so the figures agree with the document your finance team holds.
Tax from the invoice
Section titled “Tax from the invoice”Azure reports cost before tax: VAT is added when the invoice is issued and never reaches a billing export or the cost API. When a period’s cost data has no tax lines, the Tax column shows the tax stated on the invoice instead, marked with a receipt icon.
For most Azure agreements this is the only place the figure exists — which is why Tax Analytics can show no tax while your invoice clearly charges VAT. AWS reports tax both ways, so its figure normally comes from the cost data.
Statuses
Section titled “Statuses”| Status | What it means |
|---|---|
| Matches invoice | Tracked and invoiced agree to within half a percent of the invoice, or one cent. Rounding and exchange-rate timing alone can produce that much. |
| Differs | The difference is larger than that. See Why a period can differ. |
| In progress | The current period. It hasn’t been invoiced yet, so it isn’t compared. |
| Wider invoice | An invoice exists but covers more than CloudOptify tracks. One example is an AWS payer invoice for the whole organisation when only some accounts are selected. The invoice is listed, but no difference is calculated, because that difference would only be the untracked accounts. |
| No invoice | Invoices are linked, but the provider issued none for this period. |
| Access needed | CloudOptify can’t read the invoices yet. See Linking invoices. |
| Credit applied | A subscription with a monthly Azure credit whose usage went above it. The invoice bills only the usage above the credit, and the credit is shown under the invoiced amount. See Credit applied on the invoice. |
| Not invoiced | A subscription with a monthly Azure credit whose usage stayed within it. Microsoft issued no invoice for it. |
| Account invoice | Billed at Azure billing-account level (MCA or EA). The invoices are listed on the connection card. |
| Not reconciled | Invoices aren’t available for this scope, or couldn’t be read right now. |
Where the figures come from
Section titled “Where the figures come from”Each row is marked with the source of its tracked figures:
- Billing export (Azure) or Cost & Usage Report (AWS) is invoice-grade. It is the provider’s own billing data, the same data the invoice is produced from. Rows from these sources should match the invoice.
- Cost API is an estimate. It comes from Azure Cost Management or AWS Cost Explorer. It is close, but it can differ from the invoice through rounding, late-arriving charges and how reservations and savings plans are spread over time.
Reservations and savings plans count in the month they are invoiced. An upfront purchase is billed in full in the month you buy it, so that’s where Billed periods counts it. For an Azure FOCUS export it reads the export’s billed cost; Spend and the other views keep using the effective (amortized) cost, which spreads the purchase over its term. AWS figures are already on the billed basis.
For figures you can reconcile against invoices, connect a billing export: Azure Cost Management export or AWS Cost & Usage Report.
Linking invoices
Section titled “Linking invoices”Reading invoices needs one extra read-only billing permission. It isn’t part of the base connection, so each connection card shows whether it has been granted.
Add this permission to the IAM role or user CloudOptify uses on your payer (management) account:
"invoicing:ListInvoiceSummaries"Connections created from now on include it in the permissions policy the portal generates. For an existing connection, add it to the role’s policy in the AWS console. Nothing needs to change in CloudOptify, and the next check picks it up.
AWS issues invoices to the payer account only. A connection to a member account shows Invoices not available. That is expected, and its tracked figures are unaffected.
The role you need depends on how your subscriptions are billed. The connection card names the right one, together with the application ID of the CloudOptify service principal it should be assigned to.
| Billing type | Role to assign to the CloudOptify service principal |
|---|---|
| Pay-as-you-go (Microsoft Online Subscription Agreement) | Billing Reader on each subscription: Subscription → Access control (IAM) → Add role assignment. |
| Microsoft Customer Agreement | Billing profile reader (or Invoice manager) on the billing profile. |
| Enterprise Agreement | Enrollment reader on the enrollment. |
For pay-as-you-go, Azure also needs the subscription’s account administrator to allow invoice access: Cost Management + Billing → Invoices → Access to invoice → On. Until then, Azure refuses invoice requests even with Billing Reader assigned.
For Microsoft Customer Agreement and Enterprise Agreement, billing roles are assigned to a service principal through Azure’s billing role-assignment API. Microsoft explains how in Assign roles to service principals.
MCA and EA invoices cover a whole billing profile or enrollment, which can include subscriptions that aren’t connected to CloudOptify. For that reason they are listed on the connection card under Billing-account invoices and not set against a single subscription.
Subscriptions with a monthly Azure credit
Section titled “Subscriptions with a monthly Azure credit”Visual Studio (MSDN), sponsorship, free-trial and Azure Pass subscriptions run on a monthly credit. CloudOptify recognises these offers:
- While usage stays within the credit, Microsoft issues no invoice. The period shows Not invoiced, and the tracked figures show what the credit was used for. You don’t need to grant anything.
- When usage goes above the credit (with the spending limit removed), Microsoft invoices only the part above it. The period shows Credit applied, as described below.
Credit applied on the invoice
Section titled “Credit applied on the invoice”Some credits are applied by the provider on the invoice, not in the cost data. The best known is the Azure Visual Studio / MSDN monthly credit. Billing exports and the cost APIs report usage at full price, so the invoice is always lower than tracked cost by the amount of the credit. CloudOptify doesn’t report that as a difference:
- When the invoice reports the credit it applied (Microsoft Customer Agreement invoices do), the tracked cost is compared with the invoice before the credit, so a real difference is still caught. The credit is shown under the invoiced amount.
- When it doesn’t (Visual Studio and other pay-as-you-go-style subscriptions), the credit is the gap between tracked usage and the invoice. The period shows Credit applied with that amount under the invoiced figure, and no difference is calculated, because a figure worked out from the gap can’t disagree with it.
For example, 729.41 kr of usage on a Visual Studio subscription with an invoice of 380.50 kr shows Credit applied with a credit of −348.91 kr.
Because this credit never appears in cost data, it doesn’t appear in the other cost views or
in the SQL view v_credits_by_month either. Billed periods is where you can see it.
If you haven’t set up a billing export or invoice access
Section titled “If you haven’t set up a billing export or invoice access”The tab still works. Here is what you get in each situation:
| Billing export / CUR | Invoice access | What you see |
|---|---|---|
| Yes | Yes | Invoice-grade figures, checked against every invoice. |
| Yes | No | Invoice-grade figures, not yet checked against the official invoice. The card explains how to link invoices. |
| No | Yes | Estimates, compared with the invoice. Differences are expected to be small but more frequent. |
| No | No | Estimates only, marked as such, with Invoice access needed and the exact permission to grant. |
When any connection is missing invoice access, a notice at the top of the tab lists them. Each card then shows the permission and a link back to this page.
Billing periods and dates
Section titled “Billing periods and dates”- AWS bills by calendar month.
- Azure pay-as-you-go bills from your sign-up day, for example 15 July – 14 August, not by calendar month. When an invoice is linked, CloudOptify uses the invoice’s own dates, so the tracked cost is summed over exactly the days that were billed. Such periods are grouped under the month they end in, and their dates are shown under the subscription name.
- The current period is always shown as in progress and is never compared.
The tab covers the last 3, 6 or 12 months plus the current period. It doesn’t follow the date range picker, because billing periods are fixed by the provider.
Why a period can differ
Section titled “Why a period can differ”A difference on an estimate row is usually one of these:
- charges that reached the provider’s billing after the period closed;
- reservation or savings-plan purchases, which are invoiced in full on the invoice but spread over time by the cost APIs;
- Marketplace or support-plan charges billed separately;
- credits applied at invoice level.
A difference on an invoice-grade row is rare and worth investigating. Check that every subscription or account on the invoice is selected in CloudOptify, and that the export has been delivered for the whole period.
If an Azure month with a reservation or savings-plan purchase still differs:
- An export of type Cost and usage details (amortized) spreads purchases over time and can’t match an invoice. Use a FOCUS or an actual-cost export.
- Months ingested before CloudOptify recorded billed cost only have the amortized figure. The current and previous month are re-read automatically. For older months, re-save the export settings on the connection: that re-reads the last 13 months.
Freshness
Section titled “Freshness”Invoices for a closed period don’t change, so CloudOptify reads them at most every few hours and reuses the result. Re-check invoices reads them again straight away, for example right after you grant access.
The tab respects the global filter: choosing a group or specific subscriptions and accounts narrows every row and card to that scope. With the plan’s Cost Export feature, CSV downloads the rows you are viewing, including the invoice IDs.