← All comparisons

Resend vs Amazon SES

Choose Amazon SES if your product already runs on AWS, you send hundreds of thousands of emails a month or more, and someone on your team will own bounce handling and sender reputation. Choose Resend if you want a first email out this afternoon, templates written as React components and a flat monthly price. At 100,000 emails a month, list prices work out to about $16 on SES Essentials against $35 on Resend Pro or $90 on Scale. Check Resend's pricing page for slider volumes without a published readout.

Prices checked 7 October 2026 on Resend's pricing page and AWS's SES pricing page. Both vendors change plans without notice, so confirm before you commit.

Decision table

Your situation Pick Reason
Seed-stage B2B SaaS sending invites, password resets and invoices Resend Pro is $20 a month for 50,000 emails, there is no per-region account to configure and the SDK call is a few lines of code.
Platform already on AWS with an infrastructure team Amazon SES IAM credentials, SDKs and billing you already have, plus the lowest per-email price in this comparison.
1M+ emails a month of notifications Amazon SES $0.16 per 1,000 on Essentials, falling to $0.14 past 10M a month. Resend's overage rate is $0.90 per 1,000.
Sending from many customer-owned domains Depends Resend Scale allows 1,000 domains; SES Enterprise adds Tenants that isolate reputation per customer.
No engineer to watch bounces and complaints Resend Suppression lists and bounce details come with the plan; on SES you wire up the notifications yourself.
Need inbound mail processing next to outbound Amazon SES Mail Manager handles routing and filtering of inbound mail, billed per email processed. Resend's pricing page also lists inbound emails as a feature.

What each one costs

The two vendors bill in different shapes. Resend sells monthly plans with an email allowance and charges overage on top. SES charges per thousand emails and, since mid-2026, offers three plans built around deliverability tooling.

Resend plans

  • Free, $0: 3,000 emails a month with a cap of 100 a day, 3 domains and 1 webhook endpoint.
  • Pro, $20 a month: 50,000 emails, 10 domains, no daily limit, 5 webhook endpoints. Extra emails cost $0.90 per 1,000.
  • Scale, $90 a month: 100,000 emails, 1,000 domains, 10 webhook endpoints, a dedicated Slack channel and the option to add a dedicated IP.
  • Enterprise: custom pricing with a 99.99% uptime SLA, guaranteed response times and a dedicated customer success manager.

Add-ons listed on the same page: 100 extra domains for $20 a month, a dedicated IP for $30 a month (offered to Scale customers sending more than 3,000 emails a day) and single sign-on for $150 a month. Resend states it only sells monthly plans, so there is no annual discount to model.

Amazon SES plans

  • Essentials: $0.16 per 1,000 emails up to 10M a month, $0.14 from 10M to 100M, $0.11 beyond. No monthly fee.
  • Pro: $0.22 per 1,000 emails plus $105 per account per region per month. Includes managed dedicated IPs, email validation and global deliverability insights.
  • Enterprise: $0.23 per 1,000 plus $500 per account per region per month, adding Global Endpoints and Tenants.
  • À la carte: $0.10 per 1,000 outbound emails with each extra feature billed separately.

AWS says new accounts start on Essentials from 21 July 2026 unless you choose another plan, and you can switch to à la carte at any time. Eligible new AWS customers also get up to $200 in credits and a free plan for the first six months. Rates are charged per recipient, and attachments add $0.12 per GB of data sent. If you send from EC2, AWS notes you may also see data transfer charges.

Amazon SES pricing page, captured Oct 2026
Amazon SES pricing page as of 7 Oct 2026. Source: https://aws.amazon.com/ses/pricing/

Monthly cost at three volumes

Arithmetic below uses list rates only, with Resend overage enabled and SES Essentials against à la carte. It leaves out attachment data, EC2 transfer and any add-ons.

Emails a month Resend SES Essentials SES à la carte
50,000 $20 (Pro, included) 50 × $0.16 = $8.00 50 × $0.10 = $5.00
100,000 $35 on Pro or $90 on Scale; see Resend pricing 100 × $0.16 = $16.00 100 × $0.10 = $10.00
250,000 Check Resend's pricing slider; 250k is not a published readout 250 × $0.16 = $40.00 250 × $0.10 = $25.00

