We are selling articles that should be sold cheaper if sold in specific multiplies (10 pieces, 20 pieces, ...).

When setting a tier price, it is only possible to set this price for "> 10" items and 11 items would also get an discount.

Is there an "easy" way to set this in the Magento backend or a simple approach for an own module?

2 Answers 2


I don't think there is a builtin functionality to cover this.

But anyway a module shouldn't be that hard.

There are 2 events, checkout_cart_product_add_after and checkout_cart_update_items_after, observe both and inside the observer do something like:

$item = $observer->getItem();
if (($item->getQty() % 10) == 0) {
    $item->setCustomPrice($item->getPrice() * 0.9); // or whatever ;-)

I would suggest this way to solve the problem.


I think this can be achieved easier using 'Shopping cart discount rules'. I assume that if the customer buys 11 items he should get a discount for 10 of them and 1 full price. This can be done via rules using 'Discount Qty Step (Buy X)'. You can even set a max qty for discount and what is over that is paid full price.
The only downside of this is that the customer won't see this discount until he/she adds the product to the cart.

  • Yes - and there are different package sizes per article. I might end up with defining an attribute "Package size with values 7, 10, 15" and then define one rule that matches on package_size_attribute = 7; quantity_in_cart = 7 or 14 or 21 or .... and another rule for 10 and 15.
    – Alex
    Jul 10, 2013 at 9:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.