Skip to content

AWS S3 pricing, explained — graduated tiers, per-thousand requests, free allowances

S3 Standard storage is the textbook graduated tier — $0.023/GB for the first 50 TB, $0.022 for the next 450 TB, $0.021 beyond — with requests billed per thousand and egress after a free allowance. What the model is, how Cloudflare Workers' flat-fee-plus-blocks differs, and how to bill every way a usage price can step.

Sonic AI team

Finance operations

17 Sept 20266 min read

Pricing ModelsHow well-known products price — seats, credits, tiers, blocks — and how that shape is billed.
S3 Standard storage bandPer GB-month
First 50 TB$0.023
Next 450 TB$0.022
Over 500 TB$0.021

Editorial note. S3 figures are for S3 Standard in US East (N. Virginia) from aws.amazon.com/s3/pricing; Workers figures are from Cloudflare's Workers pricing docs. Both as of September 2026; neither company is affiliated with Sonic AI. Both have other billable dimensions left out here for clarity.

Ask anyone in finance to describe "tiered pricing" and they will describe S3. The first 50 TB costs one rate, the next 450 TB a slightly lower one, everything beyond that lower still — and each band is priced on its own, so a big customer's bill is the sum of three slices, not one rate times everything. That is graduated pricing, the model almost every infrastructure product borrows — and the one most often confused with the two other ways a price can step, which Cloudflare Workers shows further down.

What S3 charges

Component Rate Shape
Storage — first 50 TB / month $0.023 per GB Graduated band 1
Storage — next 450 TB / month $0.022 per GB Graduated band 2
Storage — over 500 TB / month $0.021 per GB Graduated band 3
PUT / COPY / POST / LIST per 1,000 requests Packaged
GET / SELECT per 1,000 requests Packaged
Data transfer out first 100 GB / month free, then tiered Zero-price first band, then graduated

The three mechanics

Mechanic Rule Example
Graduated Split quantity across bands; each band at its own rate S3 storage: 120 TB = 50 TB at $0.023 + 70 TB at $0.022
Volume The band the total lands in prices all of it Not S3 — but the model most often confused with it
Packaged Price per block; partial block rounds up S3 requests per 1,000; Workers per million
Included allowance A committed price covers N units; only the remainder is priced Workers: $5 covers 10M requests

The graduated-versus-volume distinction is one word in a contract and a different total on every invoice. At 120 TB, graduated gives $2,690; volume at the reached band would give 120,000 × $0.022 = $2,640. Fifty dollars on one customer, systematic across all of them, and in the other direction for a different customer.

What a month looks like

S3 — 120 TB average stored, 40M GETs, 3M PUTs:

Line Qty Rate Amount
Storage — band 1 (0–50 TB) 50,000 GB $0.023 $1,150.00
Storage — band 2 (50–500 TB) 70,000 GB $0.022 $1,540.00
GET requests 40,000 blocks of 1,000 per rate card —
PUT requests 3,000 blocks of 1,000 per rate card —
Storage subtotal $2,690.00

Who else prices in steps — Cloudflare Workers, and the packaged version

S3 is graduated. Cloudflare Workers is the other way a usage price steps: a small flat fee that includes a quantity, and everything beyond priced per million — per block, rounded up. Developers point to it as the pricing page usage billing should look like; it quietly needs three mechanics (fixed, included allowance, packaged) on one line. Vercel and Supabase price the Workers way; Google Cloud Storage and Azure Blob price the S3 way; Mailchimp, HubSpot and most contact-based tools price by volume band — the mechanic S3 is most often confused with.

Cloudflare Workers

Free Paid
Monthly fee $0 $5 minimum
Requests 100,000 per day 10M per month included, then $0.30 per additional million
CPU time 10 ms per invocation 30M CPU-ms per month included, then $0.02 per additional million

Workers Paid — 47.3M requests, 92M CPU-ms:

Line Qty Rate Amount
Workers Paid — September (in advance) 1 $5.00 $5.00
Requests — included 10,000,000 of 47,300,000 — $0.00
Requests — additional (37.3M → 38 blocks) 38 $0.30 $11.40
CPU time — included 30,000,000 of 92,000,000 — $0.00
CPU time — additional (62M → 62 blocks) 62 $0.02 $1.24
September $17.64

The Workers rounding is the detail: 37.3 million excess requests is 38 blocks, not 37.3. A per-unit engine bills $11.19; the stair-step bills $11.40. Small on one customer, systematic across thousands — and the allowance must be subtracted before the rounding, or you give away up to a block.

Where stepped pricing goes wrong

  • Graduated implemented as volume (or vice versa). Most "tiered pricing" disputes are this.
  • The quantity is a level, not a sum. GB-months average bytes stored over the month — a time-weighted level, not an event count. The meter's aggregation has to match the data.
  • Bands hidden behind a blended rate. Customers expect to see band 1 and band 2 as rows they can check.
  • Daily versus monthly allowances. Workers Free resets daily; a monthly meter would let a spiky customer run 3M requests in a day and look fine. The aggregation window is a product rule the meter must mirror.
  • Two meters from one event stream with different aggregations (count of requests, sum of CPU-ms), and base and overage billing in different directions — $5 in advance, blocks in arrears — on one invoice.

Billing this shape on Sonic AI

S3's storage is a usage graduated list price on Sonic — contiguous bands with a first and last unit and a rate each; the engine splits the period quantity across them and shows each band as its own invoice row. Requests are a packaged list price — package size 1,000, price per package, partial packages rounded up. A free allowance is a first band at zero. Workers is a fixed $5 line in advance plus, per meter, a usage slab carrying the included units per period and its overage rate in arrears; the template aggregates raw requests into millions (rounded up) so the overage unit is the block. If a contract says "volume", the volume list price prices the whole quantity at the band it lands in. Request and CPU events come from one usage template mapped to two meters with count and sum aggregations, keyed for idempotency.

See usage & seats, the glossary on graduated vs volume pricing, and usage-based billing, explained.

If you price like S3

  • Is each band priced on its own slice (graduated) or does the reached band price everything (volume)? Write the word in the contract.
  • Is your quantity a sum of events or an average level?
  • Do per-block prices round up, and is the allowance subtracted before rounding?
  • Is the allowance daily or monthly?

Bring a tier table to a demo — we will configure the bands and show the split invoice.

Similar pricing models

Graduated tiers are the model behind Google Cloud Storage, Azure Blob, Clerk and Mapbox; Cloudflare Workers (above), Vercel and Supabase use a flat fee with an included allowance and packaged overage; HubSpot and Mailchimp use volume bands where the whole quantity takes one price. For per-unit pricing with no steps at all, see OpenAI; for seat counts priced in graduated bands, Jira.

Related terms: graduated pricing, overage, meter, in advance vs in arrears.

See it on the platform

Everything above describes how Sonic actually runs it — the product pages show the screens.

Related questions

Still have questions?

Are seats events or snapshots?

Snapshots. Each row is how many they had that day. Sonic compares it to the balance on record and writes an event only when the count changes. Vendor increase/delta columns are not imported — they break at customer boundaries.

What are confirmation days?

An optional hold on seat adds. If you set N days, an increase on date D bills only if the new count still holds through D+N. Removals bill immediately. Incomplete files show as awaiting, not as a guessed invoice line.

How do usage and seats get in?

Templates map vendor files or a Postgres connection. Usage is events. Seats are daily snapshots compared to the balance on record. Large files are a first-class path, not an afterthought.

See the full FAQ →

Keep reading

More from the blog

All posts

Next

See it on your contracts

A walkthrough on the agreements and files you actually bill from — not a slide deck.