AWS's own worked example agrees with the Essentials column: 250,000 emails of 32KB each come to $40.96 once the $0.96 of message data is added. Resend's pricing page also carries a volume slider that runs from 3,000 up to 3,000,000+, so a plan between Pro and Enterprise may beat plain overage at 250,000 and above. Check the slider before you budget for a million emails. The Scale plan only wins on price when you need its extras, such as more webhook endpoints, 1,000 domains or the dedicated IP option.

Costs the table does not show

  • Resend free plan limits: 100 emails a day and 30-day data retention mean the free tier suits development and tiny products, not a launch day with a spike.
  • SES Pro and Enterprise fixed fees: $105 and $500 a month are charged per account per region, so two regions double the base fee.
  • SES dedicated IPs: standard IPs are $24.95 a month each and you do the warm-up. Managed IPs are $15 a month per account plus $0.08 per 1,000 emails up to 10M, with AWS handling warm-up.
  • SES deliverability tooling: Virtual Deliverability Manager is included for SES-sent mail on all three plans. À la carte it is $0.07 per 1,000 emails plus query fees, and the global version is $1,250 a month.
  • Engineering time: SES leaves bounce handling, suppression and alerting to you. That is a one-off build plus ongoing attention, and it rarely shows up on the invoice.

Setup: from signup to a real send

Resend

Resend sends from a domain you own, so step one is adding and verifying a domain through DNS records. Its domain documentation recommends a subdomain such as updates.example.com so your transactional reputation stays separate from your root domain. Then create an API key and call the SDK. The quickstart on the Resend Node.js docs uses Resend's onboarding sender and its delivered@resend.dev test address, so you can exercise the API before your own domain is ready, though production sending needs the verified domain. The sample below follows that quickstart and adds the idempotency option described in Resend's idempotency keys guide.

import { Resend } from 'resend';

const resend = new Resend(process.env.RESEND_API_KEY);

const { data, error } = await resend.emails.send(
  {
    from: 'Acme <onboarding@resend.dev>',
    to: ['delivered@resend.dev'],
    subject: 'Hello World',
    html: '<strong>It works!</strong>',
  },
  {
    idempotencyKey: 'welcome-user/123456789',
  },
);

if (error) {
  console.error({ error });
}

That guide says a key can be up to 256 characters, is remembered for 24 hours and makes a retried request send only once. It suggests keys shaped like welcome-user/123456789. For a B2B product this matters on invite and receipt emails, where a retry after a timeout should not email a customer twice.

Amazon SES

AWS's production access guide explains that every new account starts in a sandbox, separately for each AWS Region. In the sandbox you can only send to verified addresses and domains or to the mailbox simulator, up to 200 messages in 24 hours and 1 message per second. To leave it you submit a request in the console and acknowledge that you have a process for bounce and complaint notifications. AWS Support gives an initial response within 24 hours and may ask for more information, which takes longer. The guide adds that verifying your domain first helps the request get approved faster.

After approval you still verify every identity you send from, create credentials and call the API. The SES API v2 sample in the AWS code examples for Python (Boto3) boils down to this, shown here without the surrounding class and error handling:

import boto3

sesv2_client = boto3.client("sesv2")

response = sesv2_client.send_email(
    FromEmailAddress=from_address,
    Destination={"ToAddresses": to_addresses},
    Content={
        "Simple": {
            "Subject": {"Data": subject},
            "Body": {
                "Html": {"Data": html_body},
                "Text": {"Data": text_body},
            },
        }
    },
)
message_id = response["MessageId"]

For comparison, the same task with Resend's Python SDK, taken from the idempotency guide linked above, is shorter because the SDK is aimed at email alone:

import resend

resend.api_key = "re_xxxxxxxxx"

params: resend.Emails.SendParams = {
  "from": "Acme <onboarding@resend.dev>",
  "to": ["delivered@resend.dev"],
  "subject": "hello world",
  "html": "<p>it works!</p>"
}

resend.Emails.send(params)

Deliverability and reputation

