Sendr Docs
API Reference

Billing

Query plan information and usage via the API.

Get current plan

GET /v1/billing/plan

Requires read_only scope.

Response

{
  "plan": "pro",
  "billing_period": "monthly",
  "emails_per_month": 50000,
  "emails_per_day": 0,
  "overage_per_thousand": 0.50,
  "max_overage_emails": 150000,
  "features": {
    "blocklist_monitoring": true,
    "reputation_tracking": true,
    "bimi_support": true,
    "deliverability_reports": true,
    "analytics_export": true,
    "analytics_benchmarks": true
  }
}

Get usage

GET /v1/billing/usage

Requires read_only scope.

Response

{
  "period_start": "2025-03-01T00:00:00Z",
  "period_end": "2025-04-01T00:00:00Z",
  "emails_sent": 12500,
  "emails_limit": 50000,
  "emails_remaining": 37500,
  "overage_email_count": 0,
  "usage_percent": 25
}

Create checkout session

POST /v1/billing/checkout

Requires full_access scope. Creates a Stripe checkout session to upgrade, downgrade, or add a payment method.

Request body

{
  "plan": "business",
  "billing_period": "annual"
}
FieldTypeDescription
planstringTarget plan: pro, business, enterprise.
billing_periodstringmonthly (default) or annual.

Response

{
  "url": "https://checkout.stripe.com/..."
}

Redirect the user to the returned URL to complete payment.


Plans and pricing

PlanMonthlyAnnual (per month)Emails/monthOverage
Free$0N/A3,000None
Pro$18/mo$15/mo ($180/yr)50,000$0.50/1K
Business$79/mo$66/mo ($792/yr)200,000$0.35/1K
EnterpriseCustomCustomUnlimitedCustom

Overage billing

When you exceed your monthly quota on Pro or Business:

  1. Emails continue to send (no hard cutoff)
  2. Usage above the quota is billed at the overage rate at the end of the billing period
  3. A spending cap limits total overage: 3× the included quota (Pro: 150K extra, Business: 600K extra)
  4. If you approach 80% of your monthly quota, Sendr sends a warning email

If overage emails are attempted after the cap is reached, the API returns overage_limit_reached (429).

A valid payment method is required before overage kicks in. Without one, overage sends return payment_required (402).

Billing suspension

If a payment fails and is not resolved within the grace period, the account is suspended. API calls return billing_suspended (402) until the payment method is updated.

On this page