AiAx Mail Pricing
Site closed preview

[ pricing ]

Mailboxes are free. You pay for mail that moves.

A mailbox costs us one database row, so we do not sell them. Open a generous number on the free plan and as many as you like on the paid one. What is metered is the traffic: mail accepted, mail delivered, and bytes kept.

Every capability is on every plan, including the free one. European residency is not a line item on any of them: eu-north-1 is the only region this product has, so charging for it would be charging rent on a fact.

Billable meters
3
Self-serve paid plans
1
Capabilities behind a plan
none
Card, to start
not required

[ what is counted ]

Three meters, and they never move together.

Inbound and outbound cost us different amounts, so they are different meters with different prices. Storage is a third, because bytes kept for a year are not the same thing as bytes that arrived. No single number moves all three, which is the whole point.

  • 01 Accepted inbound
    inbound.accepted
    One accepted message durably stored against one active mailbox. An SMTP reject is not billed. Quarantined malware is not billed. A transport retry is not billed. Two of your mailboxes on the same message is two units, because it is two mailboxes worth of storing and threading.
  • 02 Delivered outbound
    outbound.delivered
    One first delivery confirmation per envelope recipient. To, Cc and Bcc all count, because each is a delivery. Retries do not, duplicate delivery events do not, and a bounce or a rejection is never billed: you are charged when a message arrived, not when it was attempted.
  • 03 Stored bytes
    storage.gb_month
    The time integral of the bytes we hold for you, divided into gigabyte-months. Replicas and indexes are ours and are not billed twice. A deleted object stops accruing when the delete commits, not at the end of the month.

[ every limit we enforce ]

Every limit we enforce is on this page. If a limit is not on this page, it is not enforced.

That is a falsifiable sentence, which is why it is here rather than a claim about being transparent. Three columns, no ticks, no matrix: nothing is gated, so a matrix would be three identical columns of nothing.

Per organisation. EUR canonical, USD list at the same numeral, never a conversion
Line Free Standard Enterprise
Price
Per month 0 39 contract, annual commit
Above the allowance hard 429, never a bill the published rate card contract
Spend cap
You set a monthly ceiling. Default is twice your plan base.
no bill path exists yours to set contract
Mailboxes and domains
Mailboxes
Not a meter and not for sale. The free figure is an anti-abuse ceiling on a free account, and there is no larger number to buy: on a paid plan the answer is not a bigger allowance, it is no allowance at all.
25 unmetered unmetered
Mailbox creation 25 / hour 250 / hour contract
Your own domains
Free receives on a real <slug>.mail.aiaxmail.com instead, on the same code path, so the domain flow is not something you first meet after paying.
0 10 contract
Domain verification attempts 3 / day 10 / day contract
Inbound
Accepted messages included 5,000 / month 25,000 / month contract
Inbound rate
A ceiling rather than a reservation. Mail arrives on shared receiving infrastructure, so this is the most we will accept from one organisation, not a rate held open for it.
at most 5 / s, 500 / day at most 25 / s contract
Accepted inbound data
A byte ceiling as well as a message ceiling, because the cap is counted in messages and the cost arrives in bytes.
2 GB / month no ceiling, bytes bill as storage contract
Outbound
Delivered recipients included 100 / month 10,000 / month contract
Outbound rate
The daily figure is a cap we enforce, and past it the send is refused with the typed 429 in section 4. The per-second figure is a ceiling rather than a reservation: Amazon meters send rate across the whole account rather than per sender, so per-second throughput is one shared pool and no organisation is promised a slice of it.
at most 1 / s, 20 / day at most 10 / s, 2,000 / day contract
Sandbox loopback sends
Real delivered, bounced and complained events through the same code, addressed to the loopback simulator. Nothing leaves our infrastructure.
unmetered unmetered unmetered
Real outbound after a human is verified after a human is verified after a human is verified
Outbound suspended above
Rolling 24 hours, over delivery outcomes rather than sends, and only once there are at least 100 of them. Nothing auto-lifts: a window empties whether or not the list was fixed.
2% bounces, 0.05% complaints 2% bounces, 0.05% complaints 2% bounces, 0.05% complaints
Message size
Maximum message, in and out
The same number in both directions, so a message you can receive is a message you can reply to with the attachment still on it.
10 MB 25 MB 40 MB by contract
Storage and retention
Included storage 3 GB 25 GB contract
Retention fixed 30 days yours, 1 day to 7 years contract
Platform
Webhook endpoints 5 25 contract
Webhook attempts at most 10 / s at most 50 / s contract
API requests at most 60 / s at most 200 / s contract
Team members 3 10 contract
Data residency eu-north-1 eu-north-1 eu-north-1
Every API capability included included included
  1. 01 An attachment is not a separate bucket. It rides inside the message, so the message size is the attachment size. There is no second allowance to run out of.
  2. 02 Quarantined and loopback bytes count. Both count against stored bytes and against accepted inbound data. A free sandbox that did not count would be an unbounded write path, and it is not one.
  3. 03 Over any free limit is a refusal, never an invoice. There is no code path by which a free organisation generates a bill. The ceiling is arithmetic rather than a policy somebody has to remember to enforce.
  4. 04 Every edge has a code and a documented fix. message_too_large, inbound_bytes_exhausted, storage_full, quota_exceeded, spend_cap_reached. Never a silent drop, in either direction.

