Plans and limits
The free and paid plans of mxgate, the limits for all accounts, the API rate limits, and how to pay, cancel and get a refund.
mxgate has a free plan and one paid plan. This page has each limit as a number, and shows how the paid plan starts and ends.
The plans
| Free | Paid | |
|---|---|---|
| Domains | 1 | No limit |
| Aliases per domain | 10, plus a catch-all | No limit |
| Destinations per alias | 3 | 10 |
| Log retention | 7 days | 90 days |
| Send-as | 50 recipients a day | 3,000 recipients a month |
| CLI, MCP, DNS setup | All of it | All of it |
| Price | 0. No card. | 9 USD a month, or 79 USD a year |
The daily send count starts again at 00:00 UTC. The monthly count is for the calendar month in UTC. If you need more than 3,000 recipients a month, write to hello@mxgate.io. GET /v1/account and mxgate account show your plan, your limits and your usage.
Limits for all accounts
| Limit | Value |
|---|---|
| Size of one message | 25 MB |
| Delivery tries | 2 days, then the message is expired |
| Recipients of one message from the send API | 50: To, Cc and Bcc together |
| SMTP logins per domain | 5 |
| Body of one API call | 64 KB |
Rate limits of the API
| Calls | Limit | Counted for |
|---|---|---|
| Signup, key recovery, recovery confirm, web sign-in, sign-in confirm | 10 calls, then 1 more each 6 minutes. Each of the five has its own count. | One IP address |
| Accounts made | 3 a day | One IP address |
| Changes: add a domain, set an alias, make an SMTP login, change notifications, rotate the key, get a payment or billing link | 60 calls, then 1 more each second | One account |
POST /v1/send | 60 calls, then 1 more each second | One account |
| DNS checks and webhook tests, together | 20 calls, then 1 more each 30 seconds | One account |
| Confirmation mails to destinations | 10 a day | One account |
A call above a limit is 429 rate_limited. The answer has retry_after_seconds: wait that long, then try again.
Get the paid plan
$ npx mxgate upgrade
Paid plan, 9 USD a month. A person opens this link and pays:
https://...
The link works for 24 hours. The plan is on about a minute after the payment: mxgate accountmxgate upgrade --yearly gives a link for 79 USD a year. The MCP tool is upgrade_plan. The API call is POST /v1/billing/checkout with {"interval":"month"} or {"interval":"year"}. The answer is {url, interval, price_usd, message}.
The link is a Stripe payment page that works for 24 hours. A person opens it and pays by card. An agent cannot pay. The plan is on about a minute after the payment, and you get an email.
Card, invoices, cancel
npx mxgate billingmxgate billing, the tool billing_portal and POST /v1/billing/portal return a link to a Stripe page. There a person changes the card, changes between monthly and yearly, gets invoices, or cancels. The link works for a short time. An account that never opened a payment page gets 409 no_subscription.
billing in GET /v1/account shows the state of the subscription: status, interval, current_period_end and cancels_at_period_end.
Cancel
You can cancel at any time. The plan stays on until the end of the period that is paid for.
A renewal that fails
The plan renews at the end of each period. If the payment fails, you get an email and Stripe tries the card again in the next days. The plan stays on during that time. If the payment continues to fail, the plan ends.
When the plan ends
The account is on the free plan again. Nothing is removed, and mail for your domains is still forwarded. You cannot add domains or aliases above the free limits. Send-as has the free limit, and the log keeps 7 days.
Refund
If you write to hello@mxgate.io in the 14 days after a payment, you get that payment back, and the plan ends then. See the terms.
The plan_limit error
A call that goes above a limit of your plan answers 402:
{
"error": "plan_limit",
"message": "The free plan has 1 domain",
"fix": "Remove a domain, or get the paid plan: POST /v1/billing/checkout returns a payment link for a person (CLI: mxgate upgrade): it has no domain limit.",
"upgrade_url": "https://mxgate.io/#pricing"
}The error occurs for one domain too many, one alias too many, too many destinations for an alias, and a message above the send limit. fix gives the two solutions: use less, or get the paid plan. For the daily send limit, fix also says to wait until 00:00 UTC. For the monthly send limit of the paid plan, fix says to write to hello@mxgate.io.
An agent must ask the person before it opens a payment link. See Errors.