Transactional email from your own domain, at €0.30 per 1,000.
Receipts, sign-in links, invoices and notices from your app. A project, a verified domain, a key and one POST. Delivery, bounces and spam reports come back as events and signed webhooks.
Set up in minutes
Everything below can be done in the browser or over the API. Nothing needs us.
Create a project
A project is an app. Its keys, domains, webhooks and send log stay apart from your other projects.
Add your domain
PineMail shows the DNS records: DKIM, SPF, a MAIL FROM host and DMARC. On Cloudflare, send a token once and the records are published for you. The check runs by itself every two minutes, and you get a notice when the domain is verified. To try first, send right away from your @pinemail.app address.
Make a sending key
A sending key can only send, and only from the domain and addresses you choose. If it leaks, that is all it can do.
POST /v1/emails
Bearer token, JSON, an optional Idempotency-Key. 202 means queued. Then watch the send log, or let your app hear each delivery through a webhook.
What it costs
€0.30 per 1,000 recipients and €1 a month for the account, whatever the volume. No plan to pick, no step where the price jumps.
| Recipients a month | A month, including VAT |
|---|---|
| 3,000 | €1.90 |
| 20,000 | €7.00 |
| 50,000 | €16.00 |
| 100,000 | €31.00 |
| 500,000 | €151.00 |
| 1,000,000 | €301.00 |
A developer with 5 apps on 5 domains, sending 2,000 emails a month between them, pays €1.60 a month.
- A free account sends to 100 recipients a month through the API, from one domain of your own.
- Pay as you go has no monthly ceiling: you pay per 1,000 recipients. Sending is held to a pace per minute, and is paused when too much of it bounces or is reported as spam.
- Domains cost nothing extra: one app per domain, or one domain per customer, up to 50 on pay as you go.
- Card payment is not open yet, so pay as you go is not sold today. A free account works now, and these are the prices it moves to.
In the price, on every account
There is one price per 1,000 recipients. What else an app needs is not a plan or an add-on.
Up to 50 domains
One domain per app, or one per customer. No extra cost on pay as you go; a free account has one.
Receiving as well
Real mailboxes on the same domains, read in the browser, in Apple Mail or Outlook, or over the API. No fee per mailbox.
Templates, scheduling and batches
Saved templates with variables, sends scheduled up to 30 days ahead, up to 100 emails in one call, and attachments up to 30 MB.
Webhooks without a cap
As many endpoints as you need, signed, and retried for about 17 hours when your app is down. Failed events can be sent again.
A suppression list that keeps itself
A hard bounce or a spam report stops further sends to that address, for the whole project. You can list it, add to it and take addresses off.
An agent can send too
The same API is an MCP server: an AI agent sends, reads the log and checks domains with a key you give it, and nothing more.
What you see
Every email in the log with its outcome, and templates you write once and fill in when you send.




How it gets delivered
No mail service can promise the inbox. What PineMail does is the part that is in our hands.
Through Amazon SES in Stockholm
PineMail queues the message and hands it to Amazon SES, which sends from its own reputation-managed pools. Your app never talks to AWS.
Signed and aligned
Every message is DKIM-signed for your domain, the envelope sender is on a MAIL FROM host of yours so SPF aligns, and PineMail gives you a DMARC record to publish.
You see what happened
Each message shows queued, sent, delivered, bounced or reported as spam, in the send log and as email.delivered, email.bounced and email.complained webhooks.
Limits that protect the sender
Send limits are per account and per month, and a mailbox can get a daily cap of its own. One spammer cannot spend the reputation everyone sends under.
Keys that can only send
A sending key is locked to one domain, and to listed addresses if you want. The key in your app cannot read mail or change your account.
Content stays in Sweden and Finland
Message content is stored on our servers in Finland and Sweden; Amazon SES in Stockholm handles it to send it. The data processing agreement and the list of sub-processors are public.
Everything over the API
What you can do in the browser you can do with a key, from a script or a deploy pipeline.
- Send one email or up to 100 in a call, now or scheduled, and move or cancel a scheduled one
- Templates with variables and a version history, written in the browser or over the API, and attachments
- SMTP for apps that cannot call an API, with a key as the password, and an SDK for JavaScript and TypeScript
- Domains: add, read the DNS records, verify, and publish the records to Cloudflare
- Senders and mailboxes on a domain
- Sending keys locked to a domain or an address, and full project keys; rename and narrow a key without changing it in your app
- Webhooks with signatures, a test call, the delivery history, and failed events sent again
- The suppression list, and the send log, message by message
Your first email in a few minutes.
A free account sends from your @pinemail.app address at once, and from your own domain when the records are in place.