TL;DR. Kinesis Data Streams pricing for a hypothetical fleet of 500 trucks sending a 134-byte GPS ping every 5 seconds comes to $12.31 a month on one provisioned shard and $37.58 on On-demand Standard, at US East list prices. The hourly fee is $10.80 and $28.80 of those. On-demand Advantage would bill the fleet $3,037.50, its account minimum. What moves the bill is extended retention on provisioned (+$14.40), enhanced fan-out on provisioned ($10.80 per reader) and Firehose to S3, which bills each ping as 5 KB (+$14.93).
Kinesis Data Streams pricing for a GPS fleet is mostly a fixed hourly fee. A one-shard stream costs $10.80 a month whatever the trucks send, and the pings add between $0.25 and $7.56. The decisions that change the bill are the capacity mode, the retention, how many readers use enhanced fan-out and how the data reaches S3. On provisioned, the ping rate matters less than any of them.
This post continues the hypothetical fleet from our AWS IoT Core pricing model: the same 500 trucks, now writing to a stream. The US East rates come from the Kinesis offer file (published November 10, 2026, read November 12) and the metering rules from the Kinesis Data Streams pricing page. It is a worked model: no stream ran.
How Kinesis Data Streams is priced: an hourly fee plus a per-record meter
Kinesis Data Streams has three capacity modes: On-demand Standard, On-demand Advantage and provisioned. Each one charges a fixed part and a usage part, and each rounds a record differently.
| Mode | Fixed part (US East) | Write meter | Read meter |
|---|---|---|---|
| Provisioned | $0.015 per shard-hour | $0.014 per million PUT payload units, counted in 25 KB chunks | Free within 7 days of retention |
| On-demand Standard | $0.04 per stream-hour | $0.08 per GB, each record rounded up to 1 KB | $0.04 per GB, no rounding |
| On-demand Advantage | Account minimum of 25 MB/s in and 25 MB/s out | $0.032 per GB | $0.016 per GB |
AWS states that "One shard provides an ingest capacity of 1 MB/second or 1,000 records/second." On-demand data in is "the number of data records you send to the service, multiplied by the size of each record rounded up to the nearest 1 KB (1,024 bytes)", while for data out "There is no rounding factor applied for this calculation." The pricing page also notes that Kinesis Data Streams "is NOT currently available in AWS Free Tier", so there is no free allowance to subtract.
What a 500-truck fleet pays: $12.31 provisioned, $37.58 on-demand at a 5-second ping
Consider a hypothetical fleet of 500 trucks. Each truck drives 10 hours a day, 30 days a month, and sends one 134-byte JSON ping (the same payload as in the IoT Core model) as one Kinesis record. One application reads the stream with standard GetRecords calls, and data stays the default 24 hours. The stream itself is open all month: 720 hours.
| Ping interval | Records a month | Peak records/s | Provisioned: shard + PUT units | Provisioned total | On-demand Standard: stream + in + out | On-demand total |
|---|---|---|---|---|---|---|
| 1 s | 540,000,000 | 500 | $10.80 + $7.56 | $18.36 | $28.80 + $41.20 + $2.70 | $72.69 |
| 5 s | 108,000,000 | 100 | $10.80 + $1.51 | $12.31 | $28.80 + $8.24 + $0.54 | $37.58 |
| 30 s | 18,000,000 | 17 | $10.80 + $0.25 | $11.05 | $28.80 + $1.37 + $0.09 | $30.26 |
Records are 500 trucks x 30 days x 36,000 driving seconds / interval. Each ping is one PUT payload unit on provisioned. On-demand data in counts 1 KB per record over 1,048,576 KB per GB, the divisor AWS's own example uses: 103.00 GB at 5 seconds. Data out counts the real 134 bytes: 13.48 GB. Totals are summed before rounding, so a row can differ by a cent from its rounded parts.
One shard carries this fleet at every interval. At a 1-second ping, with all 500 trucks on the road at once, the stream peaks at 500 records a second and about 65 KB a second: half of a shard's record limit and under 7% of its 1 MB a second. The record limit binds first, so one shard holds about 1,000 trucks at a 1-second ping and 5,000 at a 5-second ping.
On-demand bills a 134-byte ping as 1 KB, so 87% of the data-in charge is padding
A 134-byte ping billed as 1,024 bytes is 7.6 times its size. At a 5-second interval the fleet writes 13.48 GB of JSON and pays for 103.00 GB. When records are much smaller than 1 KB, on-demand data in is a per-record charge.
Batching on the truck removes the padding. Sixty 5-second pings in one JSON object come to 8,130 bytes, billed as 8 KB, and the fleet sends 1.8 million records a month instead of 108 million. Data in falls from $8.24 to $1.10.
The total barely moves, because the stream-hour fee stays: $37.58 becomes $30.44. On provisioned, a 134-byte ping and an 8 KB batch are each one PUT payload unit, so batching takes the PUT line from $1.51 to $0.03 and the total to $10.83. Batching trades money for delay: a position reaches the stream up to 5 minutes after the truck recorded it, too late for a live dispatch map.
On-demand vs provisioned for a fleet: provisioned wins, and Advantage is a $3,037.50 trap
On-demand Standard cannot win for one steady stream this size. Its stream-hour fee alone ($28.80) is 2.7 times a shard ($10.80), before any data. For a fleet, on-demand is insurance against shard sizing, priced at about $19 to $54 a month across these intervals.
On-demand Advantage looks cheaper per GB, at $0.032 in and $0.016 out with no stream-hour fee. But AWS bills it with "a minimum charge of 25MB/s data ingested and 25MB/s data retrieved at the account level across all on-demand streams." AWS's own shortfall example bills that floor at $3,037.50 for a 30-day month. Our fleet writes about 13 KB a second at a 5-second ping, so the floor is the bill.
Because that minimum counts all on-demand streams in the account, Advantage makes sense in an account that already streams more than 25 MB a second. By that reading, the fleet then adds only its usage: $3.51 a month at a 5-second ping, less than one shard. AWS itself says Advantage "might be best if you have at least 10MB/s of data ingest in aggregate, fanout to more than 2 consumers, use more than 50 streams in an account".
The strongest case for on-demand is operational. With provisioned you specify the number of shards yourself, and a fleet that doubles to 1,000 trucks at a 1-second ping reaches the 1,000 records a second limit. The answer for most fleets is headroom: a second shard costs another $10.80, and two shards ($21.60) still cost less than one on-demand stream's hourly fee.
What makes the stream bill grow: retention, fan-out and the path to S3
Three settings, priced on the 5-second fleet, add more than the ping rate does:
| Change | Provisioned | On-demand Standard |
|---|---|---|
| Retention from 24 hours to 7 days | +$14.40 (720 shard-hours x $0.020) | +$0.27 to $2.06 (6 days of data at $0.10 per GB-month) |
| Three readers with enhanced fan-out | +$32.93 ($10.80 per reader, plus $0.013 per GB) | +$2.02 ($0.05 per GB, about $0.67 per reader) |
| Archive to S3 through Firehose | +$14.93 (each ping billed as 5 KB) | +$15.47 ($14.93, plus $0.54 of data out for Firehose as a second reader) |
| Archive to S3 with Kinesis S3 delivery | Not available | +$0.37 ($0.0275 per GB delivered) |
Seven-day retention on provisioned costs more than the shard itself. AWS charges "an additional rate on each shard hour", so the fee is the same for a quiet fleet as for a busy one. On on-demand, retention is billed per GB-month of stored data; AWS's page does not say whether stored data counts the 1 KB rounding, so the table gives both readings.
Enhanced fan-out is the second trap. Without it, a shard serves "up to 2 MB/second of data output, regardless of the number of consumers", and three readers of this fleet need about 40 KB a second between them. On provisioned, standard reads are free within 7 days, so a dispatch map, an ETA model and an alerting job can share the shard at no extra cost.
The path to S3 is the third. Firehose bills a Kinesis source "per GB ingested in 5KB increments (a 3KB record is billed as 5KB)", so 108 million pings bill as 514.98 GB, $14.93 at $0.029 per GB. Batched pings bring that to $0.50.
Kinesis also has its own S3 delivery, which "buffers and aggregates records" into larger objects and bills the bytes delivered in source format: $0.37 a month here. It runs only on streams in On-demand Advantage or On-demand Standard mode. AWS lists the delivery charge "in addition to your existing Kinesis Data Streams charges", so it does not remove the $28.80 stream-hour fee.
The cheapest full path in this model is a provisioned shard with batched pings and Firehose: $11.32 a month ($10.83 for the stream, $0.50 for Firehose, summed before rounding). The cheapest with no batching is a provisioned shard plus Firehose at $27.25, against $37.95 for an on-demand stream with S3 delivery.
When the archive is the only reader, skip the stream
A stream earns its fee when several applications read the same ordered feed and may need to replay it. If the only reader is an S3 archive, an IoT Core rule can send pings to Firehose directly, and the fleet saves the $10.80 shard. Our IoT Core model prices that Firehose rule action and explains why a batch of pings should go to Firehose as one record.
The stream is also one line of a larger bill. Every reader of the stream lands its output in jobs and tables further down, and our data pipeline cost guide puts a price on each of those pipelines, and the archive grows into a lake whose small objects have a cost of their own, measured in our S3 storage cost post.
Where this model stops
The model uses US East list prices, a 720-hour month and a fleet driving 10 hours a day with all trucks on the road at once. AWS's own provisioned examples use a 31-day month, which makes a shard $11.16. Larger payloads such as engine fault codes, other Regions and cross-Region reads change the numbers, and the cellular data plan and IoT Core charges sit outside them.
It does not test throttling, resharding or the Kinesis Producer Library. The on-demand retention figure is a range because the pricing page does not say how stored bytes are counted. The Firehose price list also carries a no-rounding rate for Kinesis sources ($0.074 per GB) that the pricing page does not tie to S3; this model uses the 5 KB rule the page states for a Kinesis source.
The settings that set this bill (retention, fan-out, delivery path) are set once and easy to forget. Datapace is building one map of your data estate (databases, warehouses, pipelines and what consumes them) with usage and cost attached, and agents that propose changes as pull requests your team reviews and merges. To check which of your streams still have a reader, book a call.
Sources
- AWS, Amazon Kinesis Data Streams pricing, read November 12, 2026.
- AWS Price List API for US East, both read November 12, 2026: the Kinesis offer file (published November 10, 2026) and the Firehose offer file (published November 4, 2026).
- AWS, Firehose pricing page (read November 12, 2026).
- Amazon Kinesis Data Streams Developer Guide, Streaming tables and S3 delivery, read November 12, 2026.




