Description
Now with Checkout Blocks support!
What a purchase order payment gateway does
A purchase order (PO) is a buyer’s formal commitment to pay later. In B2B and public-sector buying it’s the normal way business gets done: procurement issues a PO number, the supplier delivers, and the invoice is paid on terms: Net 30, Net 60, or whatever the agreement says.
A purchase order payment gateway adds that flow to WooCommerce. Instead of forcing a card payment, it presents “Purchase Order” as a payment method at checkout, captures the PO number (and, if you want, the PO document itself), and records the order as unpaid so you can invoice through your normal process.
That’s the difference between losing a procurement-driven buyer at checkout and capturing the order. It’s also useful well beyond B2B: anywhere you need to take the order before you know the final price: custom quotes, manually calculated freight, made-to-order goods, or orders you want to approve before charging.
How it works
1. The customer chooses Purchase Order at checkout. They enter their PO number. If you’ve enabled the Upload add-on (sold separately), they can attach the PO document itself.
2. The order is placed On Hold. Everyone gets the normal order confirmation email, with your own configurable note explaining that payment hasn’t been collected yet.
3. You review, adjust and approve. Add the real freight cost, apply a negotiated price, or cancel the order, before any money changes hands.
4. You send the pay link. Change the order status to Pending, save, and resend the invoice email. The customer gets a link to a pay page pre-filled with their details, where every payment method except Purchase Order is available. Or skip it entirely and mark the order complete when their check arrives.