Both services send from shared IP pools by default and both offer dedicated IPs, but they split the work differently. Resend lists pristine shared IPs, an automatic suppression list, bounce details, deliverability insights and DKIM, SPF and DMARC authentication on its pricing page, and its domain docs add DMARC, BIMI, a custom Return-Path and a choice of sending region. SES gives you the same authentication building blocks and expects you to run the rest.

AWS's dedicated IP overview is blunt about shared pools: SES controls your reputation on shared IPs, and it cannot be isolated from other senders on them. Standard dedicated IPs isolate it, but you warm them up by raising volume each day and then keep sending at a steady pace. Managed dedicated IPs warm up automatically and scale per mailbox provider. AWS says most providers only track an IP's reputation if they receive a meaningful volume from it, and suggests sending several hundred messages to each provider within a day at least once a month. At 100,000 emails a month that is rarely worth the $24.95 an IP costs; at several million it usually is.

Resend's dedicated IP is a $30 a month add-on, offered on Scale and Enterprise and aimed at senders above 3,000 emails a day. Resend says it warms the IP up, monitors it and scales it with your usage, so the work lands on its side. If your product sends both transactional and marketing mail, SES dedicated IP pools let you split them across IP groups; on Resend the equivalent is separate subdomains, as the domain docs suggest.

Virtual Deliverability Manager is the SES tool to know about. AWS includes its SES-deliverability insights on all three plans, covering delivery rates, engagement and reputation problems for mail sent through SES. The wider version, with inbox placement tests and blocklist monitoring beyond SES, is a paid add-on on Essentials and included on Pro and Enterprise.

Events, webhooks and multi-tenant sending

Resend delivers events by webhook and signs each request. Its webhook verification guide shows how to check the signing secret with the Resend SDK or with Svix libraries against the raw request body. The number of endpoints rises with the plan: 1 on Free, 5 on Pro, 10 on Scale. SES hooks into other AWS services such as SNS and CloudWatch, so how you receive bounces and complaints is something you design inside your AWS account. That is flexible for a team that already runs queues and alarms, and extra work for one that does not.

For B2B products that send on behalf of customers, the structures differ. Resend Scale allows 1,000 domains, with 100 more available for $20 a month, so each customer can get a verified domain. SES Enterprise includes Tenants, described by AWS as isolated containers that separate identities, configuration and reputation so one sender's issues do not affect others. The page lists 1,000 tenants per account per region, with extras at $0.005 a month each. If your customers' sending quality varies and you need to contain a bad actor, that isolation is the most relevant difference in this whole comparison.

Specs side by side

Area Resend Amazon SES
Entry price Free: 3,000 emails a month. Pro is $20 a month for 50,000. Essentials is $0.16 per 1,000 emails with no monthly fee. À la carte is $0.10 per 1,000.
Free tier 3,000 emails a month, capped at 100 a day, 3 domains and 30-day data retention. Eligible new AWS customers get up to $200 in credits, and the free plan lasts 6 months after account creation.
Cost at 100,000 emails a month $35 on Pro or $90 on Scale; see resend.com/pricing. $16.00 on Essentials, or $10.00 à la carte.
Overage and volume tiers Extra emails cost $0.90 per 1,000 on Pro and Scale. The pricing page has a slider up to 3,000,000+. Rates fall to $0.14 per 1,000 from 10M a month and $0.11 beyond 100M, applied marginally.
What is metered Emails against a monthly plan allowance. Each recipient of an outbound email, plus $0.12 per GB of attachment data.
Dedicated IP $30 a month add-on, offered on Scale and Enterprise to senders above 3,000 emails a day. Standard: $24.95 a month per IP. Managed: $15 a month per account plus $0.08 per 1,000 emails up to 10M.
Getting started Verify a domain, create an API key and send. Sandbox until AWS approves a production access request for each Region.
Domains 3 on Free, 10 on Pro, 1,000 on Scale. 100 more cost $20 a month. You verify each identity you send from. Tenants isolate identities and reputation on Enterprise.
Interfaces RESTful API, SMTP relay, official SDKs, batch and scheduled sending, React Email. SES API, SMTP interface and AWS SDKs for transactional and marketing email.
Events Signed webhooks. 1 endpoint on Free, 5 on Pro, 10 on Scale. Delivered through other AWS services such as SNS and CloudWatch, which you configure.
Inbound email Inbound emails are listed as a feature on the pricing page. Mail Manager routes and filters inbound mail. Email processing is $0.15 per 1,000 à la carte.
Email validation Not listed on the pricing page. $0.01 per validation by API or console. Auto Validation is $0.01 per 1,000 emails. Included on Pro and Enterprise.
Reputation isolation Separate verified domains or subdomains, up to 1,000 on Scale. Dedicated IP pools, or Tenants on Enterprise with 1,000 included per account per region.
Support and SLA Ticket support on Free, a dedicated Slack channel on Scale, and a 99.99% uptime SLA on Enterprise. The pricing page does not itemise support; Enterprise adds one annual deliverability assessment for qualifying accounts.

