fairlane.systems

AMAZON SES · TECH STACK

Amazon SES: USD 0.10 per 1,000 mails, EU regions incl. Zurich

AWS Simple Email Service is the price winner for sending APIs. USD 0.10 per 1,000 mails, EU regions Frankfurt/Ireland/Zurich, no dashboard out of the box, integrated with the AWS stack.

Researched & fact-checked by: · As of: 2026-05

What is Amazon SES?

Amazon SES (Simple Email Service) is the AWS mail sending service, in production since 2011. Unlike Postmark or Brevo, SES deliberately offers no dashboards, no marketing tooling, no built-in templates -- the platform delivers an HTTPS API and SMTP endpoints, everything else is the user responsibility. The price advantage flows from this consistently: USD 0.10 per 1,000 sent mails, plus USD 0.12 per GB attachment data. At 100,000 mails per month that is USD 10 -- 5-15x cheaper than the specialists.

As of May 2026, SES is available in 17 AWS regions, of which relevant for Swiss setups: `eu-central-1` (Frankfurt), `eu-west-1` (Ireland), `eu-west-3` (Paris), and since 2025 `eu-central-2` (Zurich). The last is the only AWS region in Switzerland, which makes SES interesting for Swiss fiduciary setups -- data never leaves Swiss territory. AWS offers an own API endpoint per region (`email.eu-central-2.amazonaws.com` for Zurich), and the sender domain must be verified separately in each region.

Pricing is linear: USD 0.10 per 1,000 outgoing mails (incl. bounce processing). Inbound mails cost USD 0.10 per 1,000 receive operations plus USD 0.09 per 1,000 successfully processed chunks. Dedicated IP: USD 24.95/month (one), USD 100 for a "Dedicated IP Pool" setup. No free tier since 2024, but AWS Free Tier includes 200 SES mails per day for EC2/Lambda users in the first year.

The real strength of SES is integration with the AWS stack: sending from Lambda functions, bounce notifications via SNS topic, logs in CloudWatch, IAM roles instead of API keys. Whoever uses AWS anyway has SES as "one line of Boto3" ready. Whoever does not use AWS has 1-2 days of setup ahead.

Why it matters for Swiss SMEs

SES has three specific advantages for Swiss setups that grew strongly since 2025: the Zurich region, the price-per-mail at high volume, and the Swiss data-processing clauses.

Zurich region eu-central-2 was activated for SES in November 2025. Client data in mail bodies stays on Swiss soil, the data-flow path is documentable for revFADP and revDSG without third-country transfer. SES thereby meets the same compliance corridor as Infomaniak, but with AWS tooling around it (Lambda, CloudWatch, KMS encryption).

Price at volume: A Swiss client platform with 500,000 mails per month (audit reports to clients, login codes, dunning waves) pays USD 50/month on SES. On Brevo Business: EUR 49 for 100k, then linear up -- 500k mails lands around EUR 250+/month. On Mailgun Scale: USD 600 for 1M. On Postmark: about USD 625 for 500k. SES is 5-12x cheaper here.

Swiss DPA via AWS Switzerland AG: AWS offers local Swiss contract partners with delivery address Zurich since 2024. The DPA can be concluded under Swiss law, which is a clear advantage for law firms with professional secrecy and fiduciaries with Art. 321 SCC duties. AWS CloudHSM in eu-central-2 allows keeping key material in Switzerland.

The trade-off: SES comes without UI. Whoever has no DevOps team or no Lambda programmer should not choose the tool. Bounce handling, reputation monitoring, DKIM generation, and stats tracking are all there -- but as SDK calls, not click UI. Whoever invests 1-2 days of setup has afterwards an extremely scalable mail system.

How it works

SES exposes three send paths: HTTPS API, SMTP endpoint, and AWS SDKs (Python Boto3, Node.js AWS-SDK v3, Go, Java, .NET).

HTTPS API: Endpoint `https://email.eu-central-2.amazonaws.com` (Zurich region), AWS Signature Version 4 as authentication. Practically always called via SDK, not raw.

Node.js with AWS-SDK v3:

``` import { SESv2Client, SendEmailCommand } from "@aws-sdk/client-sesv2";

const client = new SESv2Client({ region: "eu-central-2" });

await client.send(new SendEmailCommand({ FromEmailAddress: "invoice@firm-müller.ch", Destination: { ToAddresses: ["[email protected]"] }, Content: { Simple: { Subject: { Data: "Dunning No. 2 - Invoice 2026-104" }, Body: { Text: { Data: "Dear Mrs Berger, ..." } }, }, }, ConfigurationSetName: "firm-prod", })); ```

SMTP endpoint: Host `email-smtp.eu-central-2.amazonaws.com`, port 587 STARTTLS. User/pass are generated via the SES console from IAM credentials (SMTP username is not the IAM user directly -- there is a conversion function `STSCreatedSmtpCredentials`).

DNS setup: SES requires three DNS records per sender domain: DKIM (three CNAME records, generated by SES with random selectors), SPF (TXT `v=spf1 include:amazonses.com -all`), and a MAIL FROM custom subdomain (e.g. `mail.firm.ch` with MX and SPF). DMARC remains the domain owner responsibility. Domain must be verified separately in each AWS region.

Bounce and complaint handling via SNS: SES sends bounce and complaint notifications to an SNS topic. A Lambda subscriber reads it, writes to a DynamoDB table (suppression list) and excludes the address on next send. Alternative: SES offers an "Account-level Suppression List" since 2023 that does this automatically -- recommended over own Lambda.

Sandbox mode: New accounts start in sandbox with 200 mails/day and sending only to verified recipient addresses. Request production mode with use-case description (mail content, volume, bounce plan) -- AWS Support replies in 12-24h. Without production mode, mails to unknown addresses simply error out.

