Plugin documentation

Purchase Order Number for WooCommerce Checkout

Free 0.1.3 and Pro 0.1.3 setup, testing, billing, privacy, troubleshooting, rollback, and StoreFixKit Support.

Free 0.1.3 and Pro 0.1.3 documentation.

Purchase Order Number collects one customer-supplied reference through WooCommerce's supported additional checkout field API and preserves it on the order. It is not a purchase-order payment gateway and does not approve credit, create an invoice, change totals, or change order status.

Requirements

Component Requirement
WordPress 6.2 or newer
PHP 7.4 or newer
WooCommerce 8.9 or newer, active
Checkout surface Supported native classic or block checkout

Install and configure Free

  1. Install and activate WooCommerce.
  2. Install Purchase Order Number for WooCommerce Checkout from WordPress.org after its directory listing is approved, or upload the supplied Free 0.1.3 ZIP.
  3. Open WooCommerce > PO Number.
  4. Confirm the notice says WooCommerce checkout field support is available.
  5. Choose Optional or Required.
  6. Enter a short field label such as Purchase order number.
  7. Select Save PO field.
Purchase Order Number settings with Optional or Required mode and field label
Free keeps the decision to one field mode and one bounded shopper-facing label.

Test checkout and the saved order

  1. Use a disposable product and customer account.
  2. Open the store's native checkout.
  3. Confirm the PO number field appears under the order section.
  4. If the field is required, submit once while empty and confirm WooCommerce blocks only that checkout request with a field error.
  5. Enter a recognizable test value of 64 characters or fewer and place the order.
  6. Open the order as an authorized WooCommerce manager and confirm the same escaped value appears under Purchase order number.
  7. Compare payment method, total, status, addresses, items, stock, and notes with the expected WooCommerce result.
WooCommerce checkout with a Purchase order number field
WooCommerce renders and validates the registered field on the supported native checkout.
Mobile WooCommerce checkout with the Purchase order number field
The native field remains readable and usable on a narrow checkout viewport.
WooCommerce order screen showing the saved purchase order number
The escaped reference is visible to an authorized WooCommerce manager without changing payment or status.

What Free changes

Free registers one storefixkit/po-number text field through WooCommerce's additional checkout field API. WooCommerce saves the sanitized value with the order. The plugin displays the stored value on the authorized administrative order screen.

The field is plain text and limited to 64 characters. Free does not add a payment method, payment terms, credit approval, signatures, invoices, accounting integration, tax behavior, or a general checkout field builder.

What Pro adds

Pro can set the field to Use Free setting, Optional, Required, or Hide the field for guest checkout and up to 19 named WordPress user roles. It can also add one plain-text help sentence of 160 characters or fewer.

Purchase Order Number Pro settings with customer type choices and help sentence
Customer choices are named and finite; there is no rule expression or arbitrary code field.

With an active product-bound license, Pro can display the saved PO number in WooCommerce order emails and authorized native My Account order details. It does not send an email, bypass order authorization, or expose a public order lookup.

Start the 14-day Pro trial

  1. Open the PO Number product page.
  2. Select Start 14-day trial. No card is required to begin.
  3. Stripe returns to the StoreFixKit success page; the signed webhook creates a product-bound single-site license.
  4. Copy the key and download the Pro 0.1.3 ZIP.
  5. Add a payment method before day 14 only if you want the $79/year subscription to continue. Without one, Stripe cancels it at trial end.

Keep WooCommerce and Free active. Upload and activate Pro, paste the key in WooCommerce > PO Number, and select Activate Pro. If Pro, billing, or the license API is unavailable, Free keeps collecting and preserving the configured field locally.

Privacy, security, and resource use

  • Settings require manage_woocommerce and WordPress nonces.
  • WooCommerce owns checkout rendering, required-field handling, sanitation callback execution, and order persistence through its supported API.
  • The value is plain text limited to 64 characters and escaped on every StoreFixKit output.
  • The administrative value requires WooCommerce management permission; customer output uses WooCommerce's already-authorized order details.
  • There is no custom table, cron job, order scan, telemetry, customer cookie, frontend asset, accounting request, or checkout StoreFixKit request.
  • Payment, totals, taxes, status, addresses, line items, stock, notes, gateways, invoices, and customer roles are never written.

Troubleshooting

The settings page says checkout field support is unavailable

Update WooCommerce to 8.9 or newer and confirm it is active. The plugin deliberately leaves checkout unblocked when the supported API is unavailable rather than injecting an untested replacement field.

The field is missing from checkout

Confirm the checkout is a supported native classic or block checkout and the saved mode is not hidden. If Pro is active, check the current guest or user-role choice. Temporarily test without a checkout replacement or page-builder checkout.

Required does not apply to one customer

If Pro is active, that customer's role may override the Free setting. Open WooCommerce > PO Number, find the named customer type, and choose Use Free setting or Required.

The value is missing from email or My Account

Those customer displays require active Pro and a saved non-empty order value. Confirm the email was generated after checkout, the user is viewing an order WooCommerce authorizes for that account, and the email or checkout customization still runs the native WooCommerce hooks.

I need payment by purchase order

This plugin is intentionally not a gateway. Use a separately reviewed payment or invoicing workflow for payment terms, credit approval, tax, accounting, and fulfillment decisions.

Rollback

  1. Back up the database and both current ZIPs.
  2. Record a disposable order's PO number, payment, total, status, addresses, items, stock, and notes.
  3. Deactivate Pro, then Free. New checkout fields disappear; the historical order value remains.
  4. Install the tested Free 0.1.0 and Pro 0.1.0 baseline ZIPs.
  5. Activate Free first, then Pro, and place another disposable native checkout order.
  6. Confirm both historical and new StoreFixKit values without changes to WooCommerce business data.
  7. To return to the current release, repeat the process with 0.1.3.

Versions 0.1.0 and 0.1.3 use the same WooCommerce-owned field key and require no schema migration.

Uninstall

Default uninstall preserves settings and historical order values so an accidental deletion does not erase business references. To erase only StoreFixKit-owned settings during uninstall, define STOREFIXKIT_DELETE_DATA as true before deleting the plugins. Free then removes sfk_pon_settings; Pro removes sfk_pon_pro_rules and sfk_pon_pro_license.

Historical _wc_other/storefixkit/po-number order values remain preserved. WooCommerce payments, totals, statuses, addresses, items, stock, notes, gateways, invoices, users, and customer data are never deleted.

StoreFixKit Support

Use StoreFixKit Support and include a disposable order ID, expected and actual field behavior, whether checkout is classic or block, guest or redacted user role, Free and Pro versions, WordPress and WooCommerce versions, theme, checkout or email customizer, cache state, and screenshots. Replace the real PO number with a test value. Never send credentials, customer addresses, payment details, accounting exports, API keys, or a full license key.