How the features behave in practice

Sending and setup

Topic Resend Amazon SES
Limits before you are in production The Free plan allows 100 emails a day. Paid plans have no daily limit. Sandbox: verified recipients only, 200 messages per 24 hours and 1 message per second, separately in every AWS Region.
Retry safety Idempotency keys up to 256 characters, remembered for 24 hours, sent as the Idempotency-Key header or an SDK option. SMTP uses the Resend-Idempotency-Key header. The AWS SendEmail sample shows no deduplication parameter, so plan duplicate protection in your own code.
Templates React Email components, listed on the pricing page. The SES API v2 includes CreateEmailTemplate and SendBulkEmail actions, with templates stored in your AWS account.
Bulk sending A batch endpoint, POST /emails/batch, which also accepts idempotency keys. The SendBulkEmail action in the SES API v2.

Deliverability

Topic Resend Amazon SES
Shared IP reputation Pristine shared IPs are listed on the pricing page. Controlled by SES and set at the account level, so it cannot be isolated from other senders on the shared pool.
Dedicated IP warm-up Resend warms up the IP, monitors it and scales it with your usage. Standard IPs are warmed by you with steadily rising volume. Managed IPs warm automatically and scale per mailbox provider.
Deliverability insights Deliverability insights are listed on the pricing page for its plans. Virtual Deliverability Manager insights are included on all plans. À la carte they cost $0.07 per 1,000 emails plus query fees.
Sender hygiene Automatic suppression list and bounce details are listed. The domain docs recommend sending from a subdomain. You confirm a process for bounce and complaint notifications when requesting production access.

Operations

Topic Resend Amazon SES
Webhook security Requests are signed. Verify with the Resend SDK or Svix libraries against the raw body. Events flow through services in your own AWS account, so you secure them with that service's own access controls instead of a webhook signing secret.
Regions You choose a sending region per domain. Sandbox and plan fees are per Region. Global Endpoints, included on Enterprise, spread sending across two Regions.
Data retention 30 days on Free, Pro and Scale; flexible on Enterprise. Mail Manager Archiving costs $2 per GB ingested and $0.19 per GB per month for storage and search.

Strengths and limits

Resend

  • Short SDK call and idempotency keys for safe retries.
  • Signed webhooks, with endpoint limits that rise by plan.
  • Suppression list and bounce details come with the plan.
  • Resend warms up and monitors dedicated IPs for you.
  • One verified domain per customer is possible, with up to 1,000 on Scale.

Limits

  • The $0.90 per 1,000 overage rate is far above SES rates.
  • The Free plan is capped at 100 emails a day.
  • Dedicated IPs are limited to higher-volume Scale and Enterprise senders.
  • Data retention is 30 days on every self-serve plan.

Amazon SES

  • Lowest list price per email, falling with volume.
  • Native fit with IAM, SNS, CloudWatch and other AWS services.
  • Virtual Deliverability Manager insights on every plan.
  • Mail Manager for inbound routing and Tenants for reputation isolation.
  • Email validation and managed dedicated IPs are built into Pro.

Limits

  • A sandbox and a production access request stand between you and real sending.
  • Bounce and complaint handling is built by you.
  • Pro and Enterprise fees multiply across Regions.
  • Pricing now has plans, add-ons and à la carte rates to choose between.

Four scenarios, worked through

Seed-stage product sending invites and receipts

Low volume, one engineer, no appetite for infrastructure work.

