Shopify guide

Hide or show a payment method based on customer tags in Shopify (invoice only for B2B)

Shopify shows a manual payment method like "Pay by invoice" to every customer — or to nobody. If you want it only for wholesale, B2B or returning customers, you need a payment customization: tag the customer, hide the method for everyone without the tag. Works on every Shopify plan, but only through an app.

Last updated: · Kevin Metzdorf

In short

“Pay by invoice”, “Net 30”, “Purchase order” — in Shopify these are manual payment methods. They are either active for all customers or for none; there is no setting for “wholesale only” or “returning customers only”. The fix is a payment customization (a rule that runs at checkout): customers get a tag, the rule hides the payment method for everyone without that tag. These rules run as a Shopify Function on any plan — but only through an app from the App Store.

The problem, in merchants’ words

The Shopify Community has asked this for years in every variation: “Hide or show payment method based on customer tags”, “different payment methods for B2C and B2B customers”, “restricting payment method based on customer tag/email”, “hiding payment methods from certain customers while using a wholesale pricing app”. The reason is always the same: invoice or net terms are essential for trade customers — and a risk with everyone else.

The native way in Shopify

Create the manual payment method: Settings › Payments › “Manual payment methods” › “Create custom payment method”. Name it (e.g. “Pay by invoice”), add details and payment instructions, activate. Orders arrive as “Payment pending” until you mark them paid.

Tag your customers: Customers › open a customer › Tags, e.g. b2b or wholesale. In bulk via the customer list or CSV import.

That’s it — Shopify offers nothing more here. The tag exists, but nothing links it to the payment method.

Where Shopify stops

  • Manual payment methods have no conditions. The settings offer no field for country, customer, cart total or tag. Active means visible to everyone.
  • Shopify’s own solution is Plus-only. Shopify’s “Checkout Blocks” app can hide payment methods by customer tag — but only on the Shopify Plus plan. On Basic, Shopify and Advanced the feature stays locked.
  • Workarounds are clumsy. Draft orders with invoice payment created by hand, a second store just for wholesale, a password-protected section — all real answers from the Community, all with extra effort and no clean checkout.

The Help Center says it plainly: to hide, rename or reorder payment methods, install a payment customization app from the Shopify App Store. Public apps with Shopify Functions run on every plan.

How a payment rule solves it

The rule is a single line:

When the customer does not have the tag b2b or wholesale, then hide “Pay by invoice”.

What the customer sees: a first-time buyer gets PayPal, credit card, Klarna and bank transfer. The tagged wholesale customer additionally sees “Pay by invoice” — and, if you want, at the top and pre-selected.

Technically the rule uses Shopify’s Payment Customization Function: at checkout Shopify hands the Function the customer’s tags (customer.hasAnyTag), the Function answers with “hide”. That happens on Shopify’s infrastructure, without a detour via third-party servers, without touching the theme. Uninstall the app and checkout is back to default.

Variations with the same mechanism:

GoalRule
Invoice only for wholesaletag wholesale missing → hide invoice
Bank transfer only for new customerstag returning present → hide bank transfer
Direct debit only for approved accountstag debit-ok missing → hide direct debit
Invoice from the second order onwardsnumber of previous orders < 1 → hide (the Function exposes numberOfOrders)
Net terms only for Shopify B2B companiesno purchasing company → hide (Plus B2B)

Things to watch

  • Spell tags exactly. B2B and b2b are two different tags — pick one convention.
  • Guest checkouts have no tags. Customers who want invoice payment need to log in or check out with their known email address.
  • Draft orders are excluded: Shopify does not apply payment customizations to draft orders — where you can set invoice payment by hand anyway.
  • Limit: Shopify allows up to 25 active payment customizations per store across all apps. This rule needs one.

Frequently asked questions

Can I offer a payment method only to certain customers in Shopify?

Not with built-in settings. Manual payment methods in Shopify always apply to all customers. With a payment customization (an app from the App Store) you hide the method for everyone who does not carry a specific customer tag — for example "b2b" or "wholesale".

Do I need Shopify Plus?

No. Public apps built on Shopify Functions run on every plan (Basic, Shopify, Advanced, Plus). Only Shopify's own "Checkout Blocks" app limits payment rules to Plus.

How do I tag customers?

In the Shopify admin under Customers › open a customer › Tags. For many customers at once: select them and use "Add tags", or import a CSV. Tags are invisible to customers.

What does a guest customer see?

As long as Shopify doesn't recognise the customer at checkout, there are no tags — the rule treats them like a new customer and hides the method. Once they log in, or Shopify matches their email address, their tags apply.

Does this also work with Shopify B2B companies?

The Function input also exposes the purchasing company (Shopify B2B, Plus). For stores without Shopify B2B, customer tags are the practical way to mark wholesale accounts.

Sources

  1. Shopify Help Center: Manual payment methods
  2. Shopify Help Center: Customizing payment methods and delivery options at checkout
  3. Shopify Help Center: Checkout Blocks — payment methods (Plus note)
  4. shopify.dev: Payment Customization Function API (customer.hasAnyTag, purchasingCompany)
  5. Shopify Community: "Hide or Show Payment method based on the customer tags"
  6. Shopify Community: "How to set different payment methods for B2C and B2B customers?"

No off-the-shelf solution fits?

25 minutes, free of charge. We look at your checkout together — afterwards you'll know whether an app is enough or you need a custom solution.