Require PO number on B2B checkout

B2B checkout can skip a purchase-order number unless a validation rule requires it

Job: reject a company checkout when the purchase-order number is missing or fails the format you publish.

Shopify B2B on Grow already includes catalogs, a PO number field, and Net Terms. There is no no-code “required PO” toggle. Purchase-order required is a checkout validation rule (Shopify Functions cart.poNumber, available since 1 April 2026). People still cite missing company-level catalog assignment, deposits, and buyer approval as native gaps.

Native Net Terms control how the company pays. They do not check PO format, prefix, length, or uniqueness. Wholesale buyers can then skip the box, type junk, or reuse a number.

This is the PO-number job, not a postal PO Box block. D2C and no-company checkouts stay out of the way. Preview a sample number, publish the rule, then test a blocked and an allowed company checkout.

Install, turn on the PO rule, then prove one required checkout

The paid path is a B2B checkout that requires the PO / terms fields you chose, not a soft note on the order confirmation.

  1. Install B2B Terms & PO Guard from the App Store.
  2. Open the app and enable the PO / terms requirement on the B2B path this guide documents.
  3. Test once without a PO (must block or hold) and once with a valid PO (must pass).

If the rule never fires on a real B2B checkout, Install alone is not the proof. Keep the first successful required checkout as your operating example before you widen company locations or markets.

Install B2B Terms & PO Guard → enable PO rule → test required vs allowed

Demo

Short walkthrough of the app flow. Then follow the start path below.

Open the demo on YouTube

Three different checkout jobs - do not mix them

Three checkout jobs that must not be mixed
Job Field / surface Native gap
Required valid PO number (this page) Company purchase-order string at B2B checkout Net Terms do not validate format/prefix/uniqueness
Block PO Box on billing Card billing address Shipping-only address format rules do not cover billing
Net Terms / deposit / review How the company pays; order size holds Separate controls - they do not parse the PO string

A purchase-order number is a buyer’s order reference on a B2B invoice. A PO Box is a postal address type. Blocking PO Box on billing is a different app path (address-guard). Do not copy address rules onto the PO field.

Suggested path:

  1. Install B2B Terms & PO Guard.
  2. Set required / format / prefix / regex / length / uniqueness. Preview against a sample number.
  3. Optionally add deposit or review thresholds (extra controls, not a PO substitute).
  4. Two company tests: missing or junk PO must error; matching number must pass. Confirm a D2C cart is untouched.
  5. Roll back if the live rule is wrong.

The app validates the number you configure. It does not underwrite credit.

Install B2B Terms & PO Guard - set PO format rules, preview a sample number, publish, then test a blocked and an allowed company checkout.

Start path: required PO number on company checkout

  1. Open the B2B Terms & PO Guard listing (apps.shopify.com/b2b-terms-guard) and install it.
  2. Set PO rules: required, format, prefix, regex, length, uniqueness. Preview against a sample number before you publish.
  3. Optionally set deposit percentage guardrails and a review threshold for oversized orders. Those are extra controls, not a substitute for a required PO.
  4. Place two company checkouts: a missing or junk PO (must error) and a matching number (must pass). Confirm a D2C cart is untouched. Roll back if the live rule is wrong.

The app validates the number you configure. It does not underwrite the buyer’s credit.

Install, then require a valid PO number

Native terms vs a required PO number

Native terms vs a required PO number
Control What it sees Required valid PO?
Grow catalogs / PO field / Net Terms Catalogs, an optional PO box, how the company pays No no-code required toggle. No format, prefix, or uniqueness check
Optional PO field with no rule Whatever the buyer types, including blank No
Deposit / review thresholds Order size or unpaid-deposit methods Separate job; does not parse the PO string
Checkout validation on the PO field Company purchase-order number at checkout Yes, if the published rule requires a match

Example rule you preview before publish (paraphrase, not a live regex):

required: yes
prefix: PO-
length: 8–16
unique per company
sample: PO-48219  → pass
sample: (blank)    → error
sample: TEST       → error

People still cite native gaps beyond a required PO: company-level catalog assignment, deposits, and buyer approval. This page does not invent a no-code required toggle. Deposit and review controls on the listing are extra, and they do not replace a required PO string. Confirm the live listing, not this page.

What this page is not

Does native B2B Net Terms require a valid purchase-order number?

No. Grow already includes catalogs, a PO number field, and Net Terms. There is no no-code required toggle. Native company payment terms control how the company pays. They do not validate PO number format, prefix, regex, length, or uniqueness. A buyer can leave the box empty, type junk, or reuse a number unless a checkout validation rule rejects that input.

Will a required PO number also hit D2C checkouts?

It should not. The job on this page is company / B2B checkout only. D2C and no-company carts stay on ordinary checkout. If a retail buyer sees a wholesale PO rule, the rule is on the wrong surface.

Is a purchase-order number the same as a PO Box address?

No. A PO number is a buyer’s order reference on a B2B invoice. A PO Box is a postal address type. Blocking PO Box on billing is a different checkout job. Do not copy address rules onto the PO-number field.

Can I preview a PO rule before it blocks live checkouts?

Yes. Preview format, prefix, regex, length, and uniqueness against a sample number before you publish. Then place a company checkout with a bad number (must error) and a matching number (must pass). Roll back if the live rule is wrong.

Do deposit guardrails and order review replace a required PO number?

No. Deposit percentage limits and “hold orders above a threshold for approval” are separate controls. They can sit next to a required PO number. Hiding unpaid-deposit payment methods at checkout is a Plus B2B path; PO validation and review routing are described as working on every plan.

Does requiring a PO number guarantee the buyer will pay?

No. It only rejects numbers that fail the published rule. It is not credit insurance, not a chargeback guarantee, and not legal advice. Pair it with the Net Terms and review process you already use.

How do I require a PO number on B2B checkout?

Publish checkout validation that reads the company purchase-order field and returns an error when the number is missing or fails format, prefix, regex, length, or uniqueness. B2B Terms & PO Guard is the App Store listing this site already uses for that job. Open the listing, set rules, preview a sample number, then publish and test a blocked and an allowed checkout.

Install B2B Terms & PO Guard - set PO format rules, preview a sample number, publish, then test a blocked and an allowed company checkout.

Related pages

Not credit insurance. Not a PO Box shipping rule. Native Net Terms do not validate PO format. Preview a sample number before you leave a rule published.