Billing & Plans
Zyphr offers five plans designed to scale with your needs — from a free tier for getting started to enterprise plans for large-scale deployments. Manage your subscription, payment methods, and invoices through the Dashboard or the API.
Plans Overview
| Feature | Free | Starter | Pro | Scale | Enterprise |
|---|---|---|---|---|---|
| Emails/mo | 1,000 | 25,000 | 100,000 | 500,000 | Custom |
| Push/mo | 1,000 | 25,000 | 100,000 | 500,000 | Custom |
| SMS/mo | 100 | 1,000 | 5,000 | 25,000 | Custom |
| Auth events/mo | 500 | 5,000 | 25,000 | 100,000 | Custom |
| MAU | 500 | 2,500 | 10,000 | 50,000 | Custom |
| Webhooks | 2 | 10 | 50 | Unlimited | Unlimited |
| Digest configs | 2 | 10 | 50 | Unlimited | Unlimited |
| Cohorts | 3 | 10 | 50 | Unlimited | Unlimited |
| Scheduled sending | - | Yes | Yes | Yes | Yes |
| Chat integrations | - | Yes | Yes | Yes | Yes |
| Priority support | - | - | Yes | Yes | Yes |
| Custom contracts | - | - | - | - | Yes |
Getting Your Current Plan
List Available Plans
curl https://api.zyphr.dev/v1/billing/plans \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Get Active Subscription
curl https://api.zyphr.dev/v1/billing/subscription \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Response
{
"data": {
"plan": "pro",
"status": "active",
"current_period_start": "2026-02-01T00:00:00Z",
"current_period_end": "2026-02-28T23:59:59Z",
"cancel_at_period_end": false
}
}
Subscribing & Changing Plans
Subscribe to a Plan
curl -X POST https://api.zyphr.dev/v1/billing/subscription \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"plan": "pro",
"payment_method_id": "pm_abc123"
}'
Preview a Plan Change
Before committing to a plan change, preview the prorated invoice:
curl https://api.zyphr.dev/v1/billing/subscription/preview \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Update Subscription
Change plans (upgrade or downgrade):
curl -X PATCH https://api.zyphr.dev/v1/billing/subscription \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"plan": "scale"
}'
- Upgrades take effect immediately with prorated charges
- Downgrades take effect at the end of the current billing period
Cancel Subscription
curl -X DELETE https://api.zyphr.dev/v1/billing/subscription \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
The subscription remains active until the end of the current billing period, then reverts to the Free plan.
Reactivate a Cancelled Subscription
If you cancelled but your period hasn't ended yet:
curl -X POST https://api.zyphr.dev/v1/billing/subscription/reactivate \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Payment Methods
List Payment Methods
curl https://api.zyphr.dev/v1/billing/payment-methods \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Add a Payment Method
curl -X POST https://api.zyphr.dev/v1/billing/payment-methods \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"stripe_token": "tok_visa"
}'
Payment methods are managed through Stripe. Use Stripe.js or Stripe Elements on your frontend to collect card details securely and obtain a token.
Set Default Payment Method
curl -X POST https://api.zyphr.dev/v1/billing/payment-methods/PM_ID/default \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Remove a Payment Method
curl -X DELETE https://api.zyphr.dev/v1/billing/payment-methods/PM_ID \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
You cannot remove your default payment method while you have an active paid subscription. Set a different payment method as default first, or cancel your subscription.
Invoice History
View past invoices and payment history:
curl https://api.zyphr.dev/v1/billing/history \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Response
{
"data": {
"invoices": [
{
"id": "inv_abc123",
"amount": 9900,
"currency": "usd",
"status": "paid",
"period_start": "2026-01-01T00:00:00Z",
"period_end": "2026-01-31T23:59:59Z",
"pdf_url": "https://pay.stripe.com/invoice/..."
}
]
}
}
Stripe Billing Portal
For full billing management (update cards, view all invoices, manage subscriptions), redirect users to the Stripe billing portal:
curl -X POST https://api.zyphr.dev/v1/billing/portal-session \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Returns a url that redirects the user to Stripe's hosted billing portal. The session is valid for a limited time.
const { url } = await zyphr.billing.createPortalSession();
window.location.href = url;
Overage Billing
When you exceed your plan's included volume, overage charges apply:
| Metric | Overage Rate |
|---|---|
| Emails | $1.00 per 1,000 |
| Push | $0.50 per 1,000 |
| SMS | $0.05 per message |
| Auth events | $0.01 per event |
| MAU | $0.02 per user |
Overage charges are calculated at the end of each billing period and added to your next invoice. See Usage & Analytics to monitor your usage and set up alerts.
Dashboard Management
From the Billing section in the Dashboard:
- Plan overview - See your current plan and included limits
- Usage meters - Visual progress bars for each metric
- Upgrade/downgrade - Change plans with invoice preview
- Payment methods - Add, remove, or set default payment cards
- Invoice history - View and download past invoices
- Stripe portal - Link to full Stripe billing management
API Reference
| Method | Endpoint | Description |
|---|---|---|
GET | /v1/billing/plans | List available plans |
GET | /v1/billing/subscription | Get active subscription |
POST | /v1/billing/subscription | Create subscription |
PATCH | /v1/billing/subscription | Update subscription |
DELETE | /v1/billing/subscription | Cancel subscription |
POST | /v1/billing/subscription/reactivate | Reactivate subscription |
GET | /v1/billing/subscription/preview | Preview invoice |
GET | /v1/billing/payment-methods | List payment methods |
POST | /v1/billing/payment-methods | Add payment method |
GET | /v1/billing/payment-methods/:id | Get payment method |
DELETE | /v1/billing/payment-methods/:id | Remove payment method |
POST | /v1/billing/payment-methods/:id/default | Set default |
GET | /v1/billing/history | Invoice history |
POST | /v1/billing/portal-session | Create Stripe portal session |
Next Steps
- Usage & Analytics - Monitor your usage and set up alerts
- Workspace Settings - Configure workspace-level settings
- Rate Limiting - Understand API rate limits by plan