Quick answer
Draft order checkouts do not behave like normal storefront checkouts. If a checkout starts from a draft order invoice or payment link, Shopify says customers cannot apply discount codes themselves by default.
Symptom
A customer follows an invoice link or app-generated checkout and cannot enter a discount code. The same code may work when the customer goes through a normal product-page/cart checkout.
Most likely causes
- Draft order checkout path. The order was created in Admin, by a B2B/wholesale flow, or by an app before the customer reached checkout.
- Product-options app behavior. Some product-options apps create draft orders so they can attach custom line-item data or pricing.
- Wholesale/quote apps. Quote-style workflows often use draft orders instead of standard checkout.
- Discount was not applied to the draft. The store expected the customer to enter a code later, but the draft flow does not expose the same field.
Quick checks
- Open the order path and confirm whether it begins from Orders → Drafts.
- Check whether the customer clicked an invoice link instead of checking out from cart.
- Test the same discount through a normal product/cart checkout.
- If the code works in normal checkout but not the invoice checkout, the issue is the draft-order path.
- If a third-party app created the checkout, check that app’s documentation for discounts.
Theme, app, or code checks
- Theme code usually is not the fix here. The checkout behavior is tied to the order path.
- For draft orders, apply the discount before sending the invoice when that is the intended price.
- For app workflows, ask whether the app can pass discounts, create automatic discounts, or avoid draft orders.
- For B2B flows, document which customers get catalog pricing, draft invoices, or standard checkout.
When to stop guessing
Stop guessing when you confirm the checkout is a draft-order checkout. At that point, the fix is usually workflow design: apply discounts on the draft, change the app workflow, or use an automatic/native discount where possible.
Prevention checklist
- Label internal workflows as standard checkout, draft order, or quote checkout.
- Do not promise customers they can enter a code if their path uses draft orders.
- Test discount campaigns through the same path the customer will use.
- For B2B/wholesale, decide whether discounts belong in catalog pricing, draft order discounts, or standard checkout codes.

