Developer Guides

Amazon SES Sending Limits and Quotas Explained (2026)

Understand Amazon SES daily quotas, send rates, sandbox limits, ThrottlingException errors, GetSendQuota, safe retries and quota increases.

Published Last updated
Amazon SES sending limits and quotas explained for 2026

Amazon SES enforces two independent, Region-specific sending limits: a recipient quota across a rolling 24-hour window and a maximum recipient rate per second. Sandbox accounts are documented at 200 recipients per 24 hours and one per second. Production values vary by account and Region, so check your live quota before sizing a queue or launch.

What do Amazon SES sending limits mean in 2026?

SES uses limits to reduce sudden, risky increases in volume. The two numbers solve different problems, and staying under one does not protect you from the other.

LimitWhat SES measuresCommon failure
Sending quotaRecipients sent during the previous 24 hoursDaily message quota exceeded
Maximum sending rateRecipients SES can accept per secondMaximum sending rate exceeded

The quota window does not reset at midnight. It rolls continuously. A recipient sent at 14:05 today stops contributing after 14:05 tomorrow. Also, quotas count recipients rather than API calls or MIME messages: one email addressed to 10 people consumes 10 units.

AWS documents these limits as separate for every AWS Region. Production values are account-specific. Treat any article claiming that every production account begins at one universal number as anecdotal, not policy.

Why did SES return ThrottlingException or SMTP 454?

When a send would exceed either limit, SES rejects the request and does not retry it for you. Through the API or an AWS SDK, quota failures produce ThrottlingException with either Daily message quota exceeded or Maximum sending rate exceeded. Through SMTP, the equivalent errors begin with 454 Throttling failure.

The broader product problem is not the error string; it is loss of an expected customer action. If a launch releases 5,000 password-reset jobs at once, the account may have plenty of daily quota but still exceed its per-second rate. Without a queue and retry policy, customers experience that burst as broken login.

SES sandbox limits vs production limits

Account stateRolling 24-hour quotaMaximum rateRecipient restrictions
Sandbox200 recipients1 recipient/secondVerified identities and the mailbox simulator
ProductionVaries by account and RegionVaries by account and RegionExternal recipients allowed, subject to SES policy

Leaving the sandbox and increasing a production quota are related but distinct operating tasks. If your account is still restricted, follow How to Move Amazon SES Out of the Sandbox. This guide focuses on reading, planning, and operating the limits after that prerequisite.

How to check your current SES quota

Use the SES Account dashboard

In the SES console, open Account dashboard. AWS shows sending limits plus daily usage, remaining sends, and the percentage consumed. Confirm the selected Region before copying a number into a capacity plan.

Use GetSendQuota or the AWS CLI

The SES v1 GetSendQuota response exposes three fields:

  • Max24HourSend: recipients permitted in a 24-hour interval.
  • SentLast24Hours: recipients sent during the previous 24 hours.
  • MaxSendRate: recipients SES can accept per second.
aws ses get-send-quota

For a quick headroom estimate, calculate Max24HourSend - SentLast24Hours. Do not treat that result as a promise that an immediate burst will succeed; the per-second rate still applies, and AWS notes that actual acceptance can be lower than the maximum rate.

How should an application throttle SES safely?

1. Put customer email behind a durable queue

Application requests should enqueue a send intent, not block on a large campaign or launch burst. Store a business identifier such as order ID, password-reset token ID, or notification ID so a retry cannot silently create duplicates.

2. Rate-limit by recipients, not jobs

A job with one recipient costs one quota unit. A job with 10 To, CC, and BCC recipients costs 10. Use a token bucket or leaky bucket sized below MaxSendRate, leaving headroom for provider variation and high-priority traffic.

3. Prioritize must-arrive messages

Reserve capacity for password resets, OTPs, security alerts, and receipts. A product announcement should not consume the final daily headroom needed for account recovery. This is where a numeric quota becomes a customer-experience policy.

4. Retry only transient failures

AWS advises applications that hit quota throttling to wait—up to 10 minutes—and retry. For SMTP 4xx responses, AWS documents progressively longer waits. Use exponential backoff with random jitter, cap total attempts, and send exhausted jobs to a dead-letter queue for review. Do not retry malformed requests or permanent recipient failures as if they were throttling.

5. Monitor queue age, not just API errors

An error rate can look healthy while a queue grows behind a conservative limiter. Alert on oldest-job age, send throughput, rejected sends, remaining rolling quota, bounce rate, and complaint rate. Connect outcomes using transactional email webhooks so provider acceptance is not confused with final delivery.

A safe rate calculation for launch planning