Pick Resend. Pro at $20 a month covers 50,000 emails, and the SDK call is a few lines. The saving from SES at that volume is under $15 a month, which rarely pays for the extra setup.

Platform already on AWS with high notification volume

IAM, queues and alarms already exist.

Pick Amazon SES. SES plugs into the accounts and monitoring you run, and each additional million emails costs $160 on Essentials against hundreds of dollars on Resend at its overage rate.

Multi-tenant product with customer-owned sending domains

You need to contain one customer's sending problems.

Pick Amazon SES. Tenants on SES Enterprise separate identities, configuration and reputation. Resend can give each customer a domain, but there is no equivalent isolation unit named on its pricing page.

Small team with no one to watch bounce rates

Nobody owns deliverability day to day.

Pick Resend. Resend lists an automatic suppression list and bounce details in its plans, whereas SES asks you to acknowledge and run your own bounce and complaint process.

Switching notes

From Resend to SES

Budget for the sandbox exit first, since nothing else can be tested against real recipients until it clears. Replace the SDK call, rebuild templates as plain HTML or SES templates because React Email will no longer render for you, and build bounce and complaint handling before you move traffic. Warm up new dedicated IPs or stay on the shared pool until volume justifies them. Keep Resend running in parallel for a few days so you can compare results.

From SES to Resend

Verify the sending domain in Resend (or a fresh subdomain), swap the AWS client for the Resend SDK and replace SNS event consumers with signed webhooks. Remove IAM keys and any Lambda glue once traffic has moved. Two things to check first: that your volume fits a Resend plan once overage is counted, and that nothing else in your account relies on SES inbound routing.

Pick Resend if, pick SES if

Pick Resend if

  • you want templates as React components and a short SDK
  • you send under about 100,000 emails a month
  • nobody on the team wants to own bounce and complaint plumbing
  • you want idempotent retries and signed webhooks out of the box
  • a predictable monthly bill matters more than the last dollar

Pick Amazon SES if

  • your product and credentials already live in AWS
  • you send millions of emails and per-email price dominates
  • you need per-customer reputation isolation with Tenants
  • you want inbound routing and filtering through Mail Manager
  • an engineer will own the sending pipeline long term

Both services can send marketing email, but neither replaces a CRM or a customer-success tool. If your next step is campaigns for a sales or CS team, look at our B2B email marketing guide and the B2B SaaS tool stack, then compare these two against Resend vs SendGrid, Resend vs Postmark, SendGrid vs Amazon SES or Mailgun vs Amazon SES.

Frequently asked questions

Is Amazon SES really cheaper than Resend?

Yes on list price at the documented 100,000-email point. SES Essentials costs $16.00 (100 x $0.16) against $35 on Resend Pro or $90 on Scale. A 250,000-email figure is not a published slider readout, so check resend.com/pricing rather than extrapolating it. The SES bill excludes the engineering time to handle bounces and complaints.

What is the SES sandbox and how do I leave it?

Every new SES account starts in a sandbox for each AWS Region. You can only send to verified addresses and domains, at most 200 messages per 24 hours and 1 message per second. You request production access in the console and confirm you have a process for bounce and complaint notifications. AWS Support gives an initial response within 24 hours, and verifying your domain first helps the request.

Do I need a dedicated IP with Resend or SES?

Probably not below a few hundred thousand emails a month. AWS says most mailbox providers only track an IP reputation when they receive meaningful volume from it. Resend offers a $30 a month dedicated IP to Scale customers sending more than 3,000 emails a day, while SES charges $24.95 a month per standard IP or $15 a month plus per-email fees for managed IPs.

How do webhooks and bounce events differ?

Resend posts signed webhook requests to endpoints you register, with 1 endpoint on Free, 5 on Pro and 10 on Scale. You verify them with the Resend SDK or Svix libraries. SES integrates with other AWS services such as SNS and CloudWatch, so you decide how bounce and complaint notifications reach your application.

Can I send marketing email with either service?

Both list marketing sending alongside transactional email. Resend's pricing slider has separate transactional and marketing views, and AWS describes SES as sending transactional and marketing email at scale. Neither replaces a CRM or customer-success platform, so segmenting and sequencing for sales or CS teams still needs another tool.