How to disable Cash on Delivery (COD) for customers with more than one active order

Hi everyone,

I want to restrict the Cash on Delivery (COD) option on my Shopify store.
My requirement is: if a customer already has one pending or unfulfilled order, they should not be able to place another order using COD.

Basically, COD should be available only for the first order, and disabled automatically for repeat customers with active orders.

Is there a way to achieve this using Shopify Flow, custom script, or any app suggestion?

Thanks in advance!

Hello @PrizmAura ,

I hope you are well!

If you are Shopify plus, you can do the setup using custom script or app. If you don’t, Shopify dosen’t allow to add the custom script to the other plans.

Also, you can check the apps like
1.) COD King‑COD Fees & OTP Verify - COD Order verification and Partial Payments for shopify | Shopify App Store
2.) PayRules: Hide Payment Methods - PayRules Hide COD or any payment methods at Shopify checkout | Shopify App Store

Also, before purchasing any app, I would recommend you to take a demo with them. It will be helpful for understanding the capablities of the app.

Hello @PrizmAura

Unfortunately, this isn’t possible with Shopify settings alone. You need checkout logic (Functions) that checks a customer condition and hides COD / blocks checkout.

Full disclosure: I built RulePilot, it supports conditional payment hiding + validation messages at checkout. You should be able to hide Cash on Delivery (COD) option on your Shopify store using the condition Customer Order Count > 0.

This is a smart way to manage risk. However, it’s important to note that Shopify does now allow you to dynamically hide payment methods on the Payment page based on customer order history using standard settings or Shopify Flow.

Here are three ways to achieve this logic:

  • Use a checkout Extensibility App best for Shopify Plus
  • Use a Specialized COD Management App best for Non-Plus
  • The Shopify Flow + Tagging Workaround

Hi @PrizmAura

If you are on Shopify Plus, you can use this simple solution.

Step 1: Mark customer with tags who are having pending/unfulfilled orders.

Step 2: Remove tag when order is fulfilled.

Step 3: Ultimately, you’ll have a separate group of customers identified by the pending_order tag. You can then use this tag in Payfy to conditionally hide specific payment methods during checkout.

Hope that helps!

Thanks,
Kev

Shopify Flow runs post-order, so it can’t prevent COD selection at checkout.

COD Blacklist app can hide COD or block checkout in real time for customers who already have an active/pending order, preventing multiple COD orders before a previous one is marked as paid.