How to upsell cash on delivery orders on Shopify

Shopify never shows the one-click post-purchase page on cash on delivery orders. The thank-you page can still add an item to the same order, paid at the door with the rest.

2026-10-07 — Abakira

You can upsell a cash on delivery order on Shopify, but not on the post-purchase page. Shopify only shows that page when the first payment was made by credit card, so a COD buyer goes straight to the thank-you page. That page is where the offer has to live, and the item can be added to the order the buyer just placed, to be paid at the door together with everything else.

The rest of this page explains why the usual setup fails for COD stores, what “added to the same order” means in practice, and what to check if a form app creates your orders.

Why the post-purchase page skips COD orders

The one-click page that appears between payment and confirmation charges the card the buyer just used, with no new payment form. That’s the whole trick, and it’s also the limit. Shopify’s documentation lists the cases where the page won’t display, and one of them reads: “The initial purchase was made with a gift card or any payment method other than a credit card.” (Shopify, About product offers, Limitations)

Cash on delivery is a payment method other than a credit card. There is nothing to charge again, so the page never renders. No app setting changes that.

What usually happens on the thank-you page

Every buyer reaches the thank-you page, COD included. Most upsell apps put an offer there, and most of them build it the same way: the button opens a cart or a new checkout with the item and the discount already in it.

For a card buyer that’s a mild annoyance. For a COD buyer it’s a dead end. They chose to pay at the door, often because they don’t want to pay online, and the button asks them to start a second checkout and pay online. If they do it anyway, you get a second order and you ship a second parcel.

Adding the item to the order that already exists

Shopify lets an app edit an order after it’s been placed: begin an edit, add a variant, apply a discount to that line, commit. The order total goes up and the order now has a balance due. (Shopify, Edit existing orders)

On a COD order the balance was already the full amount, so the added line simply joins it. The courier collects one amount for one parcel.

In Post Purchase Upsell Abakira this is a per-rule setting on the thank-you page, and it’s off by default because it commits a line to your order before anyone has paid for it. When it’s on, a COD buyer who taps the offer sees this, word for word:

The item was added to your order. You will pay for it together with the rest of your order.

A buyer who had already paid by card gets something different: they’re sent to Shopify’s own payment page for the difference, and only the difference. The app tells the two apart by reading what was still owed on the order before the edit. If nothing was owed, there’s a difference to pay now. If the whole order was owed, the new line waits for the door.

We tested both paths on real orders on our test store in August 2026. The COD path is the one that went: card shown, tap, line added with its discount, a second tap refused because an item was already waiting, then the order marked as paid and the line recorded as paid.

Things that behave differently on a COD store

A few details matter more when nobody pays upfront.

Only one pending addition per order. A buyer who taps, leaves, comes back and taps again shouldn’t stack lines on an unpaid order. The second tap is refused with a short message.

Cancelled and fully shipped orders are left alone. The app won’t add a line to either.

Unpaid additions on card orders get cleaned up, COD orders don’t. If a card buyer taps, the line is added and they never pay the difference, the app removes that line after 90 minutes so the order doesn’t ship half-paid. It only does this when the amount owed is exactly the added line. On a COD order the whole order is owed by design, so that cleanup never runs there.

If a warehouse system pulls your orders, the added line waits for payment. Our warehouse connector only pushes an added line once the order shows nothing outstanding. On a COD store that’s usually after delivery, which is too late to be in the parcel. If you run COD through a 3PL, talk to us before switching that connector on, because the right answer depends on how your warehouse handles unpaid orders.

If a form app creates your orders

Many COD stores don’t use Shopify’s checkout at all. Form apps that collect a name, a phone number and an address on the product page create the order directly, and some of them show their own confirmation page afterwards. A thank-you offer, ours or anyone’s, needs the buyer to land on Shopify’s thank-you page. If that’s your setup, place a test order and see which page you end up on.

Setting it up

  1. Build a funnel and open its thank-you tab.
  2. Add a rule aimed at buyers who never saw the one-click page. On a COD store, that’s every COD buyer.
  3. Switch the rule’s delivery to the existing order.
  4. Place an order with cash on delivery and tap the offer. Check the order in your admin: one order, the extra line with its discount, and a staff note saying where the line came from.

The thank-you page chapter of our guide has screenshots of the rule and the result.

Post Purchase Upsell Abakira has a free plan that runs on a live store. The listing has the current plans and what each one includes.


Sources: Shopify, About product offers (limitations of the post-purchase page) and Edit existing orders. Checked on October 6, 2026.


Written by Abakira. We make small software: Shopify apps, web tools and iPhone apps. This article is about Post Purchase Upsell Abakira.