I checked the new Amazon SES pricing plans (Essentials/Pro/Enterprise) using the Price List API and SES API

I checked the new Amazon SES pricing plans (Essentials/Pro/Enterprise) using the Price List API and SES API

Three pricing plans have been added to Amazon SES: Essentials, Pro, and Enterprise. We verified the pricing data available through the Price List API, as well as the plan status checking and modification behavior via the SES API's GetAccount and PutAccountPricingAttributes operations.
2026.07.22

This page has been translated by machine translation. View original

Introduction

On July 20, 2026, pricing plan-related changes were added to the Amazon SES API model. The AWS CLI 2.36.3 CHANGELOG includes the following entry:

Amazon SES introduces three new Pricing Plans (Essentials, Pro, Enterprise), which bundle SES features under one pricing umbrella.
https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst

The three plans added this time are Essentials (no monthly fixed fee), Pro ($105/month), and Enterprise ($500/month). The features and pricing included in each plan will be described later.

This is the "Pricing Plans" screen added to the console.

SES Pricing Plans

In this article, we retrieved pricing data for each plan using the Price List API, and verified the behavior of plan confirmation and changes using the SES API's GetAccount / PutAccountPricingAttributes.

Verification Details

Verification Environment

Item Value
AWS CLI aws-cli/2.36.4
Primary verification region us-east-1
Regional verification ap-northeast-1 and 9 other regions
Verification accounts 3 accounts: Account A, B, and C

Checking Pricing Data with the Price List API

With the addition of pricingPlans to SES attributes, it is now possible to filter and retrieve pricing by plan.

Checking the pricingPlans Attribute

First, we used describe-services to check the list of attributes for the SES service. 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

We used get-attribute-values to retrieve the possible values for pricingPlans.

aws pricing get-attribute-values \
  --service-code AmazonSES \
  --attribute-name pricingPlans \
  --region us-east-1
{
    "AttributeValues": [
        { "Value": "Enterprise" },
        { "Value": "Essentials" },
        { "Value": "Pro" }
    ]
}

Per-send Unit Price for Each Plan

By specifying pricingPlans in the get-products filter, you can retrieve pricing data for each plan. Below is an example of retrieving the Outbound-Email data 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 following is a comparison of outbound email unit prices for the 3 plans, converted to per 1,000 emails.

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 values are from the Price List API; Pro values are from the console's "Compare Plans" screen.

The send unit price (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, and the value shown is from the console's "Compare Plans" screen. Note that Pro feature-included ($0.00) data can be retrieved from the Price List API.

Monthly fixed fees are as follows.

Plan Monthly Fixed Fee
Essentials None
Pro $105/account/region/month
Enterprise $500/account/region/month

Features Included in Each Plan

We organized the features returned as $0.00 (or $0.00 within the free tier) by the Price List API. Some features are charged separately beyond the free tier.

Feature Essentials Pro Enterprise
VDM - SES Deliverability
VDM - Global Deliverability
Dedicated IP - Managed
Email Validation (Automatic)
Global Endpoints
Tenants
Authenticated Ingress Endpoints
Open/mTLS Ingress Endpoints
Trend Micro Add-on
Spamhaus Add-on
Pro and Enterprise Price List API responses (excerpt, restructured)
{
    "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 Legacy Pricing (NONE) with Essentials

We compared the legacy à la carte pricing (no plan = NONE) with the Essentials plan.

Item NONE Essentials
Outbound Email $0.10/1,000 emails (flat rate) $0.16/1,000 emails (volume tiers)
VDM - SES Deliverability $0.07/1,000 emails (separate charge) Included
Mail Manager Processing $0.15/1,000 emails (separate charge) Included
Monthly Fixed Fee None None

※ NONE unit prices are from the official pricing page; Essentials values are from the Price List API.

If sending only, NONE has a lower unit price. On the other hand, when using both VDM and Mail Manager, the combined rate is $0.32/1,000 emails (NONE) versus $0.16/1,000 emails for Essentials. For accounts using both VDM and Mail Manager, switching to Essentials reduces the combined cost per send.

Checking and Changing Plans with the SES API

We tested plan confirmation and changes 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 pending plan change (it may be used when changing to Pro / Enterprise, but this was not tested 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 Plans with PutAccountPricingAttributes

Use PutAccountPricingAttributes with the --plan parameter to specify the plan name and make a change. First, we changed from ESSENTIALS to NONE.

aws sesv2 put-account-pricing-attributes --plan NONE --region us-east-1

The response is empty (HTTP 200). After the change, checking with GetAccount confirmed that CurrentPlan immediately changed to NONE.

aws sesv2 get-account --region us-east-1 --query PricingAttributes
{
    "CurrentPlan": "NONE"
}

We then changed back from NONE → ESSENTIALS and confirmed that the change was also reflected immediately.

aws sesv2 put-account-pricing-attributes --plan ESSENTIALS --region us-east-1

A summary of plan change behavior is as follows.

Operation Result Timing
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 and ESSENTIALS, NextPlan (scheduled change) was not used, and CurrentPlan changed directly.

Plan Status by Region

We ran GetAccount across the 10 SES-supported regions verified this time, and PricingAttributes was returned in all regions.

At the time of verification, only ap-northeast-1 (Tokyo) was set to NONE, while the other 9 regions were set to ESSENTIALS. Even after changing the Tokyo region to ESSENTIALS using PutAccountPricingAttributes, the plan status in other regions did not change. Within the scope of this verification, we confirmed that plans are managed independently on a per-region basis.

Console and Documentation Rollout Status

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. It was also confirmed to be visible in Account B. However, in Account C's ap-northeast-1, the "Pricing Plans" menu was not displayed.

Compare Plans

Change Plan

The official pricing page and API reference documentation had not yet been updated at the time of writing.

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

Summary

The Essentials, Pro, and Enterprise pricing plans have been added to Amazon SES. In this verification, we confirmed the pricing data available from the Price List API, and verified the current plan confirmation and NONE ↔ ESSENTIALS plan change behavior using the SES API's GetAccount / PutAccountPricingAttributes.

For sending only, the legacy NONE plan has a lower unit price, and Essentials results in a higher unit price per send. On the other hand, for accounts using both VDM and Mail Manager's applicable billing items, Essentials may be cheaper than the combined pay-as-you-go charges depending on usage. Pro and Enterprise appear to be plans to compare based on the features you need, such as managed dedicated IPs and global endpoints.

Since plan status appeared to be independent per region in this verification, if you are using SES across multiple regions, it would be a good idea to check the current plan for each region individually.

Share this article

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