Updated October 3, 2026

Guides · EC2 and RDS

Stopped EC2 instances and RDS databases: what still bills

Stopping an EC2 instance or an RDS database ends the charge for compute hours. It doesn't end the charges for anything attached to it. EBS volumes, Elastic IPs, database storage and backups keep billing every month. A stopped RDS database also doesn't stay stopped: after seven days, RDS starts it again on its own, and instance hours start billing again.

A stopped EC2 instance (us-east-1 list prices)

AWS doesn't charge instance hours or data transfer for a stopped instance. These keep billing:

Still billedPriceExamplePer month
EBS gp3 volume$0.08 / GB-month100 GB root volume$8.00
EBS gp2 volume$0.10 / GB-month500 GB data volume$50.00
Elastic IP on the instance$0.005 / hourOne address, all month (730 hours)$3.65
EBS snapshots$0.05 / GB-month200 GB of snapshot data$10.00

That example instance costs $71.65 a month while doing nothing. Snapshots bill whether the instance runs or not, so they don't change when you stop it.

What a stop removes: data in RAM and on instance store volumes, and the public IPv4 address EC2 assigned automatically. That address is released, so it stops billing, and the instance gets a new one when it starts. An Elastic IP stays associated, and AWS charges for it while the instance is stopped. Each time you start the instance again, you're billed for at least one minute.

A stopped RDS database

AWS's RDS documentation lists what you're still charged for while a DB instance is stopped: provisioned storage (including Provisioned IOPS), backup storage (including manual snapshots and automated backups within the retention window) and, if the database is publicly accessible, its public IPv4 address. You're not charged for DB instance hours.

Still billedPriceExamplePer month
gp2 or gp3 storage, Single-AZ$0.115 / GB-month500 GB$57.50
gp2 or gp3 storage, Multi-AZ$0.23 / GB-month500 GB$115.00
Backup storage over the free allowance$0.095 / GB-month200 GB over$19.00
Public IPv4 address$0.005 / hourPublicly accessible database$3.65

Backup storage is free up to 100% of your total database storage in a region. You pay the $0.095 rate only for backups beyond that.

The 7-day automatic restart

If you don't start a stopped DB instance yourself within seven consecutive days, RDS starts it for you. AWS does this so the instance doesn't fall behind on required maintenance. Once it's running, instance hours bill again, and nothing tells you unless you're watching.

For example, a db.m5.large running PostgreSQL in a single Availability Zone is $0.178 an hour. If it restarts and runs unnoticed for three weeks (504 hours), that's $89.71. A full month is $129.94.

So stopping isn't a way to park a database you don't need. It works for databases you use part of the time, such as development databases you start when you need them. AWS's documentation links to a guide for keeping an instance stopped longer than 7 days with AWS Step Functions.

Some databases can't be stopped at all: a DB instance that has a read replica or is one, and RDS for SQL Server in a Multi-AZ deployment.

Check it yourself

1. Stopped EC2 instances, with the reason and time of the last state change:

aws ec2 describe-instances --region us-east-1 \
  --filters Name=instance-state-name,Values=stopped \
  --query 'Reservations[].Instances[].[InstanceId,InstanceType,StateTransitionReason]' --output table

2. The volumes and Elastic IPs each one still pays for:

aws ec2 describe-volumes --region us-east-1 \
  --filters Name=attachment.instance-id,Values=i-0123456789abcdef0 \
  --query 'Volumes[].[VolumeId,Size,VolumeType]' --output table

aws ec2 describe-addresses --region us-east-1 \
  --filters Name=instance-id,Values=i-0123456789abcdef0 \
  --query 'Addresses[].[PublicIp,AllocationId]' --output table

3. Stopped RDS databases:

aws rds describe-db-instances --region us-east-1 \
  --query "DBInstances[?DBInstanceStatus=='stopped'].[DBInstanceIdentifier,DBInstanceClass,AllocatedStorage,StorageType,MultiAZ]" \
  --output table

4. Manual RDS snapshots, which bill until you delete them:

aws rds describe-db-snapshots --region us-east-1 --snapshot-type manual \
  --query 'DBSnapshots[].[DBSnapshotIdentifier,DBInstanceIdentifier,AllocatedStorage,SnapshotCreateTime]' --output table

5. What it costs you: Billing and Cost Management → Cost Explorer, grouped by Usage type. Look for EBS:VolumeUsage types for EC2 disks, and RDS:GP2-Storage, RDS:GP3-Storage and RDS:ChargedBackupUsage for RDS. In us-east-1 they have no prefix; in other regions they start with a region code.

How to fix it

  1. EC2 instances nobody needs: create an AMI, then terminate the instance. Check each volume's Delete on termination setting first. By AWS's defaults, data volumes attached in the console, and any volume attached after launch, are kept when the instance is terminated. They become unattached volumes that keep billing.
  2. Elastic IPs on stopped instances: release the ones you won't use again. Check DNS records and allow-lists first, in case something points at the address.
  3. RDS databases nobody needs: delete them, taking a final snapshot if you might want the data back. RDS keeps the final snapshot and any earlier manual snapshots. Those, and any automated backups you choose to retain, bill until you delete them.
  4. RDS databases you use sometimes: stopping works, but plan for the 7-day restart, or start and stop them on a schedule.

The free checkup finds this and 20 other kinds of issues automatically. It lists every stopped EC2 instance in the regions it scans, prices its attached EBS volumes by size and type, and shows the date it was stopped when AWS records one. It also lists EBS snapshots older than 90 days that no AMI uses. It doesn't check stopped RDS databases or RDS snapshots. An Elastic IP on a stopped instance is still associated, so the checkup doesn't count it as idle.

Run a free checkup

Sources

Prices are AWS on-demand list prices for US East (N. Virginia), checked October 3, 2026. Other regions differ.