AWS bill line item: PublicIPv4:InUseAddress

Why did my AWS bill go up when I changed nothing?

A common answer since 2024 is a line called PublicIPv4:InUseAddress, usually with a region prefix such as USE1-. Since February 1, 2024 AWS charges for every public IPv4 address, including addresses attached to running resources, which used to be free. Nothing in your account has to change for it to appear: the addresses you already had started costing money [aws-blog-ipv4].

What PublicIPv4:InUseAddress means

It is the number of hours a public IPv4 address was assigned to one of your resources during the billing period. A sibling usage type, PublicIPv4:IdleAddress, counts hours of Elastic IP addresses that are allocated to your account but not attached to anything. Both are priced at $0.005 per address per hour in US East (N. Virginia) in the current AWS price list [price-list-vpc].

AWS's announcement lists what counts as in use: Amazon-provided public IPv4 addresses and Elastic IP addresses assigned to resources in your VPC, plus addresses used by AWS Global Accelerator and AWS Site-to-Site VPN tunnels [aws-blog-ipv4]. Addresses you bring to AWS with BYOIP are not charged [aws-blog-ipv4] [vpc-pricing].

The lines are billed under Amazon Virtual Private Cloud, not under EC2, even when the address sits on an EC2 instance. In the AWS price list these usage types are part of the Amazon VPC offer, and they keep the region prefix in US East (N. Virginia) too: USE1-PublicIPv4:InUseAddress [price-list-vpc].

For scale, one address held for a whole 30-day month is 720 hours, or $3.60. A 31-day month is $3.72.

How to find it in Cost Explorer or your Cost and Usage Report

Cost Explorer. Group by Usage type and look for names containing PublicIPv4. Filtering Service to Amazon Virtual Private Cloud narrows the list. Usage quantity is in hours, so dividing a month's hours by the hours in that month gives the average number of addresses you held.

Cost and Usage Report (CUR). The usage type is in line_item_usage_type. For example, in Athena:

SELECT line_item_usage_type,
       line_item_resource_id,
       SUM(line_item_usage_amount)   AS hours,
       SUM(line_item_unblended_cost) AS cost
FROM   cur
WHERE  line_item_usage_type LIKE '%PublicIPv4:%'
GROUP  BY 1, 2
ORDER  BY cost DESC;

If your report includes resource IDs, line_item_resource_id shows which resource each line is attributed to. Your table and column names depend on how the export was set up.

Inside the VPC console. AWS added Public IP Insights to Amazon VPC IP Address Manager (IPAM) for this charge, at no cost. It breaks down your public IPv4 addresses by type and shows Elastic IP usage, with filters to sort and inspect each address [aws-blog-ipv4].

Typical causes of a new or growing line

  • The February 2024 change itself. Before February 1, 2024, an in-use public IPv4 address had no charge; from that date it costs the same as an idle one [aws-blog-ipv4]. Bills from February 2024 onward show the new line with no change on your side.
  • The EC2 free tier running out. From February 1, 2024 the EC2 free tier includes 750 hours of public IPv4 address use per month for the first 12 months [aws-blog-ipv4]. When an account passes 12 months, the same address starts showing up as a charge.
  • Subnets that auto-assign public IPs. Every instance or network interface launched in such a subnet gets an address, so scaling out adds addresses one for one.
  • Managed services with public addresses. The charge applies to every AWS service that can hold a public IPv4 address, not only EC2 instances: AWS's announcement names Amazon RDS database instances and Amazon EKS nodes among them [aws-blog-ipv4]. A publicly accessible database or a node group in public subnets adds addresses too.
  • Elastic IPs left behind. An Elastic IP that is no longer attached shows up as PublicIPv4:IdleAddress. Idle Elastic IPs were already charged before 2024 [aws-blog-ipv4].

Price history

CostPulse's price history (every version of the AWS Price List since 2015) has no change to an existing On-Demand price for PublicIPv4:InUseAddress and PublicIPv4:IdleAddress in Amazon Virtual Private Cloud, Amazon Elastic Compute Cloud. It records changes to prices that already existed; a charge that arrives as a new price list entry, or a price AWS sets on a new SKU, is not a change in this sense.

The public IPv4 charge is exactly that kind of change: AWS announced it on July 28, 2023 and it took effect on February 1, 2024 [aws-blog-ipv4]. The table below is from AWS's announcement, not from the price change history.

Public IPv4 addressBefore Feb 1, 2024From Feb 1, 2024
In use (assigned to a resource)No charge$0.005 per hour
Additional Elastic IP on a running EC2 instance$0.005 per hour$0.005 per hour
Idle Elastic IP in the account$0.005 per hour$0.005 per hour

The current US East (N. Virginia) price list (Amazon VPC, version 20260917190528) still shows $0.005 per hour for both in-use and idle addresses [price-list-vpc].

What to do about it

  1. Get the inventory. Use Public IP Insights in IPAM [aws-blog-ipv4], or the CUR query above, to see every address you pay for.
  2. Release idle Elastic IPs you do not need. They show up as PublicIPv4:IdleAddress and do nothing for you.
  3. Turn off auto-assign public IPv4 on subnets whose instances do not need to be reachable from the internet, and reach them through a load balancer, a bastion or AWS Systems Manager instead.
  4. Keep private workloads private. Instances that only need outbound access can sit in private subnets. Check the NAT gateway trade-off first: it has its own hourly and per-GB charges (see NatGateway-Bytes).
  5. Consider IPv6 where your clients and dependencies support it. AWS's announcement of the charge encourages customers to consider accelerating their adoption of IPv6 [aws-blog-ipv4].
  6. Set an alert on the Amazon VPC line, so a new batch of addresses (an autoscaling group that now gets public IPs, for example) is noticed in days rather than at month end.

Sources

Page last reviewed 2026-10-13. Prices quoted as "current" are from the AWS Price List version named next to them and can change; the AWS pricing pages are authoritative.

Catch the next one the day it starts

CostPulse reads your AWS billing data every day and alerts Slack, Microsoft Teams or email when a service's spend rises above its 7-day baseline, so a new line like this shows up in a channel instead of on the monthly invoice.

Start a free trial See the live demo

Want to check your own bill? CostPulse Bill X-Ray reads a billing export in your browser and lists the AWS list-price changes that touch the usage types you pay for, and which spikes were usage, your rate or an AWS price. Free, no signup, and the file never leaves your browser.

Source for price history: AWS Price List API, all historical versions since 2015, normalized by CostPulse. Price history data built 2026-10-11. Current prices and product behavior are quoted from the AWS pages listed under Sources on each page.

CostPulse is not affiliated with or endorsed by Amazon Web Services. Prices are list prices in USD as AWS published them and do not include discounts, credits, Savings Plans or taxes. Check the AWS pricing pages before making a decision.