Plan
Subscription plan attributes: usage limits, billing model, visibility, and order within the catalog.
Properties
| Field | Type | Description |
|---|---|---|
slug* | string | Unique, human-readable plan identifier. It is immutable and used in other requests, such as `PUT /v1/users/me/subscription`. |
name* | string | Plan name shown in the interfaces. |
monthly_validation_limit* | integer | Validation cap per subscription cycle. `0` allows no validations. |
is_default* | boolean | `true` when this is the plan assigned by default to new accounts. |
billing_model* | string | Plan billing model — `free`: No charge; `tiered`: Flat fee; `metered`: Usage-based charge; `hybrid`: Flat fee plus usage. |
trial_days* | integer | null | Free trial days. `null` or `0` when the plan offers no free trial. |
included_validations* | integer | null | Validations included in the base quota before overage charges. `null` when the plan has no base quota. |
is_public* | boolean | `true` when the plan appears in the public catalog and can be selected through self-service; `false` when it is hidden from both. |
stripe_product_id* | string | null | Associated Stripe Product identifier. `null` when the plan is not connected to Stripe. |
is_active* | boolean | `true` when the plan is active and can be assigned. User-facing catalogs exclude inactive plans; administration retains them. |
sort_order* | integer | Plan position within the catalog. Lower values appear first. |
user_count* | integer | Non-revoked accounts with an active subscription to this plan. |
beneficiaries_max* | integer | Cap on registered beneficiaries per account. `-1` means uncapped; from `0`, the value is enforced as the limit. |
retry_max_retries* | integer | null | Per-plan cap on retries per validation. `null` when it inherits the global default. |
retry_max_pending_per_user* | integer | null | Per-plan cap on pending validation retries per user. `null` when it inherits the global default. |
retry_max_dispatched_per_day* | integer | null | Per-plan cap on validation retries dispatched per day and user. `null` when it inherits the global default. |
bulk_validations_max* | integer | Cap on receipts per bulk-import batch. No `-1` sentinel: "uncapped" is represented with a large number. |
sms_2fa_monthly_cap* | integer | Monthly cap on SMS for login second-factor (2FA), per subscription cycle. Does **not** cover phone verification. When exhausted, login silently falls back to email. Biometric login never consults this — it always challenges via email. |
api_rate_per_min* | integer | null | Requests per minute for one key on the API (`api` context) for accounts on this plan. `null` when it inherits the `free` plan value. |
webhook_per_host_per_min* | integer | null | Webhook deliveries per minute a customer on this plan may send to a single destination host. `null` when it inherits the `free` plan value. A global per-host cap, common to all customers, sits on top. |
features | array | Bilingual plan features, ordered by `sort_order`. User-facing catalogs include only active features. |
Used in operations
GET /v1/admin/plansPOST /v1/admin/plans/create/executeGET /v1/admin/plans/{slug}POST /v1/admin/plans/{slug}/update/executePUT /v1/admin/plans/{slug}/defaultPUT /v1/admin/plans/{slug}/toggleGET /v1/plans