The short answer
- Under 3,000 a month and 100 a day: Resend's free plan, which doesn't expire. resend.com
- At 50,000 a month: $5/mo on Amazon SES, $19.95/mo on SendGrid, $20/mo on Resend. aws.amazon.com
- Amazon SES is the cheapest per email in the catalog at $0.10 per 1,000 with no minimum, but new AWS accounts get credits, not an always-free SES allowance. aws.amazon.com
- SendGrid's free option is a 60-day trial, and Postmark's free Developer plan is 100 emails a month. twilio.com
The economics
The cheapest published plan for each provider at each volume, including published overage, from each vendor's pricing page.
Monthly cost by volume
| Emails a month | 3,000 | 10,000 | 50,000 | 100,000 | 300,000 |
|---|---|---|---|---|---|
| Resend | $0Free, 100/day cap | $20Pro | $20Pro | $35Pro 100k | $215Pro 100k, plus overage |
| SendGrid (Twilio) | $19.95Essentials | $19.95Essentials | $19.95Essentials | $34.95Essentials 100k | $214.95Essentials 100k, plus overage |
| Postmark | $15Basic | $15Basic | $66Platform, plus overage | $126Platform, plus overage | $366Platform, plus overage |
| Mailgun | $0Free, 100/day cap | $15Basic | $35Foundation | $90Scale | $310Scale, plus overage |
| Amazon SESattachments extra | $0.30Pay as you go | $1Pay as you go | $5Pay as you go | $10Pay as you go | $30Pay as you go |
- Postmark's page shows only its 10,000-email step, so above that the catalog prices extra emails at the published overage; check its slider for volume tiers. postmarkapp.com
What the free tiers really are
Pick by situation
- Before launch or a side project: Resend Free, 3,000 emails/mo, 100 emails/day, 3 domains, 30-day data retention; no pay-as-you-go on Free. resend.com
- Launched, under 50,000 a month: a flat plan is simplest. Resend Pro at $20/mo and SendGrid Essentials at $19.95/mo both include 50,000. resend.com
- Volume first, cost first: Amazon SES a la carte, $0.10 per 1,000 emails plus $0.12 per GB of attachments, with no minimum fee. aws.amazon.com
- Sending for many customer domains: Resend Scale includes 1,000 sending domains. resend.com
A real workflow: ask your agent
- Ask your agent to price the job at your real volume. choose_stack returns, per provider, the cheapest published tier that covers your number, with a link to the pricing page, and asks for any number it doesn't have. stackcut.io
choose_stack({"project": "B2B SaaS app", "needs": [
{"job": "email_transactional",
"volume": {"amount": 40000, "unit": "emails_per_month"}}]})- A plan counts as a fit only when its published limit covers your number; trials and one-time credits never count as free. stackcut.io
Fit
A good fit if
Questions
Is Resend's free plan enough for a startup?
Until you pass 3,000 emails a month or 100 in a day. Free has no pay-as-you-go, so plan the upgrade before launch day. resend.com
Which free plans are really free?
Resend's is an ongoing free plan: 3,000 emails/mo, 100 emails/day, 3 domains, 30-day data retention; no pay-as-you-go on Free. resend.com
Mailgun's free plan allows 100 emails a day. mailgun.com
Postmark's Developer plan is 100 emails a month. postmarkapp.com
SendGrid's is a 60-day trial. twilio.com
Amazon SES gives new AWS accounts credits instead of a free allowance. aws.amazon.com
What does SES cost at 300,000 emails a month?
$30/mo, before attachments, at the a la carte rate of $0.10 per 1,000. aws.amazon.com
How do I switch providers without losing mail?
Add the new provider's DNS records for your sending domain first, switch the API key in your app, watch a day of sends, then cancel the old plan. recipe
Next steps
Check your own stack
Get your free stack audit
Stackcut finds every software subscription in your inbox and shows what to cancel, what to pay per use, and what AI can replace, with a spec and a cost for each. Your stack audit is free and takes about 2 minutes.
Or ask your agent
Connect the Stackcut MCP server (https://stackcut.io/mcp, no API key) and ask: “We send about 40,000 transactional emails a month. What's the cheapest provider that fits?”
choose_stack({"project": "B2B SaaS app", "needs": [
{"job": "email_transactional",
"volume": {"amount": 40000, "unit": "emails_per_month"}}]})