
Inventory > SKUs
Definition
A SKU is a template for a product type. It holds product-level information — name, code, category, attributes, description, base purchase price, bin location — and acts as the parent definition for any number of Stock Items that represent the actual physical units.BIK-S named Bike S with:
- Category: Bicycles > City
- Attributes:
Brand: Trek,Frame size: S - Purchase price:
€499
€520 — override the purchasePrice on just that item; the rest still read €499 from the SKU.
Where do I use it?
SKUs are central to product management and appear throughout TWICE:- Product catalog management — define product templates that many Stock Items share
- Listing creation — Listings reference SKUs to define what is fulfillable
- Bulk operations — update pricing, description, or attributes once on the SKU and propagate to all linked items
- Reporting and analytics — analyse performance by product type rather than per item
- Inventory planning — track stock levels and demand patterns by SKU
- AI suggestions —
suggestSkuCodeproposes a code from the SKU name
SKU vs Stock Item
skuId: null) — useful for one-off items that do not fit a product template.
Inherited fields
The following fields cascade from the SKU to every linked Stock Item:- The Stock Item’s own value takes priority over the SKU’s value.
- The API exposes
*Originfields so you always know whether a value was inherited or set on the item. - Clearing a value on the Stock Item (set to
null) makes it re-inherit from the SKU. - Updating a SKU field instantly changes the effective value on every linked item that does not have its own override.
- Buffer time uses a three-state model:
null= inherit from SKU,0= explicit no buffer (overrides the SKU),> 0= custom override. See Stock Item Fulfillment for details.
SKU code
code is the user-facing identifier for the SKU. Rules:
- Required, minimum length 1.
- Must be unique within the tenant.
- Validate ahead of creation with
POST /skus/validate-codes. - Auto-suggest a code from a name with
POST /skus/suggest-code. - Editable after creation, but updates are checked against the same uniqueness rule.
BIK-S, SKI-ATOM-170, HELM-MD-RED. Choose something short, mnemonic, and stable.
Key Properties
Multi-listing per SKU
One SKU can power multiple Listings. The Listing layer adds rental terms, pricing tables, availability windows, channels — but the SKU underneath stays the same. This is how a single product can appear in different stores, packages, or pricing contexts without duplicating its identity.Relationships
Has many Stock Items
Has many Stock Items
articles[].skuId. Each Stock Item inherits SKU properties but maintains its own tracking, ledger, and event history.Referenced by Listings
Referenced by Listings
Belongs to a category and attributes
Belongs to a category and attributes
Lifecycle
Creation
How do I create a SKU?
How do I create a SKU?
What information is required?
What information is required?
name and code. Recommended: taxonomyCategoryId, purchasePrice, description, and attributes — anything you want inherited by every Stock Item.Can creation be automated?
Can creation be automated?
POST /skus (single) or POST /skus/many (bulk). Both are idempotent on code — duplicate codes are rejected up front by validateCodes.Usage
Where do I see SKUs?
Where do I see SKUs?
What actions can I perform?
What actions can I perform?
skuId, attach tags, configure attributes, and manage taxonomy. SKU-level updates propagate immediately to linked Stock Items that have not overridden the field.Does a SKU have status?
Does a SKU have status?
active Stock Items has zero ATS.Modification
How do I edit a SKU?
How do I edit a SKU?
PATCH /skus/:skuId. Changes propagate to linked Stock Items via inheritance.What about the SKU code?
What about the SKU code?
Can I bulk update attributes?
Can I bulk update attributes?
Deletion
How do I delete a SKU?
How do I delete a SKU?
DELETE /skus/:skuId. To delete many at once: POST /skus/delete with either { ids } or { deleteAllExcept }.What happens to linked Stock Items?
What happens to linked Stock Items?
skuId becomes null (they become unlinked). Inherited values are lost on next read — set them directly on the items if you need to keep them.FAQs
Should I create the SKU before or after the Stock Items?
Should I create the SKU before or after the Stock Items?
Can a Stock Item belong to more than one SKU?
Can a Stock Item belong to more than one SKU?
skuId is single-valued. You can switch the link any time (recorded as a sku_changed event), but only one is active at a time.How do SKU attributes differ from Stock Item attributes?
How do SKU attributes differ from Stock Item attributes?
Brand: Trek). Stock Item attributes can add or override per-unit values (e.g. a specific item with Frame number: ABC123). On the API, item-level values win.Do I need a SKU at all?
Do I need a SKU at all?
skuId is nullable. For one-off items, register a Stock Item without a SKU. You lose inheritance and cross-item rollups, but the item still has its own ledger, events, and lifecycle.Can I move all items from SKU A to SKU B?
Can I move all items from SKU A to SKU B?
skuId (single bulk update or scripted via the API). The SKU code on each item is rewritten to the new SKU; ledger and event history follow the item.Developer Reference
SKUs are exposed asskus in the API.