Virtual Price Lists
Virtual price lists are a flexible tool for creating dynamic price lists that are calculated in real time with each API request. Unlike regular price lists, no product data is stored directly in the price list; all pricing is based on rules and information from a parent price list.
How do virtual price lists work?
A virtual price list is always linked to a parent price list and inherits its assortment and currency. All settings and price rules are defined at the price list level, and there is no product-level information until a price needs to be calculated. When an API request is made, prices are calculated instantly based on the current rules and the data from the parent price list.
Virtual price lists are not shown in the product catalog or admin interface and cannot be exported as a feed. They are only available via API.
Advantages
- Real-time calculation: Prices are calculated instantly upon request, with no need to wait for batch jobs or queues.
- No storage: Takes up no space in the system since no product data is stored.
- Immediate updates: Changes to rules or the parent price list are reflected immediately with the next API request.
Limitations
| Limitation | Detail |
|---|---|
| Currency | Must match the parent price list — no currency conversion |
| Assortment | Always identical to the parent — cannot be limited or extended |
| Parent required | A virtual price list must always have a parent price list |
| Price rules | Must be based on information from the parent (no fixed prices) |
| Product flags | Price rules based on product flags are not supported |
| Rounding | No rounding rules are applied — prices are calculated exactly |
When to use virtual price lists
Virtual price lists are a good fit when:
- You need real-time, per-request pricing without managing batch calculations or feed updates.
- You want a contract or agreement price that is always a simple rule-based derivation from the standard price — for example, a fixed percentage discount for a specific company.
- The customer-specific price list should cover the full standard assortment (no assortment filtering needed).
They are a poor fit when you need to limit assortment to a subset of products, use product flag-based rules, or apply rounding. In those cases, a regular (stored) price list is the right choice.
Virtual vs. stored price list
| Feature | Virtual | Stored |
|---|---|---|
| Calculation time | Per API request | Batch / on change |
| Storage | None | Product-level records |
| Currency conversion | Not supported | Supported |
| Assortment control | Not supported | Supported via population rules |
| Rounding rules | Not currently supported | Supported |
| Product flag rules | Not currently supported | Supported |
| Feed export | Not currently supported | Supported |
| Full visibility in admin | No | Yes |
Note: Improvements to the virtual price list functionality are currently being planned.
Setting up a virtual price list
Create a virtual price list the same way as a regular price list, but check the Virtual option when creating it.
- Set a parent price list — required.
- Set the same currency as the parent.
- Set a price rule — for example, Use standard price (pct discount) with a 5% discount.
- Mark as non-public and pass the price list ID via
PriceListSeedin API calls to use it for a specific customer context, or mark as public if it should always apply.