Skip to content

FOCUS billing export

  • BilledCost by service, region, sub-account and charge category
  • Per-resource spend, from a resource-level export
  • Credits and refunds as their own charge category

Method: Billing Export (S3 / GCS / Azure Blob) or FOCUS CSV URL

This connector reads a FOCUS-conformant billing export. Set it up one of two ways: point it at a cloud billing-export bucket for per-resource spend, or paste a FOCUS CSV URL for a simpler, bucket-free setup.

Bucket-backed export (recommended — unlocks per-resource spend):

  1. AWS: In Billing and Cost Management, go to Data exports > Create. Choose the “Standard data export” type with CUR 2.0 as its table.
  2. Turn on the resource ID column. This is what unlocks per-resource spend in Plutus, and it can’t be added retroactively — an export created without it has to be re-created, and only collects resource detail from that day forward.
  3. Set time granularity to Daily or Hourly. Either works; Hourly produces a much larger export and is only worth it if you need hour-level detail.
  4. Set compression to Parquet or gzipped CSV — Plutus reads both. Leave “Overwrite existing data export file” on. With it off, AWS keeps every past execution in the bucket and the bucket grows without limit.
  5. Choose or create the delivery S3 bucket, then note its name, the prefix you gave the export, and its region — you’ll enter these in Plutus.
  6. Grant your existing PlutusCostReader role s3:GetObject and s3:ListBucket on that bucket. This is the same cross-account role the AWS connector uses, with no new credential to create. Set billing_export_bucket on the Terraform module, or the BillingExportBucket parameter on the CloudFormation stack — left empty, neither grants anything on S3.
  7. GCP: In Billing, go to Billing export > FOCUS export to Cloud Storage, then note the bucket and prefix it writes to. (The BigQuery billing export is a different feature and belongs on the GCP connector, not here.)
  8. Azure: In Cost Management, go to Exports > Create, and choose the FOCUS dataset with a storage account container as the destination.
  9. In Plutus, open the FOCUS connector and enter the Export Bucket, Export Prefix, Bucket Region, and Role ARN (for S3-backed exports) from the steps above. Leave Export URL blank.
  10. Save. AWS writes the first export within 24 hours of creating it, so the first sync immediately after setup may look empty — that’s the export not having landed yet, not a connection problem.

FOCUS CSV URL (no bucket, no per-resource spend):

  1. Get the stable HTTPS URL your provider publishes its FOCUS-conformant CSV at. Gzip-compressed files (.csv.gz) are handled automatically.
  2. In Plutus, open the FOCUS connector and paste the URL into Export URL. Leave the bucket fields blank.
  3. If the endpoint requires authentication, enter the full header value (for example, Bearer <token>) in Authorization Header.
  4. Save. Plutus re-downloads the export on every sync, so a presigned URL has to either not expire or be refreshed by your own tooling.

Only BilledCost (the actual charged amount) is imported, broken down by service, region, sub-account and charge category (Usage/Purchase/Tax/Credit/Adjustment) where present in the export \u2014 provider-specific x_* extension columns are ignored. Both CSV and Parquet exports are read. A bucket-backed export additionally yields per-resource spend on paid plans, read from the export manifest so that restated months replace rather than add to earlier ones.