What you can do with it
- Capture PO numbers at checkout: with your own field labels and instructions
- Exclusive mode: hide every other payment method when Purchase Order is available, so approved buyers can’t accidentally pay by card
- Per-customer availability: turn off “enable for all users” and grant PO privileges on individual user profiles
- Configurable customer message: explain your terms in the confirmation email, in your words
- Deferred payment via the standard Woo pay page: no bolted-on checkout to maintain
- HPOS compatible: works with High Performance Order Storage, and falls back gracefully to legacy order storage if you haven’t migrated
- Block checkout support: including the newer WooCommerce checkout blocks
- Extensible by design: the conditional logic below is all add-on driven, so you buy only the control you actually need
Extend it for your workflow
The gateway handles PO checkout. The add-ons handle when it should appear, so a procurement customer sees it and a retail shopper never does.
| If you need to… | Add this | From |
|---|---|---|
| Have customers attach the actual PO document, optional or required, with file types you choose | Purchase Order Upload AddOn | $19.99/yr |
| Offer PO payment only to specific user roles (wholesale, education, government) | Gateway Roles AddOn | $19.99/yr |
| Offer PO payment only when certain products are in the cart | Product Filter AddOn | $14.99/yr |
| Offer PO payment only for certain product categories | Product Category Filter AddOn | $14.99/yr |
| Offer PO payment only with certain shipping methods (freight, LTL, pickup) | Shipping Filter AddOn | $14.99/yr |
| Get notified to a specific email address every time a PO order comes in | PO Admin Email AddOn | $14.99 |
Start with the gateway. Add the conditions your business actually uses, most stores need one or two.
How to choose a WooCommerce purchase order plugin
There are several ways to accept POs in WooCommerce, and the honest answer is that you don’t always need a paid one. Here’s the real comparison.
| This plugin | Woo’s official PO Gateway | Free plugins (GazChap, McGregor Media, Ahmad Wael) | |
|---|---|---|---|
| Price | From $49.99/yr | $49/yr | Free |
| PO number at checkout | Yes | Yes | Yes |
| PO document upload | Yes (add-on) | No | One of them offers it |
| Hide other payment methods (exclusive mode) | Yes | No | No |
| Availability by user | Yes | No | Varies |
| Availability by role | Yes (add-on) | No | No |
| Availability by product / category | Yes (add-ons) | No | No |
| Availability by shipping method | Yes (add-on) | No | No |
| Deferred pay link to collect later | Yes | No | No |
| HPOS support | Yes | Yes | Varies |
| Block checkout support | Yes | Yes | Often not |
| Support | Direct from the developer | Woo Happiness Engineers | Community forums |
Choose a free plugin if all you need is a PO number field on checkout and you’re comfortable with community support. They do that job, and they do it for nothing.
Choose Woo’s official gateway if you want a marketplace-backed extension with no configuration, and a PO number field is genuinely all you’ll ever need. It’s a solid, deliberately simple plugin; it adds the field, and that’s the scope.
Choose this plugin if PO payment needs to be conditional. If only your approved wholesale accounts should see it, if it should only appear for freight shipping, if you need the PO document attached, if you must hide card payment from procurement buyers, or if you need to price the order before collecting; that logic is what this plugin exists for. It shipped roughly a year before Woo’s, and the extensibility is the reason it’s still here.
Purchase orders, invoices and Net 30 terms
People search for this problem under a lot of names: pay by invoice, invoice payment gateway, Net 30 checkout, B2B payment terms. The underlying need is the same: let a trusted customer complete an order now and pay later.
This plugin is the checkout half of that workflow:
- Capture the commitment: order placed, PO number on file, nothing charged
- Invoice on your terms: through your accounting system, exactly as you do today
- Collect when you’re ready: send the pay link for card/ACH, or mark it paid when the check clears
It deliberately doesn’t try to be an ERP. There’s no credit-limit engine or automated dunning, because most stores that think they need one actually need a reliable way to take the order and control who can defer payment. If you need full credit management, a B2B suite is the right tool, and you can still run this alongside it for the checkout piece.
Requirements and compatibility
- WordPress 5.0 or higher
- WooCommerce 3.0 or higher, tested to 11.x
- PHP 7.0 or higher
- HPOS: supported, with graceful fallback to and migration from legacy order storage
- Checkout blocks: supported
- Licensing: single site, 2–5 sites, or unlimited; includes 1 year of updates and support
Hitting a conflict with another plugin? Send a WooCommerce System Status Report (WooCommerce → Status) and I’ll usually make the two play nicely together.
Frequently asked questions
How do I add a PO number field to WooCommerce checkout?
Install the plugin and enable the Purchase Order payment method in WooCommerce → Settings → Payments. The PO number field appears when a customer selects that method at checkout, and you can relabel the field and its instructions.
Can I hide the other payment methods when Purchase Order is selected?
Yes, that’s the “mutually exclusive” setting. When PO is available to that customer, it’s the only method shown. The other methods come back on the pay page later, so you can still collect by card when you’re ready.
Can I restrict purchase order payment to certain customers?
Yes. Turn off “enable for all users” and grant PO access per user profile. For whole groups of customers, the Roles AddOn controls availability by WordPress user role.
Can I limit it to specific products, categories or shipping methods?
Yes, with the Product Filter, Product Category Filter and Shipping Filter add-ons. Common setup: PO payment appears only when freight shipping is selected, or only for wholesale SKUs.
Is it HPOS compatible?
Yes. It works with High Performance Order Storage and falls back gracefully to legacy post storage, migrating data as needed when you switch.
Does it work with the new block checkout?
Yes, the gateway and the Upload AddOn both support WooCommerce checkout blocks.
Can customers upload their purchase order document?
Yes, with the Upload AddOn. You choose whether the upload is optional or required and which file formats you accept.
How do I get paid after the order is placed?
Either set the order to Pending and resend the invoice email so the customer gets a pay link, or mark the order complete when you receive payment offline by check or bank transfer.
Do I need the add-ons, or is the base plugin enough?
The base gateway is enough to accept POs and control availability per user. Add-ons are for conditional logic and document upload, buy them only if you need that behavior.
What support do I get?
Direct support from me, the developer, for a year. Replying to your order confirmation email is the fastest route.
Start accepting purchase orders this week
Install it, enable the payment method, decide who gets to use it. Most stores are live in under an hour.
Not sure it fits your workflow? Ask before you buy. Pre-sales questions get answered by the person who wrote the code.
High Performance Order Storage (HPOS) Support
As of WooCommerce v8.0, HPOS has been the default. This stores order data in tables separate from the standard wp_post tables. If you’re still using Legacy Orders, this plugin will gracefully fall back to the legacy order storage, and when you migrate to HPOS, it will gracefully migrate the data as needed. 30