[ at the limit ]

What happens at the limit, in literals.

A pricing page that lists allowances and not the behaviour at the edge has told you the easy half. The status code, the error code and the header names are part of the price, because they are what your agent has to branch on at three in the morning.

Rate-limit headers are contracted to ride on every response, not only the refusals, so an agent can slow down before it is told to rather than after.

The spend cap does not silence your mail. At the ceiling, sends return 429 spend_cap_reached with the reset timestamp. Inbound keeps being accepted and billed, with alerts, because dropping mail to save you money is not a saving. If you would rather it stop, enable the inbound hard stop and we return a 4.7.x temporary failure instead, so the message queues at the sender and is not lost.

The inbound rate ceilings and SMTP stop described here are not running. quota_exceeded, sending_suspended, spend_cap_reached, message_too_large, inbound_bytes_exhausted, storage_full, the monthly allowances and the RateLimit-* headers are shipped and enforced. The Free per-second and daily inbound rate ceilings and the Standard per-second inbound rate ceiling shown above are published ceilings, not running controls; this build does not enforce them. Separately, the 4.7.x temporary failure is not running: a refusal during the SMTP conversation has to be decided while the sender is still connected, and that is a receiving-side change we have not made. Until it exists, inbound mail past an enforced allowance is refused after we have taken it - recorded, with both numbers, and readable on GET /v1/usage, but not queued at the sender. There is no sign-up, so nothing here is a promise about a service you are already paying for.

at the limit
# every response, refusal or not
# illustrative values, not any plan's allowance; the table above is the number
RateLimit-Limit: 12345
RateLimit-Remaining: 12297
RateLimit-Reset: 1753920000

# POST /v1/inboxes/inb_8f2a/messages/send
# HTTP/1.1 429
{
  "error": "quota_exceeded",
  "message": "This organisation has used its outbound allowance.",
  "fix": "Wait for the window in RateLimit-Reset, or raise the cap."
}

# a limit you can act on is a limit you were given the numbers for:
# these two tell an agent whether to split the message or give up
# HTTP/1.1 400
{
  "error": "message_too_large",
  "message": "The built message is 12058221 bytes, over the limit for this account.",
  "fix": "Send a smaller message, or split it across two.",
  "details": { "limit_bytes": 10485760, "actual_bytes": 12058221 }
}

