A buyer copies a coupon from an email, pastes it into checkout and sees “Invalid code.” The code may be perfectly real. Perhaps one product is excluded, an automatic discount is already active or the minimum applies only to qualifying items. Asking the buyer to type the same characters again cannot resolve those conditions.
A useful coupon message names the condition the system actually evaluated and offers a next step that could change the result. It also preserves the order and the discounts already applied. The examples below are proposed messages for fictional offers, not a claim that a particular commerce platform lets every merchant replace its native checkout copy.
Identify the reason before choosing the wording
Begin with a small set of states that the promotion system can reliably distinguish. The wording should follow those states; a copywriter cannot infer eligibility from a generic failure response.
| Known condition | Example message | Useful next action |
|---|---|---|
| Code not recognized | “We couldn’t find that code. Check the spelling or copy it again from the offer.” | Edit the code |
| Offer ended | “This offer has ended.” | View current offers, if a real destination exists |
| Eligible spend below minimum | “Add $17 of eligible products to use this offer.” | See the qualifying products and calculation |
| No qualifying products | “This code applies to the travel collection. None of those products are in your cart.” | View the eligible collection |
| Discounts cannot combine | “This code can’t be combined with the offer already applied.” | Compare the available totals |
| Account eligibility cannot be established | “We can’t apply this offer to the current checkout. Sign in to check eligibility or contact support.” | Use the supported account or help route |
The table describes distinct cases, not a universal priority order. A store may need different handling when several conditions fail. Avoid presenting a speculative diagnosis just to make the message sound specific. If the system does not know whether the code exists, it should not claim that the offer has expired.
A valid code can still be incompatible
Shopify’s discount-combination documentation explains that the relevant combination settings must allow the discounts to work together. An active automatic discount can also affect the result. That creates an important content distinction: a code may be recognized but unusable alongside the current offer.
Keep the existing discount visible while explaining the conflict. A buyer who sees a reduced subtotal and then enters another code needs to understand whether the new code added savings, replaced an offer or changed nothing. A silent switch makes the promotion difficult to trust even if the final price is lower.
If the checkout can offer a choice, compare actual totals rather than percentage labels alone. A percentage off selected goods and a fixed shipping discount may affect different parts of the order. The buyer needs the amount they would pay with each supported option.
Do not offer a “Replace discount” action unless the platform can reliably perform it and recalculate the order. Where customization is limited, put the relevant combination terms in the offer and explain known conflicts through the supported interface. Copy cannot promise a control the checkout does not have.
Show the spend that actually qualifies
Consider a fictional promotion requiring $75 of eligible products. The cart contains $58 from the eligible collection and $24 of excluded goods, for an $82 merchandise subtotal. The cart is above $75, yet the offer still lacks $17 of eligible spend.
A message that says “Minimum spend $75” will look wrong beside the $82 subtotal. Show the relevant basis: “$58 of eligible products in your cart. Add $17 from the qualifying collection to use this offer.” Explain which line items do not count, without making the customer remove them to discover the rule.
This example deliberately uses a product-scoped rule. Shopify’s amount-off guidance says that, for discounts on selected products or collections, eligible items determine the minimum purchase amount; shipping and taxes do not count toward that minimum. Order-level discounts have their own conditions, so do not transfer the example to every promotion.
The arithmetic should use the same eligible values that the discount engine evaluates. If an earlier discount changes qualifying prices, a headline merchandise subtotal may be the wrong basis. Ask the implementation team to expose the evaluated amount rather than rebuilding a second, slightly different calculation in the message layer.
Make the offer’s terms available before the error
The promotion that brings a customer to the store should state the conditions needed to use it. A code for a specific collection should not be advertised as if it applies to everything. A minimum purchase should identify its scope. If combining offers is restricted, the buyer should be able to find that condition before building a cart around the expected saving.
Use the same names across the email, product page and checkout. “Travel essentials” in the campaign and “Collection 17” in the error may refer to the same products internally, but the customer cannot establish that relationship.
An expired code also needs a clear distinction from a technical failure. If the offer truly ended, say so. If promotion validation is temporarily unavailable, explain that the system cannot check the code right now and provide the real supported option. Calling a service problem an invalid code wrongly places the burden on the buyer.
Protect the customer’s context
Keep the entered code visible so that a typo can be corrected. Preserve delivery details, cart contents and any eligible discount already applied. A failed promotion attempt should not reset the whole commercial decision.
Account-specific offers need particular care. Show the condition only to the extent the current session is authorized to know it. Avoid revealing another person’s customer status or purchase history through an error message. A generic eligibility explanation with a sign-in or support route may be more appropriate than exposing the exact private reason.
Support should receive enough information to investigate the offer without asking the customer to repeat every step. The useful record identifies the code, evaluated cart and failure category according to the business’s normal support process. Public analytics and screenshots do not need a customer’s full personal details.
Test transitions, not just individual messages
A coupon can be eligible when applied and become ineligible after a cart edit. Remove an item, change a quantity, switch a variant and choose a different delivery option. Watch whether the discount and explanation update together.
Test the reverse transition too. When the buyer adds enough qualifying goods, the old error should disappear and the applied saving should become visible. Do not leave a red failure message beside a successfully discounted total.
Try the minimum just below and exactly at the threshold. Include a cart containing only excluded products and one containing both eligible and excluded items. For incompatible offers, confirm that the displayed total agrees with the discount actually retained. These checks exercise the business rules behind the copy rather than merely proofreading strings.
If the broader form is hard to recover from, use the form-optimization guide to review focus, field errors and retained input. For coupon handling itself, the useful endpoint is simple: the customer understands whether the offer applies, why it does or does not, and what the order will cost after the decision.
