A line item is one row of an invoice or a billing export: a service, a usage type or meter, a quantity in a pricing unit, a rate, and the amount that follows, for one period and one account. Every cloud invoice is the sum of such rows, and each follows the same chain: metered usage is converted into a pricing unit, priced at a rate per unit, and becomes an amount. The chain traces an invoice amount back to the resource and shows where tiers, minimums and rounding depart from quantity times rate.

How it works

All three providers meter usage in a technical unit (seconds, byte-seconds, requests), convert it into the unit the price is quoted in (hours, gibibyte-months, 1,000 requests), and apply the rate for the account and its tier. The invoice shows the result, the export each link, under names that differ by provider.

AWS

The Cost and Usage Report (CUR 2.0) holds one line item per combination of product, usage type and operation, for example USW2-BoxUsage:m2.2xlarge with RunInstances for an instance size in a Region. line_item_unblended_cost is the quantity times line_item_unblended_rate, the rate for the individual account; pricing_public_on_demand_rate carries the public On-Demand rate and, for tiered products, the rate of the highest tier. For services with volume tiers, such as AWS Data Transfer and Amazon S3, consolidated billing treats an organisation as one account: AWS sets the tier from the month's combined usage, shares the volume discount among member accounts by usage, and applies the Free Tier to the organisation's total. Minimums come from the service: Amazon S3 bills objects in S3 Standard-IA and S3 One Zone-IA at no less than 128 KB and 30 days.

Azure

Azure bills a resource through its meters, and a virtual machine has several; the cost details (exports or the Cost Details API) carry Quantity per meter and day. Of the three price columns, PayGPrice is the list price, UnitPrice the contractually negotiated price and EffectivePrice the rate actually paid, with tiers already applied. Microsoft reconciles with EffectivePrice times Quantity; under a Microsoft Customer Agreement that gives the pricing currency, which ExchangeRatePricingToBilling converts. For usage covered by a reservation or a savings plan, EffectivePrice is 0 in the actual cost record. The pay-as-you-go invoice uses the columns Name, Type, Resource, Region, Consumed, Rate and Value. Under an Enterprise Agreement the unit can differ in scale between invoice, price sheet and cost details (per day against per month), and a meter with an included quantity shows its Quantity at a price and cost of 0, while PayGPrice keeps the list price.

Google Cloud

Google Cloud prices SKUs (for example Standard Storage US). The standard export to BigQuery carries the quantity twice: usage.amount in the measurement unit usage.unit (byte-seconds for Standard Storage) and usage.amount_in_pricing_units in the pricing unit (for example gibibyte-month). price.pricing_unit_quantity gives the number of units one price covers (1,000,000 for a price per million) and price.tier_start_amount the quantity at which a tier starts; cost includes negotiated discounts, cost_at_list does not. For each SKU, the pricing export's aggregation_info sets how tiers count: per billing account (ACCOUNT) or project (PROJECT) and per day (ONE_DAY) or month (ONE_MONTH). The counters reset at midnight US Pacific time, and no tier spans SKUs or billing accounts, even within one organisation.

FOCUS

The FinOps Foundation's FOCUS specification (version 1.4) separates the metered quantity (ConsumedQuantity, ConsumedUnit, often finer) from the priced one (PricingQuantity, PricingUnit), whose unit must match the published price list and, where the invoice states one, the invoice. ListUnitPrice is the price before discounts, ContractedUnitPrice the agreed one, equal to the list price where nothing was negotiated; where both are present, a cost metric is the unit price times PricingQuantity. The full mapping is in FOCUS columns and the providers' mapping.

ProviderPriced itemQuantityUnitRate
AWS, CUR 2.0Usage type and operation: line_item_usage_type, line_item_operationline_item_usage_amountpricing_unitline_item_unblended_rate
Azure, cost detailsMeter: MeterId, MeterNameQuantityUnitOfMeasureEffectivePrice
Google Cloud, standard exportSKU: sku.id, sku.descriptionusage.amount_in_pricing_unitsusage.pricing_unitprice.effective_price
FOCUSSkuId, SkuPriceIdPricingQuantityPricingUnitListUnitPrice, ContractedUnitPrice

What it means for your cost

The invoice never shows the whole chain: it rolls many export rows into one line (AWS by service, a Microsoft Customer Agreement invoice by invoice section and product, Google by billing account), and Google states that its invoice details carry no SKU price. The rate behind one hour of usage is only in the export; what the document holds is in anatomy of a cloud invoice.

A cost report built on line items makes three decisions. First, which price: list, negotiated and effective price give three amounts for the same quantity, and only the effective price leads to effective cost; list, billed, effective and amortized cost sets out the measures. Second, which unit: the unit belongs to the price, and summing quantities across units sums things that do not compare. Third, at which level to reconcile, because tiers and rounding move the amount: the effective rate is only known once the period's quantity has settled the tier, Google's cost table shows Unrounded cost (up to six decimal places) beside Cost (two), and Microsoft adds a RoundingAdjustment record once the invoice exists.

What instances and data transfer are priced on is covered in virtual machines and instance families and data transfer and egress, and the lines that arrive after month end in billing periods, cut-off and late charges.

Where it goes wrong

  • Quantity in the wrong unit. Symptom: quantity times rate does not give the line's amount. Cause: the quantity is in the measurement unit (on Google, usage.amount in byte-seconds) while the rate applies per pricing unit, which only the quantity fields in the table above match.
  • List price taken for the price paid. Symptom: the recalculated total exceeds the invoice. Cause: pricing_public_on_demand_rate, PayGPrice and cost_at_list carry the list price, not the rate paid that the table above shows.
  • Tiers assumed per account. Symptom: an account pays a different rate than expected. Cause: AWS sets tiers on the whole organisation's usage, Google per billing account or project and per day or month, as each SKU's aggregation_info defines.
  • Invoice lines set against export rows. Symptom: export and invoice differ by cents. Cause: the invoice sums and rounds per line while the export calculates per resource at higher precision; Microsoft closes the gap with RoundingAdjustment, Google with the Rounding Error cost type.
  • A zero rate read as an error. Symptom: rows with a quantity but no amount. Cause: included quantities under an Enterprise Agreement, usage covered by a reservation (EffectivePrice 0; on AWS line_item_unblended_rate 0 for DiscountedUsage) and free tiers are regular line items priced at 0.

Sources

Read on 2026-10-16. AWS Line item columns, Pricing columns, What are AWS Cost and Usage Reports?, Consolidating billing for AWS Organizations, Effective billing date, account activity, and volume discounts, Understanding your bill, Amazon S3 pricing; Microsoft Understand usage details fields, Ingest cost details data, Review your individual Azure subscription bill, Understand your Microsoft Customer Agreement invoice; Google Cloud Structure of standard data export, Structure of pricing data export, SKUs, View and download the cost details of your invoice or statement; FinOps Foundation FOCUS column library, Pricing Quantity, Pricing Unit, Consumed Quantity, Consumed Unit, List Unit Price, Contracted Unit Price.