# reputation is the one refusal that does not clear by waiting,
# so it is not a 429 that every agent SDK would retry
# HTTP/1.1 403
{
  "error": "sending_suspended",
  "message": "Outbound is suspended: bounce rate 2.4% over 412 outcomes.",
  "fix": "Fix the list, then ask us to lift it. Nothing lifts on a timer."
}

[ above the allowance ]

One rate card, published, the same for every paid organisation.

Marginal steps on the volume above your allowance. There is no second plan to jump to, so there is no jump: the organisation that doubles its mail this month gets a different number on the same invoice, not a different product.

Above the included allowance. EUR canonical, USD list at the same numeral, never a conversion
Meter First 100,000 100,001 to 1,000,000 Above 1,000,000
Accepted inbound
per 1,000 messages
0.60 0.55 0.50
Delivered outbound
per 1,000 envelope recipients
0.50 0.40 0.30
Storage, stepped on stored volume, not message count. EUR canonical, USD list at the same numeral, never a conversion
Meter Up to 100 GB 100 GB to 1 TB Above 1 TB
Stored bytes
per gigabyte-month
0.35 0.28 0.20
Add-ons, per month, priced not quoted. EUR canonical, USD list at the same numeral, never a conversion
Dedicated sending IP
Warmup, reputation monitoring and the operational duty of owning it are in the price.
99 Your reputation stops being shared with anyone.
SAML and OIDC single sign-on, with SCIM
Organisation administration, not the agent API: no send, receive, webhook or domain call behaves differently with this off.
49 A signed data processing agreement with named subprocessors stays free and self-serve, because that is the line that actually blocks a purchase.

[ what yours would come to ]

Two numbers, and your invoice.

Not a slider and not three marketing bands. Type the two volumes you actually expect and read the total. It is computed in your browser from the rate card above, so if the table and this box ever disagreed, the page would say so out loud in the console.

Storage is deliberately not in here. It depends on the retention you choose and on how large your mail is, and a box that guessed at those would be selling you a number rather than showing you one.

Standard plan estimate

per month
Plan base
Inbound above allowance
Outbound above allowance
Total

EUR, or USD at the same numeral. Excludes VAT, which is added at checkout on the customer's location.

[ where free stops ]

Free stops at arithmetic, not at a conversation.

The table above is nearly all of it, because nearly every free limit has a paid counterpart and belongs in a column beside it. Two do not. They are here rather than in a terms document, because a limit you find out about later is a limit that was hidden.

  • 01 One free organisation per verified human Plus a signup rate limit per address block. A free mailbox on a real receiving domain is exactly what an address farm wants, and one organisation per person is what makes farming them uneconomic without charging the honest developer for the defence.
  • 02 Dormant organisations are reaped, on notice No API call for 90 days archives the organisation. Deletion follows 30 days after an emailed notice, so the reap is a schedule you were told about rather than a surprise. Nothing on a paid plan is reaped: you are paying for the retention you chose.

[ what the shape commits to ]

What the shape commits to

A mailbox is not a meter

Not on the free plan, not on the paid one, not at any price. Open one mailbox per customer, one per agent, one per thread if that is your design. The number never appears on an invoice, so it never has to appear in an architecture decision either.

No capability sits behind a plan

Every plan is the whole API, including the free one. Parts of that API are still being built, and what ships arrives in all three columns on the same day. Nothing you build on free breaks when you start paying, because there is nothing on the paid side that free did not have.

There is one paid plan, and a rate card above it

One plan cannot have a cliff in it. Growth changes a line on the invoice at a published rate rather than moving you onto a tier built for ten times what you need, and the Enterprise contract adds capacity and terms, never a capability.

Nothing here is purchasable yet.

AiAx Mail is in closed preview: no sign-up, no sign-in, no card. These are the numbers we intend to charge, published here so they can be checked before anyone is billed against them rather than after. EUR is canonical and the USD list carries the same numeral rather than a conversion, so neither list moves when a rate does. VAT is added at checkout on your own location.