Lowest price

Last updated

How does the lowest price feature work?#

Price calculation#

The lowest price is calculated as the minimal price of a product attainable by using any active campaigns.

These prices are calculated for each valid combination of:

  • market
  • pricelist
  • product variant

Only buyable product prices will be recorded. That means that all the following conditions must be met for a price to be considered during calculations:

  • active product display
  • store is direct to consumer
  • product display is enabled for given market
  • product variant is active
  • pricelist is active

Recorded prices will be adjusted by any relevant campaigns that met the following conditions:

  • the campaign is enabled for the market
  • product variant is enabled for the campaign
  • campaign status is active
  • campaign date restrictions are satisfied (start and end dates)

Vouchers are not considered.

What about correcting price errors?#

There is no mechanism in place to correct a historical price. If a price was available, even for a split second, then it will show no matter what. That also applies to setting the price to 0 - it will show as 0 (free product) in the API.

When are the prices calculated?#

They are calculated asynchronously on any modification to a:

  • campaign
  • market
  • pricelist
  • product variant

They are also verified daily after midnight.

Where can the lowest price be accessed?#

Lowest price feature is supported in both Checkout and Shop APIs. Prices are recorded only for direct to consumer stores.

In all the places where a product or selection response is returned:

  • Product listing (POST /products)
  • Product details (GET /products/{productId})
  • Bundles (GET/POST /bundles/{productId})
  • Receipt (GET /receipt)
  • Selection (GET/PUT /selection, POST /items/{item}, POST/DELETE /lines/{line})
  • etc.

There will be a new field lowestPrice in the response:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 { ..., "price": "200.00 SEK", "priceAsNumber": 200, "priceBeforeDiscount": "200.00 SEK", "priceBeforeDiscountAsNumber": 200, "discountPercent": 0, "lowestPrice": [ { "periodDays": 30, "price": "100.00 SEK", "priceAsNumber": 100, "priceBeforeDiscount": "200.00 SEK", "priceBeforeDiscountAsNumber": 200 } ], "showAsOnSale": false, "showAsNew": false, ..., }