Skip to content
Back to Articles

Specific Prices in PrestaShop: why the price field is not always the final price

Price feeds, exports & pricing audits
SQL
SELECT
p.id_product,
p.reference,
sa.quantity
FROM ps_product p
JOIN ps_stock_available sa
ON sa.id_product = p.id_product
WHERE p.active = 1;
Data & Database
Intermediate
PrestaHacks 2 min read

You see price = 29.90 and assume you found the final selling price. Not necessarily.

In PrestaShop, the commercial price can be affected by specific prices, customer groups, currency, country, quantity, date ranges and combinations.

1. Base price is only the starting point

TEXT
PRODUCT BASE PRICE
       ↓
PRICING CONTEXT
       ↓
FINAL PRICE

2. Specific Price context

A rule can depend on product, shop, currency, country, customer group, customer, combination, minimum quantity and date range.

3. Reduction

A reduction may be percentage-based or a fixed amount, so always inspect reduction_type.

4. Date and quantity windows

Promotional rules can be valid only for a specific period or from a minimum quantity.

5. Combination-level pricing

A specific price can target an id_product_attribute, so a product-level feed may miss variant-specific rules.

6. Audit query

SQL
SELECT
    sp.id_specific_price,
    sp.id_product,
    sp.id_product_attribute,
    sp.id_shop,
    sp.id_currency,
    sp.id_country,
    sp.id_group,
    sp.id_customer,
    sp.from_quantity,
    sp.price,
    sp.reduction,
    sp.reduction_type,
    sp.`from`,
    sp.`to`
FROM ps_specific_price sp
ORDER BY sp.id_product, sp.id_specific_price;

Warning

This is an audit dataset, not a complete storefront price calculation.

7. Products with many pricing rules

SQL
SELECT
    id_product,
    COUNT(*) AS rules
FROM ps_specific_price
GROUP BY id_product
ORDER BY rules DESC;

8. Before building a price feed

Define the intended price type, shop, currency, country, customer group, quantity and reference date.

The right question is not “What is the price?” but “Which price, for which context, at which moment?”

Next step

Audit those contexts with a catalogue report built from explicit SQL joins. Keep the underlying product, combination and stock relationships visible so a price row is never mistaken for a complete sellable variant.

STAY TUNED

Get practical PrestaShop hacks in your inbox.

INACTIVE