Monitoring: Configuration Sets enable event logging per send operation. Events (delivered, bounce, complaint, click, open, reject) flow to SNS, Kinesis Firehose, CloudWatch or Pinpoint. Practice: Firehose to S3, then Athena queries for statistics -- cheap and scalable.

Amazon SES setup in 5 steps

  1. 01Set up AWS account, open SES in region eu-central-2 (Zurich) or eu-central-1 (Frankfurt), add sender domain.
  2. 02Copy three DKIM CNAME records from SES and set in Cloudflare as DNS-only, plus SPF TXT and custom MAIL FROM subdomain.
  3. 03Request production mode via AWS Support ticket -- use-case description, volume, bounce plan, ~24h waiting time.
  4. 04Create IAM user with `AmazonSesSendingAccess` policy, generate access keys, store in .env (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY).
  5. 05Create configuration set with Firehose logging to S3, activate account-level suppression, then test SDK sending.

When SES fits

SES is the right choice when (a) the application already uses AWS (EC2, Lambda, S3 in EU region), (b) volume exceeds 100,000 mails per month and price-per-mail matters, or (c) Swiss data residency is required and AWS tooling makes sense in parallel (Zurich region eu-central-2).

Concrete cases: A platform with Lambda backend that sends order confirmations -- mail sending is one Boto3 call. A fiduciary platform with 500,000 client mails per month pays USD 50 instead of EUR 250+. A healthcare setup with AWS HIPAA compliance needs SES integrated with IAM roles and KMS rather than separate mail-provider passwords.

For Swiss setups: verify the domain in `eu-central-2`, create a configuration set with Firehose logging, activate account-level suppression. Before production: open a production-mode ticket, otherwise it stays at 200/day.

When not to use

SES is the wrong choice when (a) the team lacks AWS know-how -- onboarding without IAM understanding is painful, (b) a dashboard for non-techies is needed (marketing, support) -- SES has none, or (c) volume is below 30,000 mails per month -- there Brevo, Postmark or Mailjet are simpler and barely more expensive.

More pitfalls: staying in sandbox mode and not understanding why mails to unknown addresses fail -- forgetting the production-mode ticket. Not setting all three DKIM CNAME records -- SES requires all three. Verifying the domain in one region, then sending in another -- domain must be verified per region. Bounce rate above 5 percent or complaint rate above 0.1 percent -- AWS pauses the account silently. Ignoring the suppression list -- repeated sends to known bounces lead to suspend.

Trade-offs

STRENGTHS

  • Extremely cheap: USD 0.10 per 1,000 mails
  • Zurich region eu-central-2 for pure Swiss hosting
  • Native AWS integration (IAM, Lambda, KMS, CloudWatch)
  • Scales to millions of mails per month

WEAKNESSES

  • No dashboard out of the box, much self-effort
  • Sandbox mode at signup, production ticket needed
  • Verify domain separately per region
  • Steep learning curve without AWS know-how

FAQ

What does SES cost at 100k mails per month?

USD 10 for sending (100 times USD 0.10 per 1,000), plus attachment data volume (USD 0.12/GB). With Lambda-based sending: ~USD 0.20 extra for Lambda invocations. Total: ~USD 11-15/month. Comparison: Brevo Business EUR 49, Postmark ~USD 100, Mailgun Growth USD 90.

Which region to choose -- Zurich or Frankfurt?

Zurich (eu-central-2) for Swiss fiduciary or law clients with professional secrecy: data does not leave Switzerland. Frankfurt (eu-central-1) for broader workloads, slightly cheaper and more AWS services available. Both revFADP-compliant. Tip: Zurich for compliance-critical workloads, Frankfurt for purely technical workloads without client reference.

How to unlock sandbox mode?

AWS Support Center > Create case > Service Limit Increase > SES Sending Limits. Describe the use case (e.g. "Transactional notifications for fiduciary platform, ~10k mails/month, double opt-in, hard-bounce suppression via account-level list"). AWS usually replies within 24h, sometimes asks follow-up questions. Sloppy writing (no bounce strategy mentioned) leads to extensions.

SES vs Postmark for a fiduciary platform?

Postmark: highest deliverability (99 percent), clear dashboards, US hosting, EUR 15 for 10k. SES: same region as server (Zurich), cheaper at volume, more self-effort, USD 1 for 10k. If AWS stack already in place and 10k+/month: SES. If no DevOps and max deliverability needed: Postmark plus TIA.

Related topics

BREVO · TECH STACKBrevo SMTP: transactional email from EU hosting for SME appsSMTP COMPARISON · TOOL COMPARISONTransactional email services compared: Brevo, Postmark, Mailgun, SES, SendGrid, Resend, Mailjet, Infomaniak, SMTP2GOPOSTMARK · TECH STACKPostmark: highest deliverability for transactional emails from the USAMAILGUN · TECH STACKMailgun: API-strong sending with EU region Frankfurt for developer teamsHETZNER · TECHHetzner as EU hosting for Swiss fiduciaries and SMEs: data centres, contracts, costrevDSG · COMPLIANCErevDSG / revFADP and AI: what the revised Swiss Data Protection Act means for LLM usen8n · SERVICEn8n Workflow Automation: routine out, minds free

Sources

  1. Amazon SES Pricing (USD 0.10/1000) · 2026-05
  2. AWS Region Zurich (eu-central-2) Services · 2026-04
  3. AWS SES Developer Guide -- Sandbox to Production · 2026-03
  4. AWS SES v2 SDK Node.js Reference · 2026-05

FITS YOUR STACK?

What this looks like in your business – a 30-minute intro call.

Book a call