Misar Docs
MisarMailMisar.BlogMisarReachMisarPostMisar.DevMisar PlatformMisar IdentityMisar Posts API
Api Reference

Billing

Subscription management, plan details, Stripe checkout, and customer portal

Billing endpoints manage subscriptions, Stripe checkout sessions, and customer portal access. All payments are processed through Misar AI Technology Pvt. Ltd. via Stripe.

Billing endpoints use session authentication (dashboard cookie), not API key auth. They are intended for use in the MisarMail dashboard UI.


Plans

PlanPriceDescription
free$0 / moGetting started — 1,000 emails/mo
pro$24.99 / moGrowing teams — 25,000 emails/mo
max$99.99 / moHigh-volume senders — 100,000 emails/mo
enterpriseCustomUnlimited — contact sales

See Plan Limits for the full feature matrix.


Get subscription

GET/mail/billing/subscription

Returns the current subscription state, plan limits, usage, and trial status. null in limits means unlimited. trial_ends_at is a UTC timestamp during the 14-day trial; null after trial ends or on paid plans.

Response fields

successboolean

true when the request succeeded.

subscriptionobject

Plan state: plan, status, trial_ends_at, current_period, cancel_at_period_end, overage_enabled.

limitsobject

Plan limits: emails_per_month, contacts, campaigns_per_month, templates, automations, custom_domains, dedicated_ips. null means unlimited.

usageobject

Current-period usage: emails_sent, contacts, campaigns.

curl https://api.misar.io/mail/billing/subscription \
  -H "Cookie: sb-access-token=YOUR_SESSION"
{
  "success": true,
  "subscription": {
    "plan":           "pro",
    "status":         "active",
    "trial_ends_at":  null,
    "current_period": {
      "start": "2026-04-01T00:00:00Z",
      "end":   "2026-04-30T23:59:59Z"
    },
    "cancel_at_period_end": false,
    "overage_enabled": false
  },
  "limits": {
    "emails_per_month":       25000,
    "contacts":               10000,
    "campaigns_per_month":    null,
    "templates":              null,
    "automations":            10,
    "custom_domains":         3,
    "dedicated_ips":          0
  },
  "usage": {
    "emails_sent":        4218,
    "contacts":           3102,
    "campaigns":          7
  }
}

Subscription status values

StatusMeaning
trialingFree trial active
activePaid subscription current
past_duePayment failed — grace period active
canceledSubscription ended
pausedManually paused via portal

Create checkout session

POST/mail/billing/checkout

Create a Stripe Checkout session for upgrading or subscribing to a plan. Returns a redirect URL. Redirect the user to checkout_url. Stripe handles payment collection and returns the user to success_url on completion.

Request body

planstringbodyrequired

pro, max, or enterprise.

success_urlstringbody

Redirect after successful payment.

cancel_urlstringbody

Redirect if user cancels checkout.

Response fields

successboolean

true when the session was created.

checkout_urlstring

Stripe Checkout URL to redirect the user to.

curl -X POST https://api.misar.io/mail/billing/checkout \
  -H "Cookie: sb-access-token=YOUR_SESSION" \
  -H "Content-Type: application/json" \
  -d '{
    "plan":         "pro",
    "success_url":  "https://mail.misar.io/settings/billing?upgraded=1",
    "cancel_url":   "https://mail.misar.io/pricing"
  }'
{
  "success":      true,
  "checkout_url": "https://checkout.stripe.com/c/pay/cs_live_..."
}

Create portal session

POST/mail/billing/portal

Create a Stripe Customer Portal session for managing the subscription (cancel, update card, view invoices).

Request body

return_urlstringbody

Where to redirect after leaving the portal.

Response fields

successboolean

true when the session was created.

portal_urlstring

Stripe Customer Portal URL.

curl -X POST https://api.misar.io/mail/billing/portal \
  -H "Cookie: sb-access-token=YOUR_SESSION" \
  -H "Content-Type: application/json" \
  -d '{ "return_url": "https://mail.misar.io/settings/billing" }'
{
  "success":    true,
  "portal_url": "https://billing.stripe.com/session/..."
}

Portal URLs expire after 5 minutes. Generate a fresh URL each time a user navigates to billing settings — do not cache them.