Kits
A named bundle of component Products and/or nested kits that can be sold or tracked as a single unit, with an automatically maintained count of how many complete kits can be assembled from on-hand inventory.
A kit is a named bundle — it groups component Products (and even other kits) into a single thing you can sell or dispatch together. Think of a "Starter Tool Set" that contains a drill, two bits, and a case, or a "Trade Show Display" kit that nests a banner stand kit inside a larger shipping kit. The kit itself has a name, an optional price, and an estimated stock count that Knowledge ERP updates automatically to reflect how many complete kits can be assembled from the components currently in stock.
Kits are defined at the catalog level — they describe what goes in the bundle, not a physical assembly. You are not consuming components when you create a kit; components are pulled only when you use the kit in a rental, loan, or other fulfillment action.
Creating a kit #
New kits live under Inventory → Kits → New Kit (nested under Products in the sidebar). The form is intentionally brief:
- Name — the kit's display name. Required.
- Category — an optional category from your hierarchy. Useful for organizing kits alongside related Products and for inheriting custom fields.
- Price — the kit's sale price in dollars. Leave blank and it will display as (from components) in the list — a visual reminder that you have not set a fixed bundle price. The API stores and returns this field in cents.
- Custom fields — any extra attributes defined on the chosen category appear at the bottom of the form.
After saving you are taken to the kit's view page, where you add the components that make up the bundle.
Components: what goes in the kit #
The Components tab on the kit's view page is where the bill of materials lives. Each component line specifies:
- Type — Product or Kit. A component can be another kit, which lets you build nested bundles (e.g. a "Conference Package" kit that includes a "Display Stand" kit plus a few individual Products). The REST API accepts
sku,item, orkitas the component type, so kit-in-kit nesting is available over the API too. - Component — the specific Product or nested kit. Searching works in the dropdown. A kit cannot contain itself.
- Amount — how many units of the component the kit requires (e.g.
2for two drill bits, or0.5for half a spool of material). - Units — optional label for the amount (e.g.
each,ft,kg).
You can add, edit, and delete component lines from the Components tab at any time. Every change triggers a recalculation of the estimated stock count.
Estimated stock count #
The Est. Stock column in the kit list (and the Estimated Stock Count field on the kit page) shows how many complete kits the current in-stock inventory can yield. Knowledge ERP calculates this by dividing each component's in-stock unit count by its required amount, then taking the minimum across all components — the classic "weakest-link" assembly formula. A kit with no components always reads 0.
This count is cached and refreshed automatically when component stock changes — you do not need to trigger it manually. It is read-only via the API.
The estimated stock count reflects units with status In Stock only. Units that are checked out, on hold, or in transit do not contribute to the count.
Kit pricing #
A kit's price field is optional. When you set it, the kit has a fixed bundle price. When you leave it blank the UI shows (from components) as a reminder that no override exists. You can set or clear the price at any time by editing the kit.
Selling kits #
Kits can be added as line items on quotes,
sales orders, and
invoices — pick the Kit option on a line
(searchable by name or K- barcode) instead of a Product. The line price defaults to
the kit's own price (override it per line if you like).
On a sales order, a kit line is fulfilled from its components: availability checks and inventory reservation expand the kit into its component Products, and shipping the line ships the required units of each component (amount × quantity). A kit whose components are short on stock surfaces a per-component shortage just like a Product line.
Reorder points #
The Reorder Points tab lets you set min and max assembled-kit thresholds, optionally scoped to a specific location. The kit's current stock is how many complete kits can be assembled from its components (location-scoped when the point names a location); when that drops below the min, the kit appears in the Low Stock report and Reorder Queue so you can replenish the components needed to assemble more. (Purchasing suggestions and auto-transfers operate on the component Products — each has its own reorder point — not on the kit itself.) See Reorder Points for details.
The kit list #
The kit list (Inventory → Kits) shows each kit with its category, price, estimated stock count, and component count. Soft-deleted kits are hidden by default; use the Trashed filter to include them. The list is sorted by name and is searchable.
Kits and other modules #
- Sales — kits are sellable line items on quotes, sales orders, and invoices; a sold kit ships its component units (see Selling kits above).
- Equipment Rentals & Loans — kits can be added as line items on rental agreements and loan agreements. Availability checks account for all components across concurrent agreements.
- Barcodes — kits get their own barcode with a
Kprefix, scannable from Inventory → Barcodes & Labels. See Barcodes & Labels. - Change history — every edit to a kit or its components is recorded in the audit trail, visible on the Change History tab.
Doing it from the API #
# List all kits (filter by category)
curl "https://your-domain.com/api/v1/inventory/kits?category_id=<id>" \
-H "Authorization: Bearer $TOKEN"
# Create a kit
curl -X POST "https://your-domain.com/api/v1/inventory/kits" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Starter Tool Set", "category_id": "<id>", "price": 14999}'
# Add a component (Product) to the kit
curl -X POST "https://your-domain.com/api/v1/inventory/kit-components" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"kit_id": "<kit-id>", "component_type": "sku", "component_id": "<product-id>", "amount": 2, "units": "each"}'
The
pricefield is an integer in cents (14999= $149.99). Thecached_stock_countfield is read-only and cannot be set via the API. The valid values forcomponent_typeare"sku","item", and"kit"— use"kit"to nest one kit inside another.