A billing period is the span of usage one cloud invoice covers: on AWS, Azure and Google Cloud normally a month, closed a few days after it ends when the invoice is issued. Because usage is metered, reported and priced before it reaches an invoice, every line item carries two dates: when the usage happened and which invoice charges it. A report that does not separate the two moves cost between months and explains the difference as consumption.

How it works

Until the period closes, all three providers show estimates, because services report usage at different times. After that the month counts as closed, yet credits, refunds and some fees can still change it. Each provider sets the cut-off, the point after which usage falls on the next invoice, in its own way.

AWS

The billing cycle starts on the first of the month. In CUR 2.0 the period's bounds are bill_billing_period_start_date and bill_billing_period_end_date in UTC, and a line's own span runs from line_item_usage_start_date (inclusive) to line_item_usage_end_date (exclusive). While the period is open, the "Bills" page shows the status Pending with estimated charges; when it closes, the invoice is issued (status Issued). One-time fees such as an All Upfront reservation are charged immediately and carry bill_bill_type Purchase, apart from the month's usage (Anniversary). The report is updated cumulatively at least once a day until AWS finalises the usage charges after issuing the invoice, and until then bill_invoice_id is blank. Even then AWS can change it: AWS Support fees are calculated from the final usage charges and appear in the prior month's report on the sixth or seventh of the month, and credits and refunds follow the terms of the agreement.

Azure

Under a Microsoft Customer Agreement each billing profile is invoiced monthly. The period's start and end dates are printed on the invoice PDF above the "Billing Summary", and the invoice date, typically five to twelve days after the period ends, is in the billing profile's properties. Usage between the end of the period and the invoice date already belongs to the next period and the next invoice. A pay-as-you-go subscription has its own cycle, which need not start on the first (Microsoft's example runs from the 8th to the 7th); its usage file is normally ready 72 hours after the invoice, and when a subscription is transferred or cancelled, the last invoice holds the previous cycle and the one just started. Under an Enterprise Agreement usage appears in "Usage + Charges" up to eight hours late, and the invoice can follow a monthly, quarterly or other agreed grain. In the cost details, BillingPeriodStartDate and BillingPeriodEndDate carry the billing period, Date the day of usage or purchase and InvoiceId the invoice number (pay-as-you-go and MCA); the rounding adjustment only appears once the month is closed and the invoice generated.

Google Cloud

For a billing account set up for monthly invoicing, an invoice generally covers the costs of one calendar month and should be available by the fifth business day of the following month; invoices are not generated at weekends or on bank holidays. Self-serve accounts, which pay automatically, receive a monthly statement instead, in Google's terms a summary rather than a bill; debit memos, credit memos and tax invoices come in addition where they apply. Late-reported usage from the end of a month can roll over to the next month's invoice, so one invoice can hold costs from more than one calendar month. The export shows both: invoice.month (format YYYYMM) is the invoice month, usage_start_time and usage_end_time the hourly usage window. Invoice details and online reports date usage when it happened, the cost table groups by invoice month, and the export dates memos by the month they were issued.

FOCUS

FOCUS 1.4 keeps the two calendars apart. BillingPeriodStart (inclusive) and BillingPeriodEnd (exclusive) bound the billing period, ChargePeriodStart and ChargePeriodEnd bound the span in which a charge took effect. InvoiceId (since version 1.2) stays empty while a charge is not associated with an issued or provisional invoice, and rows that correct a period already closed carry ChargeClass Correction.

ProviderPeriod fieldsInvoice linkWhat arrives later
AWS, CUR 2.0bill_billing_period_start_date, bill_billing_period_end_date; usage line_item_usage_start_datebill_invoice_id, blank until finalSupport fees on the sixth or seventh, credits and refunds
Azure, cost detailsBillingPeriodStartDate, BillingPeriodEndDate; usage DateInvoiceId (pay-as-you-go, MCA)post-period usage on the next invoice, rounding adjustment
Google Cloud, standard exportinvoice.month; usage usage_start_time, usage_end_timeinvoice.monthlate-reported usage on the next invoice, memos in the month issued
FOCUSBillingPeriodStart, BillingPeriodEnd; ChargePeriodStart, ChargePeriodEndInvoiceIdrows with ChargeClass Correction

What it means for your cost

Every cost report chooses one of two calendars. By usage date it shows when cost arose and supports trends, allocation and anomalies; by invoice month it agrees with the amount finance pays and books. At the month boundary the two differ: by usage that Google moves to the next invoice or that Azure incurs after the period end, by the AWS Support fee that lands in the previous month days after it ends, and by credits and refunds, which credits, refunds and corrections covers.

Two decisions follow. First, when a month counts as closed: before the invoice date, and on AWS before the sixth or seventh, the figures are provisional, and refunds can change them even later; when export data becomes final is covered in freshness, restatements and finalisation. Second, which calendar a month-over-month comparison uses; how late charges distort one is shown in period comparison. What the invoice itself holds is in anatomy of a cloud invoice, the AWS export's columns in AWS Cost and Usage Report and Data Exports.

Where it goes wrong

  • Invoice month confused with usage month. Symptom: a calendar month in the export does not match that month's invoice. Cause: Google moves late-reported usage to the next invoice and Azure usage after the period end, and the report groups by usage_start_time or Date instead of invoice.month or BillingPeriodStartDate.
  • A month closed too early. Symptom: the previous month changes after the report has gone out. Cause: AWS books Support fees into the previous month on the sixth or seventh, and credits and refunds can still change finalised reports.
  • A pay-as-you-go cycle read as a calendar month. Symptom: an Azure invoice covers a span that does not start on the first. Cause: that cycle need not start on the first; BillingPeriodStartDate and BillingPeriodEndDate are what count.
  • A one-time fee read as a usage spike. Symptom: cost jumps on one day with no added usage. Cause: AWS charges one-time fees such as All Upfront reservations immediately, as bill_bill_type Purchase, outside the monthly invoice.
  • A blank invoice ID read as an error. Symptom: bill_invoice_id is empty for the current month. Cause: the invoice does not exist yet and AWS fills the field only in the final report; FOCUS likewise leaves InvoiceId empty without an associated invoice.

Sources

Read on 2026-10-16. AWS Understanding your bill, Bill columns, Line item columns, What are AWS Cost and Usage Reports?, Applying AWS credits; Microsoft Understand your Microsoft Customer Agreement invoice, Review your individual Azure subscription bill, Review your Azure Enterprise Agreement bill, Understand usage details fields, Ingest cost details data; Google Cloud Understand your monthly invoice, Get a Cloud Billing document such as an invoice, statement, or receipt, Structure of standard data export, View and download the cost details of your invoice or statement, Resolve Cloud Billing issues; FinOps Foundation Billing Period Start, Charge Period Start, Invoice ID, Charge Class, FOCUS column library.