A merchant wants to offer manual payment methods (cash, e-transfer) only for local pickup orders, not for shipped orders, but Shopify lacks native functionality to conditionally show/hide payment options based on delivery method.
Official Workaround:
Shopify staff confirmed no built-in feature exists for this
Suggested naming the manual payment method clearly (e.g., “PAY AT PICKUP - FOR LOCAL PICKUP ORDERS ONLY”) in bold to deter misuse
BeSure Checkout Rules: Create rules to hide payment methods when specific shipping methods are selected
PayRules: Hide Payment Methods: Configure to hide manual payments unless “Local Pickup” is chosen
Status:
The discussion remains open with no native Shopify solution available. Merchants must either rely on clear labeling (which doesn’t prevent selection errors) or install paid apps. Custom coding is mentioned as an alternative but noted as potentially expensive and time-consuming.
Summarized with AI on November 9.
AI used: claude-sonnet-4-5-20250929.
I’ve added manual payments as an option to my checkout so that customers who are doing local pickup have the option to pay cash or E-transfer instead of paying online. However, I only want to provide this option to someone who has selected “Local Pickup” as their delivery method. I don’t want to offer manual payments to someone who is ordering a delivered item. Is there a way to hide the manual payments option from customers who are ordering a product with shipping?
I’m open to installing an app to do this, but would prefer not spending money to solve this. I would have thought this would be a basic option within Shopify itself.
At this time, we do not have the built-in functionality to show/hide payment methods depending on if the customer selects pickup or shipping at checkout. I understand how that would be a great feature for merchants like yourself to have in order to gain that level of flexibility with your payment needs. I’d be happy to pass this along as feedback up to our developers for potential future implementation.
In the meantime, I have a workaround you can use that should prevent the issue in most cases, which would be someone selecting shipping and then the manual payment method. When you set up a manual payment method, you have the option to create a custom one and give it a name. In the name, you can provide details on who should be selecting the payment method. This will help deter people from making a mistake.
For example, you can give your custom method a name such as “PAY AT PICKUP - FOR LOCAL PICKUP ORDERS ONLY”. That way, the customer will see that in big, bold letters so that they can select the appropriate method. From there, you can add further information about the methods of payment you accept at pickup. I’ve shared a screenshot of the setup in my test store:
Hi Dirk, thanks for the workaround however customers can still select the cash payment option when selecting the delivery option which poses a real risk that they won’t pay etc. Is there any progress on adding this as a feature please? Would be incredible beneficial
Now you can easily do this using the BeSure Checkout Rules app. Here are the steps after installing the app,
Create a rule for “Hide payment methods”. Select the trigger of “Selected Shipping Method”, so this rule will only trigger when a particular shipping method is selected.
Then enter the names of the payment methods you want to hide. It should look something like this,
Hi Owen, you can do it without using an app if you can go for custom coding. If custom coding is expensive and time consuming for you, you can utilize PayRules: Hide Payment Methods app to hide the manual payments like Pay cash or E-transfer if the customer didn’t select the “Local Pickup” as their delivery method. Here is how you can do it using the app:
Write Pay cash,E-transfer in the Additional payment methods field.
Choose Hide if not found and Local Pickup from the Delivery types field options like the below screenshot.