Plans & quotas
SendIt's plans, the labels included per month, and how overage works.
Every plan includes a monthly quota of labels and trackers. There are no hard caps. Past your quota you pay a per-label overage fee, charged at purchase time.
The plans
| Plan | Labels / month | Overage per label | Own account per label | Trackers / month | Overage per tracker | Requests / min (read/write/quote) |
API keys | Webhook endpoints | Members |
|---|---|---|---|---|---|---|---|---|---|
| Free | 500 | $0.90 MXN | $1.20 MXN + IVA | 100 | $0.80 MXN | 60 / 30 / 20 | 2 | 2 | 3 |
| Growth | 3,000 | $0.70 MXN | $0.90 MXN + IVA | 2,000 | $0.50 MXN | 300 / 150 / 60 | 10 | 10 | Unlimited |
| Scale | 15,000 | $0.50 MXN | $0.60 MXN + IVA | 10,000 | $0.30 MXN | 1,000 / 500 / 200 | 50 | 50 | Unlimited |
| Enterprise | Unlimited | — | No charge | Unlimited | — | 5,000 / 2,500 / 1,000 | 500 | 500 | Unlimited |
On every plan: the full API, test mode, webhooks, and every carrier. Requests per minute are metered by endpoint class. Details are in rate limits.
The own-account column applies when you buy with your own carrier credentials. In that case you pay that fee and nothing else: the label does not consume normal overage, though it still counts toward your monthly quota. See carrier accounts.
How overage works
There is no monthly cap. A Free organization can buy 600 labels in a month: the first 500 at the normal price, and the remaining 100 with an extra $0.90 MXN each. The overage:
- Is charged at each purchase, together with the label. It never arrives as a surprise invoice at month end.
- Shows up explicitly in the purchase response (
overageCharge) and on the label (overageAmount); it’s"0.00"within quota or on unlimited plans. - Counts live operations only: test-mode purchases never consume quota or charge overage.
The same model applies to external trackers. Only external registrations consume quota. Trackers created automatically with a SendIt label are free and are not counted.
Hard caps: keys, webhooks, and members
Labels and trackers have no cap: you pay overage. API keys and webhook endpoints are hard-capped per plan. Creating one past the limit returns 403 PLAN_LIMIT_REACHED, with resource, limit, and plan in details. Upgrade the plan to raise the cap.
The key count excludes keys in their 24-hour rotation window; the webhook count excludes deleted endpoints.
Members on the Free plan
The Free plan allows 3 members, counting current members plus pending invitations. Inviting past the cap returns the same 403 PLAN_LIMIT_REACHED. Accepting an invitation into an organization that already holds 3 members does too. In that case the invitation stays pending and works as soon as you upgrade.
Paid plans do not cap members. Organizations that already had more than 3 members before this cap keep all of them, but they cannot invite anyone else without upgrading.
Check this month’s usage
GET /v1/organizations/me/usage returns the current calendar month’s consumption against your plan’s quotas:
{
"success": true,
"data": {
"month": "2026-07",
"plan": "FREE",
"labelsCreated": 562,
"labelsQuota": 500,
"overageLabels": 62,
"overagePerLabel": "0.90",
"trackersCreated": 30,
"trackersQuota": 100,
"overageTrackers": 0,
"overagePerTracker": "0.80",
"totalSpent": "18234.50",
"currency": "MXN"
}
}
| Field | Description |
|---|---|
labelsQuota / trackersQuota |
Plan quota (null = unlimited) |
overageLabels |
Labels above quota this month |
totalSpent |
Real spend this month (live operations only) |
Ideal for usage bars in your own dashboard, or to alert yourself before entering overage.
Usage alerts
When your live usage first crosses 80% and 100% of a quota (labels or trackers), we email the organization owner. Each threshold alerts at most once per calendar month and re-arms the next month. Unlimited (Enterprise) plans never alert, and test mode never counts.
Check your subscription
GET /v1/billing/subscription returns the active plan, its cycle, and the full limits:
{
"success": true,
"data": {
"plan": "GROWTH",
"status": "ACTIVE",
"currentPeriodStart": "2026-07-01T00:00:00.000Z",
"currentPeriodEnd": "2026-08-01T00:00:00.000Z",
"cancelledAt": null,
"trialEndsAt": null,
"isStripeManaged": true,
"limits": {
"labelsPerMonth": 3000,
"overagePerLabel": "0.70",
"trackersPerMonth": 2000,
"overagePerTracker": "0.50",
"rateLimits": { "read": 300, "write": 150, "quote": 60 },
"maxApiKeys": 10,
"maxWebhookEndpoints": 10,
"maxMembers": null
}
}
}
status:TRIALING,ACTIVE,PAST_DUE,CANCELLED, orUNPAID.limits.rateLimitscarries the per-minute budget for each endpoint class.maxMembersisnullon paid plans (no cap) and3on Free.- Organizations on the Free plan, with no paid subscription, report
isStripeManaged: falseandnullperiods. The endpoint never 404s.
Personal organizations
Your personal organization starts on Free and can upgrade like any other. Quotas and overage apply normally. Sandbox is a mode, not the organization: nothing you do in test mode consumes quota.
Change plans
You can upgrade or manage your plan yourself (ADMIN role or above):
POST /v1/billing/checkout-sessionwith{ "plan": "GROWTH" }returns a Stripe Checkout URL: redirect the user there to complete payment. On completion, your plan updates automatically. It acceptsGROWTHorSCALE.POST /v1/billing/portal-sessionreturns a Stripe Billing Portal URL to change the payment method, view receipts, or cancel. It requires that your organization has upgraded at least once.
Both endpoints use your dashboard session (JWT), not API keys. ENTERPRISE is sales-led: requesting it through checkout returns 503 CHECKOUT_NOT_CONFIGURED. Upgrading applies the new quota immediately. Downgrading applies at the end of the current period.