I Checked Amazon SES's New Pricing Plans (Essentials/Pro/Enterprise) Using the Price List API and SES API
This page has been translated by machine translation. View original
Introduction
On July 21, 2026, Amazon SES officially announced pricing plans (Essentials / Pro / Enterprise).
Three plans have been added: Essentials (no fixed monthly fee), Pro ($105/month), and Enterprise ($500/month). The features and pricing included in each plan are described later.
This is the "Pricing plans" screen added to the console.

In this article, I retrieved the pricing data for each plan with the Price List API, and verified how checking and changing plans works with the SES API's GetAccount / PutAccountPricingAttributes.
Verification
Verification environment
| Item | Value |
|---|---|
| AWS CLI | aws-cli/2.36.4 |
| Main verification region | us-east-1 |
| Per-region checks | ap-northeast-1 and others, 10 regions in total |
| Verification accounts | 3 accounts: Account A, B, and C |
Checking pricing data with the Price List API
With pricingPlans added as an SES attribute, you can now filter and retrieve pricing by plan.
Checking the pricingPlans attribute
First, I checked the list of attributes for the SES service with describe-services. pricingPlans has been added as an attribute.
aws pricing describe-services --service-code AmazonSES --region us-east-1
Full response
{
"Services": [
{
"ServiceCode": "AmazonSES",
"AttributeNames": [
"termType",
"productFamily",
"servicecode",
"location",
"locationType",
"usagetype",
"operation",
"contentType",
"regionCode",
"servicename",
"feature",
"pricingPlans",
"apiCategory",
"description",
"origin",
"recipient",
"group",
"groupDescription",
"Restriction",
"recipientValidation"
]
}
],
"FormatVersion": "aws_v1"
}
Retrieving plan values
I retrieved the possible values of pricingPlans with get-attribute-values.
aws pricing get-attribute-values \
--service-code AmazonSES \
--attribute-name pricingPlans \
--region us-east-1
{
"AttributeValues": [
{ "Value": "Enterprise" },
{ "Value": "Essentials" },
{ "Value": "Pro" }
]
}
Sending unit price for each plan
By specifying pricingPlans in the get-products filter, you can retrieve pricing data for each plan. The following is an example of retrieving Outbound-Email for Essentials.
aws pricing get-products \
--service-code AmazonSES \
--filters \
Type=TERM_MATCH,Field=pricingPlans,Value=Essentials \
Type=TERM_MATCH,Field=feature,Value=Outbound-Email \
Type=TERM_MATCH,Field=regionCode,Value=us-east-1 \
--region us-east-1
Essentials Outbound-Email response (excerpt)
{
"publicationDate": "2026-07-20T18:02:12Z",
"feature": "Outbound-Email",
"pricingPlans": "Essentials",
"tiers": [
{"beginRange": "0", "endRange": "10000000", "pricePerUnit": "0.0001600000"},
{"beginRange": "10000000", "endRange": "100000000", "pricePerUnit": "0.0001400000"},
{"beginRange": "100000000", "endRange": "Inf", "pricePerUnit": "0.0001100000"}
]
}
The outbound email unit prices of the three plans, converted to per 1,000 emails, are compared below.
| Volume | Essentials | Pro | Enterprise |
|---|---|---|---|
| 0–10M emails | $0.16 | $0.22 | $0.23 |
| 10M–100M emails | $0.14 | $0.17 | $0.18 |
| Over 100M emails | $0.11 | $0.12 | $0.13 |
※ Essentials and Enterprise are from the Price List API; Pro is the value shown on the official pricing page.
The sending unit prices (Outbound-Email) could be retrieved from the Price List API for Essentials and Enterprise. The Pro Outbound-Email unit price was not included in the Price List API response, so I have listed the value from the official pricing page. Note that the data for features included in Pro ($0.00) can be retrieved from the Price List API.
The fixed monthly fees are as follows.
| Plan | Fixed monthly fee |
|---|---|
| Essentials | None |
| Pro | $105/account/region/month |
| Enterprise | $500/account/region/month |
Features included in each plan
Based on the Price List API responses and the "Compare plans" section of the official pricing page, I organized the features of each plan. ✅ means included in the plan price (no additional charge), and Add-on means available at an additional charge.
| Feature | Essentials | Pro | Enterprise |
|---|---|---|---|
| VDM - SES deliverability | ✅ | ✅ | ✅ |
| VDM - Global deliverability | Add-on | ✅ | ✅ |
| Dedicated IP - Managed | Add-on | ✅ (1 domain, 1 DIP, 5 seedlist tests) | ✅ (5 domains, 12 DIPs, 25 seedlist tests) |
| Email validation (automatic) | Add-on | ✅ (includes 2,500 API calls/month) | ✅ (includes 5,000 API calls/month) |
| Global endpoint | Add-on | Add-on | ✅ |
| Tenants | Add-on | Add-on | ✅ (includes 1,000 tenants) |
| Authenticated ingress endpoint | ✅ | ✅ | ✅ |
| Open/mTLS ingress endpoint | Add-on ($50/month) | Add-on ($50/month) | ✅ (1 included) |
| Trend Micro add-on | Add-on | ✅ | ✅ |
| Spamhaus add-on | Add-on | Add-on | ✅ |
Price List API responses for Pro and Enterprise (excerpt, reconstructed)
{
"publicationDate": "2026-07-20T18:02:12Z",
"pro_samples": [
{
"feature": "Recipients-Validation",
"pricingPlans": "Pro",
"pricePerUnit": "0.0000000000"
},
{
"feature": "InboxTest-VirtDelivMgr",
"pricingPlans": "Pro",
"tiers": [
{"beginRange": "0", "endRange": "5", "pricePerUnit": "0.0000000000"},
{"beginRange": "5", "endRange": "Inf", "pricePerUnit": "10.0000000000"}
]
}
],
"enterprise_samples": [
{
"feature": "Outbound-Email",
"pricingPlans": "Enterprise",
"tiers": [
{"beginRange": "0", "endRange": "10000000", "pricePerUnit": "0.0002300000"},
{"beginRange": "10000000", "endRange": "100000000", "pricePerUnit": "0.0001800000"},
{"beginRange": "100000000", "endRange": "Inf", "pricePerUnit": "0.0001300000"}
]
},
{
"feature": "Recipients-DIP-Managed",
"pricingPlans": "Enterprise",
"pricePerUnit": "0.0000000000"
}
]
}
Comparing traditional pricing (NONE) with Essentials
I compared the traditional à la carte pricing (no plan = NONE) with the Essentials plan pricing.
| Item | NONE | Essentials |
|---|---|---|
| Outbound email | $0.10/1,000 emails (flat) | $0.16/1,000 emails (volume tiers)※ |
| VDM - SES deliverability | $0.07/1,000 emails (charged separately) | Included (no additional charge) |
| Mail Manager processing | $0.15/1,000 emails (charged separately) | $0.16/1,000 emails (same tiered pricing applies)※ |
| Fixed monthly fee | None | None |
※ The Essentials tier pricing ($0.16→$0.14→$0.11) applies to both Outbound-Email and Mail Manager Email Processing (see footnotes 1 and 2 on the pricing page). Volume tiers are counted independently for Outbound and Mail Manager.
The NONE unit prices are from the official pricing page; Essentials values are from the Price List API and the pricing page.
For sending only, NONE ($0.10) has the lower unit price. On the other hand, when using VDM together, the combined price is $0.17/1,000 emails for NONE ($0.10 + $0.07), whereas Essentials is $0.16/1,000 emails with VDM included. For accounts using VDM, switching to Essentials may lower the combined cost.
Checking and changing plans with the SES API
I tried checking and changing plans using the SES API (sesv2) GetAccount and PutAccountPricingAttributes.
Checking the current plan with GetAccount
A PricingAttributes field has been added to GetAccount.
aws sesv2 get-account --region us-east-1 --query PricingAttributes
{
"CurrentPlan": "ESSENTIALS"
}
The NextPlan field is not included in the response when there is no scheduled change (it may be used when changing to Pro / Enterprise, but this was not verified this time).
Full get-account output
{
"DedicatedIpAutoWarmupEnabled": false,
"EnforcementStatus": "HEALTHY",
"ProductionAccessEnabled": true,
"SendingEnabled": true,
"PricingAttributes": {
"CurrentPlan": "ESSENTIALS"
},
"SendQuota": {
"Max24HourSend": 50000.0,
"MaxSendRate": 14.0,
"SentLast24Hours": 0.0
}
}
Changing the plan with PutAccountPricingAttributes
With PutAccountPricingAttributes, you change the plan by specifying the plan name in the --plan parameter. First, I changed from ESSENTIALS to NONE.
aws sesv2 put-account-pricing-attributes --plan NONE --region us-east-1
The response is empty (HTTP 200). When I checked with GetAccount after the change, CurrentPlan had changed to NONE immediately.
aws sesv2 get-account --region us-east-1 --query PricingAttributes
{
"CurrentPlan": "NONE"
}
Next I switched back from NONE to ESSENTIALS and likewise confirmed that it took effect immediately.
aws sesv2 put-account-pricing-attributes --plan ESSENTIALS --region us-east-1
Here is a summary of plan change behavior.
| Operation | Result | Timing of effect |
|---|---|---|
| ESSENTIALS → NONE | Success | Immediate (CurrentPlan changed directly) |
| NONE → ESSENTIALS | Success | Immediate (CurrentPlan changed directly) |
| NONE → ESSENTIALS (ap-northeast-1) | Success | Immediate |
For changes between NONE ↔ ESSENTIALS, NextPlan (scheduled change) was not used, and CurrentPlan changed directly.
Plan status by region
When I ran GetAccount in the 10 SES-supported regions I checked this time, the PricingAttributes field was returned in all regions.
At the time of verification, only ap-northeast-1 (Tokyo) was NONE, and the other nine regions were ESSENTIALS. Even after changing the Tokyo region to ESSENTIALS with PutAccountPricingAttributes, the plan status of the other regions did not change. Within the scope of this verification, I confirmed that plans are managed independently on a per-region basis.
Rollout status of the console and documentation
A "Pricing plans" menu has been added to the SES left navigation in the Management Console. In Account A it was displayed with a "New" badge. I could also confirm it was displayed in Account B. On the other hand, in ap-northeast-1 of Account C, the "Pricing plans" menu was not displayed.


The official pricing page has been revised and now includes pricing tables and a feature comparison table for each plan. A Pricing plans page has also been added to the Developer Guide.
Summary
Pricing plans of Essentials, Pro, and Enterprise have been added to Amazon SES. In this verification, I checked the pricing data obtainable from the Price List API, and confirmed how to check the current plan and change between NONE ↔ ESSENTIALS with the SES API's GetAccount / PutAccountPricingAttributes.
For sending only, the traditional NONE ($0.10/1,000 emails) has a lower sending unit price, and Essentials raises the sending unit price ($0.16/1,000 emails). On the other hand, when using VDM together, Essentials is $0.16/1,000 emails with VDM included, compared with the combined NONE price ($0.17/1,000 emails), so depending on usage there are cases where the cost goes down. Pro / Enterprise seem to be plans that you compare based on the features you need, such as managed dedicated IPs and global endpoints.
In this verification, the plan status appeared to be independent per region, so if you use SES in multiple regions, it seems wise to check the current plan for each region.
