I Checked Amazon SES's New Pricing Plans (Essentials/Pro/Enterprise) Using the Price List API and SES API

I Checked Amazon SES's New Pricing Plans (Essentials/Pro/Enterprise) Using the Price List API and SES API

Amazon SES now offers three pricing plans: Essentials, Pro and Enterprise. I checked the pricing data in the Price List API and how GetAccount and PutAccountPricingAttributes in the SES API show and change the plan.
2026.07.22

This page has been translated by machine translation. View original

Introduction

On July 21, 2026, Amazon SES officially announced pricing plans (Essentials / Pro / Enterprise).

https://aws.amazon.com/about-aws/whats-new/2026/07/amazon-ses-pricing-plans/

https://aws.amazon.com/blogs/messaging-and-targeting/introducing-amazon-simple-email-service-ses-pricing-plans/

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.

SES価格プラン

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.

https://aws.amazon.com/ses/pricing/

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.

Share this article

AWSのお困り事はクラスメソッドへ