zgZachery Gentry
← Require PO Numbers

GUIDE · SHOPIFY B2B

How to make the PO number required on Shopify B2B checkout.

Shopify’s B2B checkout always shows “PO number (optional)”. Here’s how to make it required, on any Shopify plan, without code.

Updated October 16, 2026

The short answer

Shopify has no setting that makes the B2B PO number required. To require it, a checkout validation (a Shopify Function) has to check the PO number when the buyer places the order and block the order if it’s empty. On Basic, Grow and Advanced plans, that function must come from a public app in the Shopify App Store. Gentry: Require PO Numbers is one: install it, choose a plan, click “Turn on”, and B2B orders can’t be placed without a PO number. Consumer checkout isn’t affected.

Why the PO number is optional

Shopify B2B lets a buyer enter a purchase order number at checkout, and it’s saved on the order. The field is optional for every store, on every plan, and there’s no checkout setting to change that. Checkout editor customizations can’t make it required either.

Your options

  • Any plan: a public app with a checkout validation. Since the Functions API version 2026-04, a cart and checkout validation can read the PO number (cart.poNumber) and show an error right under the PO field. Public App Store apps can run Functions on every plan.
  • Shopify Plus: a custom app. Plus stores can also build their own custom app with a validation function. Custom apps that contain Functions only run on Plus.
  • Workarounds without enforcement. Asking for a PO in a cart note or a custom field doesn’t stop an order without one, and the value doesn’t land in the order’s PO number.

Step by step with Gentry: Require PO Numbers

  1. Install the app. In the Shopify App Store, search for “Gentry: Require PO Numbers” and click Install. Approve the permissions (checkout rules and reading your B2B companies).
  2. Choose a plan. Shopify shows the plan page: Standard or Pro, each with a 14-day free trial.
  3. Turn the rule on. The app opens on its home page. Click “Turn on”. The status changes to On, and Shopify lists the rule under Settings › Checkout › Checkout rules as “Require a PO number on B2B orders”.
  4. Optional: write your message and rules. Click “Edit rule settings” to change the error message. On Pro, set a PO format, messages per language, and exceptions for companies or locations, then save.
  5. Check it. Log in to your store as a B2B customer, go to checkout and place an order with the PO number empty. The order is blocked and your message appears under the PO number field. Enter a PO number and the order goes through.

You need B2B set up first: at least one company with a location and a customer as its contact, and a catalog or the store’s default prices for that company.

What buyers see

Nothing changes while they shop or fill in checkout. When a B2B buyer places an order without a PO number, the order isn’t placed and a message appears under the PO number field. The default is “Enter a PO number to place this order.”, shown in the buyer’s language (English, French, German, Spanish, Italian, Dutch or Portuguese). You can write your own message instead.

Require a PO format or exempt companies

On the Pro plan you can also require a format: a minimum or maximum length, a prefix such as “PO-”, or a regular expression. For example, PO-\d{6} accepts PO-123456 and rejects 12345. Exceptions let a specific company or location skip the PO number or use its own format, and you can write messages for each checkout language.

Good to know

  • The field label still reads “PO number (optional)”. Shopify controls it; the rule is enforced anyway.
  • Only orders placed through checkout are checked. Orders staff create directly in the admin aren’t.
  • If the subscription ends, the rule stops blocking rather than locking buyers out.
  • The rule is listed in Settings › Checkout › Checkout rules, where you can turn it off at any time.

Questions? Email support