The AWS Cost and Usage Report (CUR) is the most detailed cost and usage dataset AWS publishes: one line item per account, product, usage type, operation and time period, delivered today through AWS Data Exports as CUR 2.0 into an S3 bucket. It matters for the bill because every report, every allocation and every commitment analysis is built on this export, and because it is the only place where a line's invoice id, billed cost, discounts and tags sit side by side.
How it works
AWS Data Exports is the service that delivers the billing data. It offers three export types; the standard data export offers five tables: CUR 2.0, Cost optimization recommendations, FOCUS 1.2 with AWS columns, FOCUS 1.0 with AWS columns and Carbon emissions. The other two are the cost and usage dashboard for Amazon QuickSight and the legacy data export, the original CUR, which runs on its own API. AWS calls CUR 2.0 the new and recommended way to receive the data. The difference from the legacy report is the schema: a legacy CUR carries a different set of columns each month, depending on which services, cost categories and tags produced data. CUR 2.0 has a fixed set of 125 possible columns and folds the variable content into map columns of key-value pairs. Which export suits which analysis is the subject of AWS CUR 2.0 or FOCUS 1.2: choose the right cost export.
A handful of settings at creation decide what the export contains and how large it gets. Time granularity is hourly, daily or monthly. Resource ids produce one line per resource instead of a total per service, which can increase the export significantly. Split cost allocation data adds lines and split_line_item_* columns for ECS tasks and Kubernetes pods, showing how an EC2 instance is allocated to the containers running on it. Capacity reservation data and the column selection itself come on top. The file format is Parquet or text/csv compressed with gzip or zip; the refresh cadence is daily, which AWS documents as up to once a day in Creating a standard export and as at least once a day in Understanding export delivery. For versioning, each refresh either overwrites the previous delivery within a billing period or lands in a new directory, which keeps a record of how the month's data changed.
The data lands at s3://bucket/prefix/export-name/data/BILLING_PERIOD=YYYY-MM/, in chunks once the export is large enough, with a Manifest.json per billing period under the metadata prefix, listing the columns, the file paths and the period covered. The manifest is only delivered once all data files have arrived, which makes it the reliable list of what to ingest. The bucket can sit in the same account or another one and needs a bucket policy that lets the service bcm-data-exports.amazonaws.com write, bound to the account that created the export.
In an organisation with consolidated billing, an export in the management account covers the management account and every member account. A member account exports only its own data, and after joining an organisation only the time since it joined.
The columns come in families: Bill (billing period, invoice id, payer account), Line item (cost, usage, usage type, rates, product), Product, Pricing, Reservation, Savings plan, Discount, Cost category, Resource tags, Split line item, Capacity reservation, Identity and Tags. The Reservation and Savings plan families hold the values from which amortized cost is computed; Resource tags and Tags hold the key-value pairs that allocation uses.
The current billing period is refreshed until it ends; each delivery is cumulative and an estimate. After month end, AWS finalises the report after issuing the invoice and may still update the previous period's delivery within the first two weeks after it ended. Even a finalised report can change when AWS applies refunds, credits or support fees to the month; Developer, Business and Enterprise Support are calculated from final usage charges and appear on the sixth or seventh of the following month.
What it means for your cost
The invoice and the export are the same data in two shapes. A line in the export carries in bill_invoice_id the number of the invoice it was billed on, and the field stays blank until the report is final. A blank invoice id therefore means the month is still an estimate. The sum of billed cost (line_item_unblended_cost) per invoice id is the figure that reconciles with the invoice; blended cost spreads reservation benefits across the organisation and matches no single invoice.
For a cost report, the granularity chosen decides what can be seen. A daily export without resource ids shows services and accounts; only with resource ids can an instance, a bucket or a database be followed on its own, and only with split cost allocation data does a pod appear in the allocation. The tag columns carry only keys that have been activated as cost allocation tags in the billing console, and even then only on lines where the key has a value. Whatever is missing from the export is missing from every analysis built on it. The FOCUS tables of the same service are covered in FOCUS columns and the providers' mapping.
Where it goes wrong
- The export was created in a member account. Symptom: totals are too small, whole accounts are missing. Cause: a member account exports only itself; the complete dataset exists only from the management account.
- The bucket policy was edited or the bucket changed owner. Symptom: delivery stops, the console reports an invalid bucket. Cause: AWS documents that changing the policy or the owner after creation may prevent delivery.
- A running month is read as final. Symptom: the monthly report later disagrees with the invoice. Cause: until finalisation every delivery is an estimate, and even afterwards credits, refunds and support fees can change the previous month; the blank
bill_invoice_idsignals the state. - Resource ids are expected from an export created without them. Symptom:
line_item_resource_idis absent or empty. Cause: the column only enters the schema through the INCLUDE_RESOURCES table configuration; an export without it delivers totals per service, not a line per resource. - Tag columns are missing because the tags were never activated. Symptom: resources are tagged in the console but show as untagged cost in the export. Cause: a tag key appears only once it has been activated as a cost allocation tag.
Sources
Read on 2026-10-15. What is AWS Data Exports?, Creating a standard export, Understanding export delivery, Setting up an Amazon S3 bucket for data exports, Cost and Usage Report (CUR) 2.0, Bill columns, Line item columns, Resource tags columns, What are AWS Cost and Usage Reports?.