Products
Products represent the billable services or resources of your organization. Each product can have multiple prices and supports a one-level hierarchy (root product with children/add-ons).
Product Fields
| Field | Description |
|---|---|
| Name | Display name (1-255 characters) |
| Slug | URL-friendly unique identifier |
| Description | Details about the product |
| Type | Determines the usage model (see table below) |
| Visibility | public or private |
| Unit label | Name of the unit (e.g., "users", "GB") |
| Increment | Minimum quantity step (e.g., 10 = quantities 10, 20, 30...) |
| Required | Whether it is required to subscribe |
| Website URL | Link to documentation/product page |
Product Types
| Type | Description | Recurrence |
|---|---|---|
base | Standard recurring product | Recurring |
addon_quantity | Add-on with per-quantity pricing | Recurring |
addon_fixed | Add-on with fixed pricing | Recurring |
metered | Usage-based billing | Recurring (in arrears) |
one_time_fixed | Fixed one-time fee | One-time |
one_time_quantity | Per-unit one-time fee | One-time |
Product Hierarchy
Products support one level of hierarchy:
Root Product (parentProductId = null)
├── Child product 1 (add-on)
├── Child product 2 (setup fee)
└── Child product 3 (optional module)
Hierarchy Rules
- Nesting more than 1 level is not possible (children cannot have children)
- Child products inherit the organization/company from the parent
- Only root products can be added to plans
- Child products appear as add-ons/options of the parent product
Status and Lifecycle
draft → active → archived
↓ ↑ ↓
DELETE PUBLISH RESTORE
| Status | Description |
|---|---|
| draft | Under development, not visible to plans |
| active | Available for plans and subscriptions |
| archived | Deactivated; cannot be used in new subscriptions |
Rules
- Archive: Not possible if used by active, trialing, or past_due subscriptions. Automatically deactivates all prices
- Restore: Returns to
activestatus - Publish: Moves from
drafttoactive
Bulk Operations
- Bulk archive: Archives multiple products
- Bulk delete: Removes products not used in subscriptions
- Move to group: Moves products to a product group
- Change visibility: Changes the visibility of multiple products
- Change company: Moves products to another company
Reordering
Products have a displayOrder field to control the display order in the dashboard and portal. Reordering is possible via drag-and-drop or API.