Skip to main content

Price Lists and Versions

A price list is the primary organisational unit for pricing in the PCM module. Rather than attaching prices directly to catalogue items, prices are grouped into named lists that can be typed, versioned, and assigned to specific customers. This indirection allows the same item to carry different prices in different contexts — retail vs. wholesale, domestic vs. international, promotional vs. standard.

Price list structure

Each price list is defined by:

  • Name — a human-readable label (with internationalisation support)
  • Type — a category drawn from a configurable lookup (e.g. Standard, Promotional, Wholesale)
  • Currency — the base currency for all prices in the list
  • Description — free-text context about the list's purpose
  • Visibility — controls who can see the price list beyond its owning organisation

Within a tenant, no two active price lists can share the same name and type combination, preventing ambiguity when resolving which list applies.

Price list types

Price list types are tenant-scoped lookup values that define the valid categories for lists. Each tenant can configure their own set of types — for example, one organisation might use "Standard" and "Promotional", while another uses "Retail", "Wholesale", and "Partner".

Types are effective-dated, so they can be retired without deletion when no longer needed.

Versioning

Price lists are versioned through a dedicated version entity. Each version is a named snapshot of the price list at a point in time, carrying:

  • Version name — a human-readable label (e.g. "Q1 2026", "v2.0")
  • Description — what changed in this version

Versions are the entity that price list lines attach to. A line joins a specific price to a specific version of a price list. This means updating prices is a matter of creating a new version and adding new lines, while the previous version's lines remain intact for historical reference.

How prices connect to price lists

Prices do not belong directly to a price list. Instead, price list lines act as the join:

Price list → Price list version → Price list line → Price

Each price list line references a parent price list, a version within that list, and the actual price record. The same price can appear at most once per version, preventing duplicate entries.

This three-level structure (list > version > line > price) provides full auditability: you can always determine what prices were in effect for a given version of a list, and compare across versions.

Effective dating

Both price lists and their versions use start and end dates to control when they are in effect. This means:

  • Pricing changes can be scheduled in advance by setting future start dates on new versions
  • Old pricing automatically expires when its end date passes
  • Historical pricing is preserved for audit and comparison