Custom deals
Custom deals let platform superusers create contract-specific subscription terms for a team without exposing generated plans in public registration or standard plan selection. Use them when a customer needs negotiated usage limits, overage pricing, commitment terms, or channel access that does not match the self-service catalogue.
Path: /admin-settings → Custom Deals tab
Deal model
A custom deal is versioned. Each version records the commercial terms that become active for a team:
| Field | Purpose |
|---|---|
| Display name | Customer-facing label shown on subscription screens. |
| Included usage | Included call minutes, LLM tokens, SMS messages, users, and admins. |
| Overage pricing | Per-unit rates and optional spending cap. |
| Channels | Whether the team can use TEL, WebRTC, and API/SDK access. |
| Term | Fixed commitment in months, or indefinite when no term is configured. |
| Notification thresholds | Usage percentages that trigger billing notifications. |
| Internal notes | Operator-only context for sales, support, or renewal tracking. |
Generated plans are linked to the deal version. They are hidden from public self-service plan pickers unless explicitly made selectable.
Create a custom deal
- Open Admin Settings → Custom Deals.
- Select the target team.
- Create or edit a deal version.
- Fill in the commercial terms, usage allowances, overage prices, channel selection, and commitment term.
- Generate the Stripe checkout link.
- Share the link with the customer or use the activation controls for an existing subscription.
After activation, the team sees the custom-deal terms under Settings → My Subscription. The standard plan catalogue still exists, but self-service cancellation and downgrade actions are blocked while the team is inside an active commitment window.
Channel entitlements
Channel selection controls which platform surfaces the team may use:
| Channel | What it gates |
|---|---|
| TEL | Phone-number and telephony access. |
| WebRTC | Browser voice system keys and WebRTC calling. |
| API/SDK | Team API keys and TelAPI session access. Requests fail when API/SDK is not enabled for a team. |
Use channel entitlements to keep contract scope aligned with the customer's purchased access. If a team reports that API keys, WebRTC sessions, or phone-number actions are blocked, check the active deal version before troubleshooting platform health.
Existing subscriptions
Custom deals can be applied to existing teams. When you move a team onto a deal:
- Confirm the team's current billing state and pending plan changes.
- Verify that generated Stripe products/prices exist for the deal version.
- Confirm the channel selection before activation, especially API/SDK access for integrations.
- Tell the team admin that My Subscription will show contract-managed terms and may restrict self-service downgrade or cancellation during the commitment period.
See also
- My subscription — what team admins see after activation.
- Feature flags —
subscriptionManagementandsubscriptions. - Environment variable index — Stripe and billing configuration.