Suppose your live quota is 50,000 recipients per rolling 24 hours, SentLast24Hours is 8,000, and MaxSendRate is 14 recipients/second. You have 42,000 units of rolling headroom, but that does not justify dispatching 42,000 jobs immediately.

A conservative worker target might begin below the documented rate—for example, 11 recipients/second—while reserving capacity for priority messages. At that rate, 5,000 single-recipient jobs need roughly 7.6 minutes of provider-acceptance time, before retries and downstream delivery. The 50,000 and 14 figures in this example are illustrative; use your account’s live Region-specific values.

For Laravel, place mailables on queues rather than sending the entire burst in a web request; see Send email in Laravel. For Next.js, keep provider credentials and send logic server-side; see Send transactional email from Next.js.

How to request a higher SES quota or sending rate

  1. Open the AWS Service Quotas console.
  2. Select the AWS Region used by your application.
  3. Choose AWS services, then Amazon Simple Email Service (SES).
  4. Select the sending quota or sending rate and submit the increase request.

AWS says reviews for these request types can take up to 24 hours, and longer when more information is required. Request capacity before a launch, migration, or seasonal peak—not after customers begin receiving 454 errors.

AWS may automatically increase quotas for production accounts that send wanted content, approach their current limit without exceeding it, send to real external recipients, and maintain low bounce and complaint rates. This is not a substitute for capacity planning; “might increase” is not launch capacity.

Operational limits developers often confuse with sending quota

  • Maximum recipients per message: 50 across To, CC, and BCC.
  • SES v1 maximum message size: 10 MB after encoding.
  • SES v2 API or SMTP maximum message size: 40 MB after encoding, with bandwidth throttling for messages larger than 10 MB.
  • Identity and Region scope: verification and quotas are Region-specific; moving a workload changes the control plane you must inspect.

These constraints are independent. A 40 MB message can be valid through SES v2 and still be throttled by bandwidth or send rate. A message to 50 recipients can satisfy the recipient-per-message limit yet consume 50 units of daily and per-second capacity.

When a managed transactional workspace is the simpler choice

SES is a powerful cloud sending service, but it expects teams to operate Regions, quotas, identities, event handling, support workflows, and customer-visible evidence. If your team wants published monthly send ceilings and a company mailbox alongside API delivery, compare that operating work with ArawaMail transactional email and current ArawaMail pricing.

ArawaMail’s documented limits are monthly plan allowances—3,000 on Free, 50,000 on Pro, and 100,000 on Business as of 28 August 2026. They are not SES quotas, and ArawaMail does not publish a per-second API rate in the documentation reviewed for this article. Its documented onboarding requires an active Cloudflare zone, receiving activation, and then outbound sending activation.

How we analyzed these claims

We checked AWS’s current official guides for managing sending limits, service quotas, quota increases, monitoring, quota errors, and GetSendQuota on 28 August 2026. We separated guaranteed documentation from examples and third-party defaults. We also checked ArawaMail’s live platform, sending, mailbox, API, and pricing documentation before comparing operating models.

Amazon SES quota checklist

  • Confirm the AWS Region used in production.
  • Record Max24HourSend, SentLast24Hours, and MaxSendRate.
  • Count recipients, not messages or jobs.
  • Queue sends and rate-limit below the account maximum.
  • Reserve capacity for password resets, OTPs, receipts, and security alerts.
  • Retry throttling with exponential backoff and jitter.
  • Alert on queue age and remaining rolling quota.
  • Request increases at least 24 hours before planned demand.

Frequently asked questions

Does the Amazon SES daily quota reset at midnight?

No. SES evaluates recipients sent during the previous 24 hours, so quota returns gradually as older sends leave the rolling window.

Are SES quotas based on messages or recipients?

Recipients. One message addressed to 10 people counts as 10 against the sending quota and rate.

What are the SES sandbox limits in 2026?

AWS currently documents 200 recipients per rolling 24 hours and one recipient per second, with sending restricted to verified identities or the mailbox simulator.

What happens when SES exceeds the maximum sending rate?

SES rejects the request and does not retry it. API clients receive ThrottlingException; SMTP clients can receive 454 Throttling failure: Maximum sending rate exceeded. Your application must queue and retry the transient failure.

How long does an SES quota increase take?

AWS documents up to 24 hours for sending quota or rate requests when it can grant them without additional information. Plan extra time for review.

Is 50,000 emails per day the default SES production quota?

No universal production default is guaranteed in current AWS documentation. Production quotas vary by account, use case, and Region. Check the SES Account dashboard or GetSendQuota.

Simple, transparent plans

Start free. Grow when your email does.

Get one domain, API access and 3,000 transactional emails every month at no cost.

Compare plans