What AWS announced
On July 21, 2026 AWS published pricing plans for Amazon SES: three subscription tiers named Essentials, Pro, and Enterprise, each containing everything in the one before it. The announcement went out on the AWS What's New feed and, in longer form, on the AWS Messaging & Targeting blog under the byline of Advait Gomkale, Senior Product Manager for Amazon SES.
The plans are available in every Region where SES operates except Middle East (UAE) and Middle East (Bahrain). AWS frames them as a bundling exercise: subscribing costs "up to 22% less than purchasing them individually" — which is AWS's claim about a plan versus buying the same add-ons separately, not a claim that a plan is cheaper than plain pay-per-email sending.
Two things did not change and are easy to miss under the announcement. À la carte pricing still exists, still costs $0.10 per 1,000 emails, and is still printed on the SES pricing page. And accounts that have been actively sending were not repriced.
What did change is the default. That is the whole story, and it is worth being precise about who it touches.
The four pricing modes
SES now has four ways to be billed for outbound sending. Monthly fees are charged per account, per Region. The per-email rates are marginal volume bands, not flat rates — each band applies only to the volume that falls inside it.
| Mode | Monthly fee | First 10M / mo | 10M – 100M / mo | Above 100M / mo |
|---|---|---|---|---|
| À la carte | $0 | $0.10 / 1,000 | $0.10 / 1,000 | $0.10 / 1,000 |
| Essentials | $0 | $0.16 / 1,000 | $0.14 / 1,000 | $0.11 / 1,000 |
| Pro | $105 / mo | $0.22 / 1,000 | $0.17 / 1,000 | $0.12 / 1,000 |
| Enterprise | $500 / mo | $0.23 / 1,000 | $0.18 / 1,000 | $0.13 / 1,000 |
The marginal structure matters more than it looks. An account sending 20 million emails a month on Essentials pays $0.16 per 1,000 on the first 10 million and $0.14 per 1,000 on the next 10 million — $3,000, not the $3,200 you get by applying the headline rate to the whole volume. Any spreadsheet that multiplies one rate by total volume is wrong above 10 million, and wrong in the direction that makes the plan look worse than it is.
À la carte has no bands. It is $0.10 per 1,000 at every volume, which is why it stays the cheapest way to buy raw sending no matter how large you get.
Who starts on a plan and who doesn't
The SES pricing page states the rule in one sentence:
"New SES accounts and account x region combinations with no metered SES activity since June 1, 2025 will start on the Essentials plan beginning July 21, 2026."
Read the unit of measurement carefully. It is not "account." It is account × Region. A company whose us-east-1 sends millions a month and whose eu-west-1 has been dormant since 2024 gets two different answers in the same AWS account: us-east-1 carries on as before, eu-west-1 starts on Essentials.
The corollary is the part most coverage skipped, and it is in the AWS blog post: active customers — anyone who sent or processed email since June 1, 2025 — remain on à la carte pricing. Nobody's live sending was moved onto a $0.16 rate. If you have a busy production account, your bill is unchanged.
The accounts that get caught are the quiet ones: the brand-new AWS account you just opened, the second Region you were about to expand into, the staging account that hasn't sent since last year, and the disaster-recovery Region you provisioned and never used.
Plans are per account and per Region
This is the single most consequential detail in the announcement and the one that will surprise people six months from now. The SES developer guide is explicit:
"Plans apply for each account and each AWS Region, so you manage your plan separately in each Region where you use Amazon SES."
Three consequences follow directly. First, there is no account-wide pricing setting to check; there are as many settings as you have Regions. Second, the monthly fees multiply: Pro at $105 per month across four Regions is $420 per month, and Enterprise at $500 per month across four Regions is $2,000 per month, before a single email is sent. Third, an audit that looks only at your primary Region will report a clean bill of health while a Region you forgot about quietly sits on Essentials.
If you run SES in more than one Region — and most teams running SES for latency, residency, or failover do — the plan question is a per-Region inventory task, not a one-time decision.
What the plans actually bundle
Every plan includes everything in the plan below it. Here is what each one adds, stated the way AWS states it rather than the way it's usually summarized.
Essentials — $0/month + $0.16 per 1,000 on the first 10M
Includes Virtual Deliverability Manager scoped to SES. Note the qualifier: the pricing page splits VDM into two rows, and VDM Global Deliverability remains an add-on on Essentials — it's only included from Pro up. "Essentials bundles VDM" is the shorthand everyone reaches for, including our own copy until we checked. It's half right. Standalone, Global Deliverability is $1,250 per month per account per Region.
Pro — $105/month + $0.22 per 1,000 on the first 10M
Adds VDM Global Deliverability — what AWS calls "global inbox placement visibility" — plus 1 domain, 1 managed dedicated IP, 5 seed-list tests, and 2,500 API email validations per account per Region per month. For comparison, a standard dedicated IP is $24.95 per month and email validation is $0.01 per validation à la carte.
Enterprise — $500/month + $0.23 per 1,000 on the first 10M
Adds Global Endpoints (the multi-Region resilience story), an Open Ingress Endpoint, 1,000 tenants per account per Region, 5 domains, 12 managed dedicated IPs, 25 seed-list tests, and 5,000 API validations per month. It also lists one annual expert deliverability assessment — but that one is gated: it requires 12+ months subscribed and 6 billion trailing emails. It is not a perk you get in month one.
Buying a plan doesn't turn anything on
This sentence in the developer guide is the one to internalize:
"When you choose a plan, no features turn on automatically. You still enable or disable each feature individually."
So an account that was defaulted into Essentials and never touched a console pays $0.16 per 1,000 on the first 10 million emails each month and receives, in practice, exactly what it would have received on à la carte at $0.10 — because nobody enabled the deliverability tooling the extra six cents is buying.
A plan you didn't choose and don't use is a 60% markup on sending.
$0.16 versus $0.10 per 1,000 is six cents. On 500,000 emails a month that is $30. On 5 million it is $300. The plan is worth it if you turn the features on and would otherwise buy them — and it is pure overhead if you don't. AWS documents both halves of that honestly; the only failure mode is not looking.
The escape hatch, and its one-shot fuse
This is the most useful paragraph AWS published, and it is buried under a heading called "When plan changes take effect":
"Upgrades take effect immediately when you submit the request. If you did not explicitly choose a plan and were defaulted to the Essentials plan, your first downgrade or cancellation to à la carte pricing also takes effect immediately. All other downgrades or cancellations take effect at the start of your next billing cycle."
Three separate rules live in those three sentences:
Upgrades are immediate
Move up and you are on the new plan, and its rate, the moment you submit.
Your first exit from a defaulted plan is immediate
Only if you never explicitly chose a plan. If AWS put you on Essentials and you cancel back to à la carte, that takes effect immediately — you do not wait out a billing cycle at $0.16.
Everything else waits for the next billing cycle
Every other downgrade or cancellation takes effect at the start of your next billing cycle.
The word is "first." The fuse burns once.
If you were defaulted into Essentials, cancelled back to à la carte, then later deliberately subscribed to a plan, a subsequent cancellation is an ordinary downgrade and waits for the next billing cycle. Treat the immediate exit as a one-time correction of a default you never asked for, not as a general-purpose undo button.
In the console this lives at SES → Pricing plan, which shows your Plan, your Region, and a Next plan field that gets populated when a change is scheduled, alongside Change plan and Cancel plan buttons. New customers also see a Select pricing plan step in the Get set upwizard — which is the moment to make an explicit choice rather than inherit one.
The SES free tier is closed to new customers
The old SES offer — 3,000 monthly email charges free for 12 months — is discontinued for new customers as of July 21, 2026. Existing free-tier users keep the benefit through their 12-month period; this is not a retroactive cancellation.
New AWS accounts instead get the generic AWS Free Tier credit of up to $200, which applies across eligible AWS services rather than to SES specifically. That is a real difference in kind, not just in amount: the old offer was a standing monthly allowance on one service, and the new one is a pool of credit you can burn on anything eligible, including all the infrastructure around your sending.
We are deliberately not telling you how long that credit lasts. See the "What nobody can tell you yet" section below — AWS's own pages give three different framings.
Reading and setting the plan from the API
Two SESv2 operations carry the whole feature, which is good news if you want to audit dozens of account-and-Region pairs without clicking through consoles.
GetAccount reads it. No URI parameters, no request body:
GET /v2/email/account HTTP/1.1The response carries a new PricingAttributes object alongside the familiar SendQuota, SendingEnabled, and VdmAttributes fields:
{
"PricingAttributes": {
"CurrentPlan": "string",
"NextPlan": "string"
}
}AWS documents this as "the pricing attributes that apply to your Amazon SES account, including the currently active pricing plan and any scheduled change." NextPlanis the API mirror of the console's Next plan field — so a downgrade that is queued for the next billing cycle is visible programmatically before it lands. That makes drift detectable: an account whose NextPlan is populated is an account somebody changed.
PutAccountPricingAttributes sets it:
PUT /v2/email/account/pricing-attributes HTTP/1.1
Content-type: application/json
{
"Plan": "string"
}Plan is required and takes one of NONE, ESSENTIALS, PRO, or ENTERPRISE. NONEis à la carte — which is a nice piece of API design honesty, because à la carte genuinely is the absence of a plan rather than a fourth plan. A successful call returns HTTP 200 with an empty body.
Errors worth handling specifically: BadRequestException (400), TooManyRequestsException (429), and ConflictException(409), which AWS documents as firing "if there is already an ongoing account details update under review." That last one is the interesting one in automation — a 409 here is not a failure, it is a signal that another change to the account is already in flight, and retrying blindly will not help.
Both operations are available in the AWS CLI v2 and every AWS SDK. We are not printing an IAM policy for them — see the unknowns below for why.
What the difference actually costs
Abstract rate tables are easy to nod at and hard to act on, so here is a specific, reproducible number. Take a team sending 500,000 emails a month with 250,000 tracked delivery events, on the Wraps Growth tier, running the full event pipeline we deploy into their AWS account — EventBridge, SQS, Lambda, and DynamoDB with 90-day retention.
| Line | À la carte | Essentials |
|---|---|---|
| SES email sending | $50.00 | $80.00 |
| Event pipeline (EventBridge, SQS, Lambda, DynamoDB) | $15.10 | $15.10 |
| Wraps Growth | $79.00 | $79.00 |
| Total per month | $144.10 | $174.10 |
$30 a month, $360 a year, and the only thing that moved is the SES sending line: 500,000 × ($0.16 − $0.10) / 1,000. Every other line is identical because the plan changes what you pay for sending and nothing else. At this volume you are inside the first 10 million band, so the headline rates apply directly.
You don't have to take our word for it. The same math runs behind the SES calculator, which has an AWS SES Pricing Plan selector with Essentials labelled "(AWS default)", and behind a public, unauthenticated JSON endpoint you can curl:
# à la carte
curl 'https://wraps.dev/api/pricing/estimate?emails=500000&events=250000&tier=growth&sesPlan=alacarte'
# the same workload, defaulted into Essentials
curl 'https://wraps.dev/api/pricing/estimate?emails=500000&events=250000&tier=growth&sesPlan=essentials'Every response carries a shareUrl back into the calculator with the same inputs, and the endpoint honours Accept: text/markdown if you'd rather read a table than parse JSON. The engine walks AWS's marginal bands, so the numbers stay right above 10 million a month too.
What the plans don't cover
The plans price outbound sending. Several things on your SES bill sit outside them and are unaffected by which plan you're on: attachment data at $0.12 per GB, inbound email at $0.10 per 1,000 messages plus $0.09 per 1,000 incoming chunks, and Mail Manager at $0.15 per 1,000 emails processed. Global Endpoints and EC2-based senders can also incur data transfer charges.
Our calculator does not model attachment data at all, which means it understates the bill for attachment-heavy senders. If you're routinely shipping megabyte PDFs, add $0.12 per GB by hand.
What nobody can tell you yet
Being explicit about the edges of what is documented:
Whether the per-1,000 rates vary by Region
The pricing page publishes one rate table and never says the rates are uniform across Regions. Absence of a statement is not a guarantee, so we are not making one. What AWS does say is that you select and are billed for a plan per Region — and that plans are available in every Region where SES operates except Middle East (UAE) and Middle East (Bahrain).
How long the $200 credit lasts
The SES pricing page describes the AWS Free Tier credit as valid for 12 months. The AWS blog post announcing the plans describes it as $200 over six months. The AWS Free Tier page describes $100 immediately plus up to $100 more, up to $200 over 6 months. Three AWS pages, three framings. We are not going to pick one for you — check the AWS Free Tier terms against your own account.
What happens to dedicated IPs you already own
None of the announcement, the pricing page, or the developer guide documents what happens to already-provisioned dedicated IPs when you move into or out of a plan that bundles managed ones. The only adjacent statement is that choosing a plan does not turn features on. Check the console before you change a plan on an account with dedicated IPs in production.
The exact IAM action names
We could not retrieve the SES entry in the AWS Service Authorization Reference to confirm the action strings behind the two pricing APIs, so this post does not print an IAM policy. If you are scoping a role for this, read the Service Authorization Reference for Amazon SES directly rather than trusting a policy snippet from a blog.
And one gap that's ours, not AWS's
The cost summary printed by the Wraps CLI still quotes the à la carte rate of $0.10 per 1,000 regardless of which plan your account and Region are actually on. The plan-aware surfaces today are the calculator and the estimate API. If you're reading a cost estimate out of a terminal, sanity-check it against your real plan.
What to do this week
1. Call GetAccount in every Region you send from
Not just the busy one. Include staging accounts, failover Regions, and anything provisioned and forgotten. Read PricingAttributes.CurrentPlan and NextPlan.
2. If you were defaulted in and don't use the bundle, leave now
The immediate-effect exit only applies to accounts that never explicitly chose a plan, and only to the first one. There is no reason to sit on a rate for features nobody enabled.
3. If you do use the features, price the bundle honestly
A managed dedicated IP, seed-list tests, global deliverability visibility, and thousands of email validations have real standalone prices. A plan can genuinely be the cheaper way to buy them — per account, per Region, times however many Regions you run.
4. Make the choice explicit, wherever you land
A deliberate plan you can defend beats an inherited default you never noticed. That is the entire lesson of this change, and it applies just as much when the answer is "Essentials is right for us."
The wider point
Owning your email infrastructure means the pricing page is a document you have to read. Nothing here is hidden — AWS published the rates, the defaults, the effective dates, and the exit rule, in public, on the same day. But nothing here arrives in your inbox as a bill line item that says "you are paying 60% more for sending than you need to," either.
That is the trade you make when you run on your own account instead of renting a managed sending service: total visibility, and the obligation to actually look. The tooling's job is to make looking cheap. Ours does it per account and per Region, because that is the unit AWS chose to bill in.
Continue reading
Price your actual plan
Pick your plan and volume and see the whole bill — SES sending on AWS's marginal bands, plus the event pipeline, all billed to your own AWS account.

