Subscription
Prelay Cloud's plans differ only in amount: devices, notifications per month, and team seats. Zero-knowledge encryption and every feature are on every plan, and switching plans never rewrites your integration (same app, same API, same email-domain-keyed identities).
| Plan | Devices | Notifications / month | Seats |
|---|---|---|---|
| Solo | 2 | 300 | 1 |
| Pro | 15 | 30k | 3 |
| Team | 50 | 150k | 8 |
Prices may change as the product grows, and any change is communicated upfront and clearly: you always see the real price before it applies, and existing subscriptions keep their terms until you renew.
Seats count the owner plus invited members; notifications are per calendar month, never backbilled.
Trial
Every new account starts on a 14-day Pro trial with no card required; the trial state, the plan's device and message limits, and the API shape are exactly the real thing.
When the trial window ends: notification sending pauses until you subscribe
(the API answers with 402 payment_required until then). Existing tokens and
devices stay configured, so subscribing resumes sending immediately.
Choosing and changing plans
Plan selection, changes, and cancellation happen in the dashboard under Billing:
- monthly or annual billing, chosen at checkout
- upgrade applies immediately (limit types lift right after)
- downgrade takes effect at the end of the paid period
- cancelling keeps sending until the period is paid out
- invoices and payment method are managed by Stripe's billing portal
Annual billing turns on the annual discount; the exact figure is computed from the live Stripe catalog at checkout, so the dashboard is never wrong on price.
The landing page's pricing table shows the same catalog. If the two ever disagree, the landing page is the source of truth: it is rendered from the billing API's live prices.
Requests past a plan's monthly volume or device count return
429 plan_limit_reached. Nothing is silently dropped: the sender sees the
failure at the request itself and can retry when a seat or quota is freed.