One bill, isolated tenants

Give each client or product its own account. Own domains, own API keys, own suppression list, while quota comes from one shared pool you control.

A tenant is an account

Each sub-account is a real account: its own credentials, domains, keys, and reputation surface. One client’s bad list cannot poison another’s deliverability. Depth is capped at one level. Sub-accounts inherit the parent plan and cannot spawn their own children, which keeps the hierarchy auditable.

curl -X POST https://api.euromail.dev/v1/accounts \
  -H "X-EuroMail-Api-Key: em_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Client A",
    "email": "[email protected]",
    "monthly_quota": 5000
  }'

One pool, allocated precisely

The parent’s monthly quota is the pool; each sub-account gets an explicit allocation from it. Over-allocating returns a 422 instead of overselling, allocation changes are row-locked against races, and deleting a sub-account returns its quota instantly. Aggregate analytics across all tenants stay root-only.

Plans
Business (10) · Scale (25) · Enterprise (unlimited)
Depth
One level, by design
Over-allocation
Rejected with 422
Aggregate analytics
Root account only