Stacking at checkout
Discount Ninja allows users to show a discount code field at checkout (2) when Discount Ninja promotions (1) have been applied to the checkout:
This option requires the use of the Discount Ninja Sales Channel free companion app, cf. this article.
This allows customers to "stack" a Shopify discount code (2) on top of Discount Ninja promotions (1) at checkout.
Limitations
There are two situations where the discount code field, while available, will be pre-filled by Discount Ninja. In these situations, customers can only replace the discount code with another code. They cannot add an additional code.
These situations are:
Free shipping: when a free shipping promotion is applied to the checkout, customers cannot stack an additional discount code on top of it
Order-level discounts: when using order-level discounts, customers cannot stack an additional discount code on top of it
Workaround for limitations
There is no workaround for free shipping, unfortunately.
When order-level Discount Ninja promotions are applied to the checkout, however, the app can "distribute" the order-level discounts to the line level to free up the discount code field.
This can be configured in the app. In the menu, go to Settings > General > Advanced and find this option:
There are two caveats:
When free shipping is offered via Discount Ninja, the app will override this setting and distribute the order level discount to the line items to be able to offer free shipping with a discount code.
When standard Shopify discount codes are applied to the cart on top of Discount Ninja promotions, the app will override this setting and not distribute the order level discount to the line items.
The following example illustrates how distribution works:
If you buy:
Line 1 - Product A: $50
Line 2 - Product B: $100
Subtotal: $150
And you provide a discount of 10% on the total order (i.e. an order level discount).
Then the discount is $15 and the discounted subtotal is $135.
So the cart shows:
Line 1 - Product A: $50
Line 2 - Product B: $100
Subtotal: $150
Discount: $15
Discounted subtotal: $135
If you use the option to show the discount field at checkout and you enable the option to "distribute" order level discounts to the line items at checkout (i.e. set it to Yes), then the following happens:
The app has calculated that a discount of $15 is to be applied
Instead of showing this discount on the subtotal, it shows it on the lines of the order; this is necessary to allow users to add a Shopify discount code at checkout
The app applies the discount to the most expensive line (or lines if the value of the discount exceeds the value of the line)
So the checkout shows:
Line 1 - Product A: $50
Line 2 - Product B: $100 - $15 = $85
Subtotal: $135
Discount code field: empty
If you use the option to show the discount field at checkout and you disable the option to "distribute" order level discounts to the line items at checkout (i.e. set it to No), then the checkout shows:
Line 1 - Product A: $50
Line 2 - Product B: $100
Subtotal: $150
Discount code field: $15 discount applied
Discounted subtotal: $135