This chapter covers every path that decides "how much does this item cost?" It explains where currencies are defined, the three places you can set an item price, how multi-currency price strings work, how change-making is computed at checkout, and what to do when your game system has no built-in adapter.

Who Uses It

GMs decide currencies and pricing rules. Players just see the final price at the shop. Item prices can be edited on the item sheet, in the shop's category list, or both.

Currency Definitions

Stylish Shop does not define currencies itself. It reads them from the GlitchSmith Library's Currency Definitions dialog and uses them shop-wide. Every GlitchSmith module (Shop, Smartphone Widget, etc.) shares the same definitions.

How to Open the Dialog

From What opens
Game Settings > Module Settings > Stylish Shop > Currency Definitions The GlitchSmith Library currency dialog.
Shop Settings > Currency & Pricing > Open Currency Definitions Same dialog.
Game Settings > Module Settings > GlitchSmith Library > currency menus Same dialog from the library side.

Two Kinds of Currency

Kind Stored on Examples
Sheet currency The actor sheet's system currency fields. Defined by the system. D&D 5e's gp/sp/cp, PF2e's pp/gp/sp/cp, SFRPG's credit/upb, SWADE's currency.
Virtual currency The library's own key-value store on the actor. System-agnostic. Campaign tokens, custom currencies, reputation points.

A shop accepts virtual currencies only when Allow GlitchSmith Library Virtual Currencies is enabled in Currency & Pricing. Off means sheet currencies only.

Currency Fields

Field Role
id Internal identifier. Used as the unit in price strings (5gp).
name Human-readable name.
abbreviation Short label shown next to prices.
symbol Optional separate symbol. May be used in place of the abbreviation.
exchangeRate Rate against the base unit. The smallest unit is 1. D&D 5e uses cp=1, sp=10, gp=100.
systemId Which adapter the currency belongs to (dnd5e, pf2e, glitchsmith-lib, etc.).

The currency with the smallest exchange rate is the base unit. Price strings without a unit are interpreted in that unit.

Price Resolution Order

When the module looks up an item's price, it checks these sources in order. The first hit wins.

  1. Shop item override — the value typed into the category row (overridePriceSpec or overridePrice).
  2. Item document flag — saved by the Stylish Shop Price dialog on the item sheet (flags.stylish-shop.priceSpec).
  3. System native price — extracted by the system adapter (e.g. system.price on a D&D 5e item).
  4. Item Price Paths — world-level paths registered for systems with no adapter.

Two extra multipliers are applied on top of whatever value is found: