B2B PO uniqueness
Native Net Terms do not stop a reused PO number — uniqueness is a separate checkout rule
Shopify's native Net Terms do not reject a PO number that was already used; you need a checkout validation rule that checks the PO number against previously used numbers and blocks the company checkout when it matches. B2B PO Guard — Require PO validates PO numbers by format, prefix, regex, length, and uniqueness, and previews any PO rule live against a sample number before you publish.
B2B PO Guard — Require PO (Shopify App Store) validates purchase-order numbers by format, prefix, regex, length, and uniqueness, previews a PO rule against a sample number before you publish, sets deposit percentage guardrails, and routes oversized B2B orders for review. It works alongside native Net Terms. D2C and no-company checkouts stay untouched. Free includes one live PO rule with a monthly order cap. Deposit guardrails and review routing are paid features. This page is not legal advice.
Related: PO Box Blocker — AddressFence — Free blocks PO Boxes and parcel lockers on the shipping address at checkout, plus a small set of ZIP rules. Street-number checks and billing-address rules are on a paid plan.
Free check first: PO number format tester runs in your browser and sends nothing. Test prefix, length, characters, regex and duplicates on sample PO numbers.
Uniqueness is not the same job as “PO required” or Net Terms
Native company payment terms control when the company pays. A required-PO rule rejects empty or malformed strings. Uniqueness rejects a number the buyer has already used — format/prefix/regex/length can still pass while a duplicate slips through unless uniqueness is part of the published rule. Preview a sample number before you publish.
Install B2B PO Guard — Require PO
How to add uniqueness to the PO rule
- Draft the PO rule with format, prefix, regex, length, and uniqueness as you need them.
- Preview the rule live against a sample number (including a known reuse) before publish.
- Publish for company checkout; D2C and no-company checkouts stay untouched.
- Keep Net Terms, deposit %, and order-review holds as separate jobs when you need them.
Install B2B PO Guard — Require PO
Not the same as require-PO, deposit %, order review, or D2C no-op
- Require a PO string — empty/junk rejection overview. See B2B PO number required.
- Live preview before publish — sample-number simulator. See PO rule live preview.
- Deposit % — not uniqueness. See deposit percentage at checkout.
- D2C no-op — rules must not fire on D2C. See B2B D2C no-op.
Install B2B PO Guard — Require PO
What this page is not
- Not credit insurance or a chargeback guarantee.
- Not native Net Terms, and not a payment gateway.
- Not a substitute for the require-PO, preview, deposit, or D2C siblings.
Install B2B PO Guard — Require PO
Paste a list of sample numbers into the free PO number format tester to see which ones repeat.
Related pages
- B2B checkout can skip a PO number unless a rule requires it
- Preview a Shopify B2B PO rule before you publish
- B2B deposit percentage at checkout
- B2B PO Guard — Require PO
Not credit insurance. Native Net Terms do not validate PO uniqueness. Preview a sample number before you leave a rule published.