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?
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.
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
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.
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.