How AWS Billing Works: Invoices, Pricing, Budgets and Cost Explorer
AWS meters everything you use and bills you at the end of each month. During the billing period, the charges you see in the console are estimates. Once the period closes, AWS finalizes the invoice, applies credits and taxes, and charges your payment method. One-time purchases like Reserved Instance upfront fees can be charged immediately. Understanding this flow helps you avoid surprise bills and know exactly where your money goes.
Simple explanation
Think of AWS billing like a running tab at a restaurant. Every time you order something (launch an instance, store a file, send data), the kitchen adds a line to your receipt. During the meal you can glance at the running total, but tips, taxes, and any promotional discounts are only applied when you ask for the final check. That final check is your AWS invoice.
The key difference from a fixed subscription is that your bill changes every month based on actual usage. Run more servers, store more data, or transfer more traffic and the bill goes up. Shut things down and it goes down. There is no minimum spend and no contract required for standard on-demand usage.
The number you see mid-month in the Billing console is always an estimate. The final invoice can be slightly higher or lower once AWS applies tiered pricing adjustments, credits, and taxes.
How AWS billing works step by step
- You create or use AWS resources. Launching an EC2 instance, uploading files to S3, invoking a Lambda function, or sending data through a load balancer all generate usage.
- AWS meters usage by service. Each service tracks consumption in its own units: seconds of compute, gigabytes of storage, number of requests, gigabytes of data transferred.
- Estimated charges appear in the Billing console. Throughout the month, you can check the Bills page to see estimated costs broken down by service. These numbers update regularly but are not final.
- The billing period closes. At the end of the calendar month, AWS stops accumulating usage for that period. Tiered pricing, volume discounts, credits, and taxes are applied.
- AWS issues the invoice. Within the first few days of the next month, the finalized invoice appears in your account. AWS charges your default payment method.
- One-time purchases are handled separately. Upfront Reserved Instance payments, AWS Marketplace purchases, and domain registrations can be billed immediately rather than waiting for the monthly cycle.
Bookmark the Bills page in the AWS console (Billing > Bills). Checking it once a week during your first few months builds a habit that catches problems early.
What actually creates charges in AWS?
A single AWS service can generate multiple line items on your bill. An RDS database, for example, shows up as instance hours, storage, I/O, and backup charges all on separate lines. Knowing which categories of usage cost money helps you predict and control spend. For a deeper dive into how each pricing model works, see the AWS Pricing Models guide.
Compute
Running EC2 instances is billed per second (minimum 60 seconds). Lambda is billed per request plus per GB-second of memory used. Fargate charges for vCPU and memory per second. The instance type, region, and operating system all affect the rate.
Storage
S3 charges per GB stored per month. EBS volumes charge per GB provisioned per month, whether or not the data fills the volume. RDS storage is billed the same way. Snapshots and backups stored in S3 add to the total.
Requests and API calls
S3 charges per PUT, GET, LIST, and other request types. API Gateway charges per million API calls. DynamoDB charges per read and write request unit. These per-request costs are small individually but add up at scale.
Data transfer and egress
Inbound data transfer to AWS is free. Outbound data transfer to the internet (egress) is charged per GB, with tiered pricing that decreases at higher volumes. Cross-region transfers also incur charges. This is one of the most common sources of surprise costs. See Network Egress Costs Explained for the full breakdown.
Data egress catches beginners more than almost anything else. Uploading to AWS is free, but every byte you send out to the internet costs money. If your app serves images, APIs, or downloads, egress charges can grow fast.
Managed service compound pricing
Services like RDS, ElastiCache, and Redshift combine multiple billing dimensions: instance hours, storage, I/O operations, and backup storage. A NAT Gateway charges both an hourly rate and a per-GB data processing fee, which catches many beginners off guard.
Bills vs Cost Explorer vs Budgets vs Pricing Calculator
AWS gives you four main tools for understanding and controlling costs. Think of them like this: Bills is your receipt, Cost Explorer is your spending diary, Budgets is your alarm clock, and Pricing Calculator is your planning spreadsheet. They serve different purposes, and confusing them is one of the most common beginner mistakes.
| Tool | What it does | Best used for | What it does NOT do |
|---|---|---|---|
| Bills | Shows the actual or estimated invoice for each billing period, broken down by service | Checking what you owe this month, viewing finalized invoices | Does not show trends, forecasts, or let you set alerts |
| Cost Explorer | Visual analysis tool for spending over time with filters by service, account, region, and tag | Analyzing spend trends, identifying cost spikes, forecasting future costs | Does not send alerts or estimate costs for resources you have not deployed yet |
| Budgets | Sends email or SNS notifications when spending reaches a threshold you define | Getting warned before spend gets out of hand, tracking against a spending target | Does not stop or throttle resources automatically |
| Pricing Calculator | Estimates monthly cost for a set of services you configure before deploying | Planning costs for a new project, comparing instance types, building a cost proposal | Does not reflect actual usage or connect to your account’s real spend |
For a hands-on walkthrough of Cost Explorer filtering and report creation, see Cost Explorer Reports. To set up budget alerts step by step, see Setting Budgets and Billing Alerts.
When to use this knowledge
- Setting up your first AWS account. Create a budget alert immediately so you are never caught off guard. Even a $5 alert is valuable when you are learning.
- Before launching new services. Use the AWS cost estimation guide to predict monthly cost before you deploy.
- Debugging an unexpected bill. Check the Bills page for the service-level breakdown, then use Cost Explorer to find when the spike happened and which resources caused it.
- Setting up team cost ownership. Activate cost allocation tags and filter Cost Explorer by team or project.
- Comparing estimated vs final charges. If your mid-month estimates do not match the final invoice, check for credits, tax adjustments, or tiered pricing recalculations.
Savings options
On-demand pricing is the default, but AWS offers significant discounts if you can commit to usage or tolerate interruptions. Think of it like phone plans: on-demand is pay-as-you-go with no contract, Reserved Instances are a fixed plan with a discount, Savings Plans are a flexible contract, and Spot Instances are a standby ticket that is cheap but can be cancelled. For a full comparison and decision framework, see Cost Optimisation Strategies.
Reserved Instances
Commit to a specific EC2 instance type in a region for one or three years. Discounts reach up to 72% compared to on-demand. Payment options are all upfront, partial upfront, or no upfront. Best for steady-state workloads where you know the instance type and region will not change.
Savings Plans
Commit to a minimum dollar-per-hour spend on compute for one or three years. AWS applies the discount automatically across EC2, Lambda, and Fargate. More flexible than Reserved Instances because they work across instance families, sizes, regions, and operating systems. Best for teams that want commitment savings without locking into a single instance type.
Spot Instances
Use spare EC2 capacity at up to 90% off on-demand prices. AWS can reclaim Spot Instances with a two-minute warning when capacity is needed. Best for batch jobs, data pipelines, CI/CD builds, and any workload that can handle interruptions gracefully.
Use the AWS Pricing Calculator at calculator.aws to estimate monthly costs before deploying. Compare On-Demand, Reserved, and Savings Plan pricing for your workload so you know which option saves the most.
Consolidated billing with AWS Organizations
When you use AWS Organizations, all member accounts’ charges roll up into a single invoice on the management account. This simplifies payment and unlocks volume-based discounts calculated across all accounts combined.
What changes with consolidated billing
- One payment method covers all member accounts.
- Volume pricing tiers and Reserved Instance benefits are shared across accounts.
- The management account receives and pays the combined invoice.
What stays the same
- Each member account still generates its own usage data.
- You can filter Cost Explorer by individual account to see per-account spend.
- Cost allocation tags work across all accounts in the organization.
- Member account owners can still view their own costs if given permission.
Consolidated billing is not the same as losing visibility. Think of it as a family phone plan: one bill comes to the account holder, but each person’s usage is still tracked and visible separately.
Real-world example: why a simple app costs more than expected
Suppose you deploy a small web application using:
- One t3.small EC2 instance running 24/7
- An S3 bucket storing 10 GB of images
- A NAT Gateway so your instance in a private subnet can reach the internet
- CloudWatch basic monitoring (included free)
You might estimate the bill at roughly the EC2 cost alone. But the actual invoice includes:
- EC2 instance hours (the cost you expected)
- EBS volume storage for the instance’s root disk
- S3 storage plus GET/PUT request charges
- NAT Gateway hourly charge plus per-GB data processing fees
- Data transfer out to the internet for every response served through the NAT Gateway
In this scenario the NAT Gateway and data transfer charges can easily match or exceed the EC2 cost, especially if the application serves moderate traffic. Beginners regularly report that NAT Gateway alone doubled their expected bill. Always check the Free Tier limits and use the cost estimation guide before deploying.
Quick CLI reference
These commands give you a fast terminal-based view of your costs. Replace the date range with the period you want to check.
# View existing budgets
aws budgets describe-budgets \
--account-id $(aws sts get-caller-identity --query Account --output text)
# Get last month's cost breakdown by service
# Replace START and END with the first and last day of the month you want
aws ce get-cost-and-usage \
--time-period Start=$(date -d "$(date +%Y-%m-01) -1 month" +%Y-%m-%d),End=$(date +%Y-%m-01) \
--granularity MONTHLY \
--metrics "UnblendedCost" \
--group-by Type=DIMENSION,Key=SERVICE \
--output tableCommon beginner mistakes
Leaving resources running after testing. EC2 instances, NAT Gateways, RDS databases, and Elastic IPs all accrue charges while they exist, even if nobody is using them. Terminate or delete test resources as soon as you are done.
Assuming Free Tier means everything is free. The AWS Free Tier has specific limits per service. Exceed those limits and you pay standard rates with no warning unless you have set up budget alerts.
Ignoring data egress charges. Sending data out of AWS to the internet costs money. Cross-region and cross-AZ transfers also add up. Keep services in the same region and use VPC endpoints where possible. See Network Egress Costs for details.
Forgetting NAT Gateway costs. A NAT Gateway charges per hour and per GB processed. In high-traffic VPCs, NAT Gateway fees can exceed your compute costs. Use VPC endpoints for S3 and DynamoDB to avoid routing that traffic through the gateway.
Not checking Bills vs Cost Explorer. Bills shows what you owe. Cost Explorer shows trends and lets you investigate. Beginners often check only one and miss the full picture.
Not tagging resources early. Without cost allocation tags, you cannot break down spending by team, environment, or project. Retrofitting tags across hundreds of resources is painful. Tag from day one.
Thinking Budgets automatically stop spend. AWS Budgets sends alerts. It does not shut anything down. If you need automated spend controls, you have to build them yourself using Budget Actions with IAM deny policies or Lambda-based automation.
Summary
- AWS meters usage continuously and bills monthly. Mid-month charges are estimates. The final invoice comes after the billing period closes.
- Charges come from compute, storage, requests, data transfer, and compound managed-service pricing. A single service can produce multiple line items.
- Bills shows the invoice, Cost Explorer shows trends, Budgets sends alerts, and Pricing Calculator estimates costs before you deploy.
- Savings Plans, Reserved Instances, and Spot Instances offer significant discounts for committed or flexible workloads.
- Consolidated billing through AWS Organizations combines accounts into one invoice and shares volume discounts.
- Tag resources from day one, set budget alerts immediately, and check both Bills and Cost Explorer to stay in control.
Frequently asked questions
How does AWS billing work?
AWS meters every resource you use and accumulates charges throughout the month. During the billing period, costs shown in the console are estimates. After the billing period closes (usually the first few days of the next month), AWS finalizes the invoice and charges your payment method. Most services follow pay-as-you-go pricing measured in seconds, gigabytes, or requests.
When does AWS send the invoice?
AWS closes the billing period at the end of each calendar month. The final invoice is typically issued within the first few days of the following month. One-time purchases like Reserved Instances or Marketplace subscriptions may appear on a separate invoice and can be charged immediately.
Why do my current charges differ from the final invoice?
During the month, the Billing console shows estimated charges based on usage recorded so far. Some charges, like data transfer aggregation and tiered pricing adjustments, are only calculated when the billing period closes. Credits, refunds, and taxes are also applied at finalization, which means the final invoice can differ from mid-month estimates.
Does AWS Budgets stop resources automatically?
No. AWS Budgets sends notifications (email or SNS) when your spending hits a threshold. It does not shut down or throttle any resources. To stop spend, you need to take manual action or build automation using Budget Actions combined with IAM policies or Lambda functions.
What are the most common surprise charges in AWS?
The most frequent surprises for beginners are idle EC2 instances left running, NAT Gateway data processing fees, data transfer (egress) charges for traffic leaving AWS, Elastic IP addresses not attached to running instances, and accidentally exceeding Free Tier limits on services like S3 or Lambda.