Skip to Content
Account
Enter the email address on your account.
Forgot Your Username?
Enter your password.
Forgot Your Password?

Or continue with

J2Commerce 6

Purchase Order Payment

9 Min Read
On This Page

The Purchase Order Payment plugin adds a Purchase Order option to your store's checkout page. It is designed for B2B stores that sell to business customers who pay on account — the customer enters their company's PO number at checkout, places the order, and you collect payment offline through your normal invoicing process.

No money moves through any payment gateway. The plugin simply records the PO number, creates the order with an admin-chosen status (typically Pending), and lets you confirm payment manually in the admin panel when the funds arrive.

Info

This plugin has no API keys, no sandbox, no redirect, and no cron requirement. Setup takes just a few minutes.

Requirements

  • Joomla 6.x
  • J2Commerce 6.x
  • PHP 8.3 or later
  • The Purchase Order Payment add-on (separate download — see below)

Purchase and Download

This plugin is a separate add-on available from the Purchase Order Payment. It is not included with the core J2Commerce 6 component.

  1. Go to the J2Commerce website and locate Purchase Order Payment.
  2. Add it to your cart and complete checkout.
  3. Go to My Downloads under your account profile.
  4. Click Available Versions -> View Files -> Download Now to download the ZIP file.

Installing the Plugin

You can install this Purchase Order Payment plugin using the Joomla installer. The following steps help you with a successful installation.

In the Joomla admin, go to System -> Install -> Extensions

Upload the payment_purchaseorder.zip file or use the Install from URL option.

Joomla System Dashboard with System in the sidebar and the Install section's Extensions link highlighted, used to upload a plugin package

Enable the Plugin

Once you have installed the extension, you will need to enable it. There are two ways you can access the extension.

Option A: Go to the J2Commerce icon at the top right corner -> Setup -> Payment Methods

Option B: Go to Components on the left sidebar -> J2Commerce -> Dashboard -> Setup -> Payment Methods

Payment Methods list with a 1 item(s) published message, opened through Components and the J2Commerce menu: Setup and Payment Methods highlighted

Look for Purchase Order Payment, click the X, and it will turn into a green checkmark. It is now enabled and ready for setup.

Joomla Payment Methods list searched for "purchase", with the Purchase Order row's Status checkmark highlighted as enabled

Configure the Plugin

Click Purchase Order to open the settings screen.

Tip

Click the Toggle Inline Help button at the top of any plugin settings screen to show a description below each field.

Purchase Order plugin toolbar with Toggle Inline Help highlighted and help text shown under the Display Name field, Status Enabled

Appearance

Purchase Order plugin, Plugin tab highlighted: Display Name Purchase Order, an empty Display Image picker, Status Enabled, Access Public

Display Name: The name shown to customers at checkout. Defaults to Purchase Order. You can change this to match your terminology — for example, "Pay by Purchase Order" or "Account / Invoice."

Display Image: An optional logo or image shown next to the payment method at checkout. Leave blank to show no image.

Purchase Order Number

Purchase Order plugin settings: Show Input Field Yes, Require PO Number Yes, Restrict by User Group Never, Confirmed Order Status Confirmed, Geo Zone Restriction All

These settings control whether and how customers enter their PO number at checkout.

Show Input Field: Show the PO number input box when the customer selects this payment method

Require PO Number: Customer must enter a PO number before placing the order

Restrict by User Group: When on, the PO number is required only for specific user groups — everyone else can check out without one. Only visible when Require PO Number is Yes.

User Group(s): The user groups that must supply a PO number. Only visible when both Require PO Number and Restrict by User Group are Yes.

Info

Guest customers are never counted as members of a required group. If Restrict by User Group is on, guests can always check out without entering a PO number regardless of which groups are selected.

Order Status

Confirmed Order Status: The J2Commerce order status applied when the order is placed using this method. Set this to your "Pending" or "Awaiting Payment" status. You will change it manually to a paid status once you receive the actual payment.

Info

NOTE: If the order status you want isn't listed in the dropdown menu, you can create a new one by going to J2Commerce -> Setup -> Order Statuses

J2Commerce Order Statuses list with the J2Commerce menu open at the right, highlighting Setup and its Order Statuses item

Geozone

Geozone Restriction: Limit this payment method to customers in a specific geozone — leave blank to allow all locations

Surcharge

Purchase Order plugin surcharge fields: empty Surcharge Name, Percent and Fixed, with Surcharge Tax Class set to Not Taxable

Add an optional handling fee when a customer chooses Purchase Order.

Surcharge Name: The label shown to the customer — for example, "Purchase Order handling fee"

Surcharge Percent: A percentage of the order subtotal added as a fee

Surcharge Fixed: A fixed amount added regardless of order size

Surcharge Tax Class: A tax profile to apply to the surcharge — leave blank if no tax applies

Leave both Surcharge Percent and Surcharge Fixed empty to charge no surcharge.

Order Value Restrictions

Purchase Order plugin order value limits: Minimum Subtotal 0.000 and Maximum Subtotal -1.00 (no maximum)

Minimum Order Subtotal: Hide this option when the cart subtotal is below this amount (0 = no minimum)

Maximum Order Subtotal: Hide this option when the cart subtotal is above this amount (-1 = no maximum)

Warning

Leave Maximum Order Subtotal at -1 for no limit. Saving a blank value is treated as zero, which hides the payment method for all orders with any items in the cart.

Custom Messages

Purchase Order plugin messages: Thank You Article picker, empty On Selection, Before Payment, After Payment, On Error and Help Text boxes, Button Text language key

Thanks Message: Select an optional Joomla article to display on the order confirmation page after the customer places their order. Use this to give customers instructions on what happens next — for example, "Our team will review your purchase order and send a formal invoice within one business day."

These optional text areas let you show a message to the customer at each stage of the payment process.

Selection Text: When the customer selects Purchase Order at the checkout payment step

Before Payment Text: Just before the customer clicks the Place Order button

After Payment Text: On the order confirmation page after the order is placed

On Error Payment Text: If an error occurs during order processing

Button Text: The label on the checkout submit button. Defaults to Place Order.

Help Text: Optional descriptive text displayed beneath the PO number field at checkout — for example, "Enter the purchase order number from your procurement system." Leave blank to show no additional text.

Template Layout

Purchase Order plugin settings: Template Style set to Bootstrap5 and Debug set to Never

Template Layout: The checkout layout template. Leave on the default (bootstrap5) unless you have a custom layout installed. The plugin includes layouts for both Bootstrap 5 and UIkit frontends.

Debug Mode

Debug: When turned on, the plugin writes a diagnostic log to administrator/logs/plg_j2commerce_payment_purchaseorder.log.php. Only enable this when diagnosing a problem — disable it on live sites.

How Checkout Works for Customers

The customer adds items to their cart and proceeds to checkout.

At the payment step, they select Purchase Order from the list of payment methods.

Checkout Payment Method list with Purchase Order selected and highlighted below Stripe and Kustom Pay options, Continue button below

If Show Input Field is on, a PO number field appears. If the field is required (for their user group), they must enter a value before continuing.

Checkout confirm step with the Purchase Order section highlighted: a Purchase Order Number field filled with a test value and a Place Order button, beside the order summary

The customer clicks Place Order.

The order is created immediately and they see an order confirmation page. If a Thanks Message article is configured, it appears here.

No redirect happens — the customer stays on your site throughout.

The order is placed in the status you configured in Confirmed Order Status and waits for you to confirm receipt of payment.

Confirming Payment (Admin)

When the actual payment arrives — by bank transfer, check, or whatever method your business uses — you confirm it manually in J2Commerce.

Go to J2Commerce -> Sales -> Orders.

Find and open the relevant order. The PO number entered by the customer is shown in the payment information panel.

Order Details with the highlighted Purchase Order payment panel showing its Purchase Order number (a test value), above a FedEx Ground shipping row

Change the order status to your confirmed/paid status using the Order Status dropdown in the order detail screen.

Order detail header with the Order Status dropdown highlighted and open: Confirmed selected, with Refunded, Delivered, Processed, Failed, Pending, New, Cancelled, Shipped options

The customer can also view their PO number on the order summary page in their customer account.

Testing the Plugin

  1. Enable the plugin and open the settings. Set Confirmed Order Status to a status that makes it easy to identify test orders (such as "Pending").
  2. Place a test order on your storefront, selecting Purchase Order at checkout.
  3. Enter a test PO number such as PO-TEST-001 and click Place Order.
  4. Confirm the order confirmation page appears and shows the correct content.
  5. Go to J2Commerce -> Sales -> Orders and confirm the order appears with the correct status and the PO number you entered.
  6. Open the order and manually change the status to your paid status to verify that workflow.
  7. Test with Require PO Number turned on — try submitting without a PO number and confirm the validation message appears.

Multilingual

The Purchase Order Payment plugin ships with 21 language translations, including Arabic, Danish, Dutch, Finnish, French, German, Greek, Hebrew, Italian, Japanese, Norwegian, Polish, Brazilian Portuguese, European Portuguese, Russian, Spanish, Swedish, Traditional Chinese, and Turkish.

Troubleshooting

The PO number input field is not showing at checkout

Cause: The Show Input Field setting is turned off, or the plugin is not enabled.

Solution:

  1. Go to J2Commerce -> Setup -> Payment Methods and confirm the Purchase Order method has a green checkmark (enabled).
  2. Open the plugin settings and confirm Show Input Field is set to Yes.
  3. Save the settings, clear Joomla's cache (System -> Clear Cache), and reload the checkout page.

The Purchase Order option is missing from checkout entirely

Cause: The payment method is hidden by a geozone restriction, a subtotal limit, or a blank Maximum Order Subtotal value.

Solution:

  1. Open the plugin settings and check the Geozone Restriction field — if set, confirm the customer's shipping address falls within that geozone.
  2. Check Minimum Order Subtotal and Maximum Order Subtotal. A blank Maximum Order Subtotal value is treated as zero and hides the method for any order with items. Set it to -1 for no limit.
  3. Confirm the cart subtotal falls between the configured minimum and maximum values.

The PO number is not required even though Require PO Number is set to Yes

Cause: The Restrict by User Group option is on, but the customer's account is not in any of the selected groups.

Solution:

  1. Open the plugin settings and locate Restrict by User Group. If it is set to Yes, the PO number is only required for users in the selected groups.
  2. Review the User Group(s) field and confirm the customer's Joomla user group is included.
  3. Remember that guest customers are never subject to the group requirement — to require a PO number from guests, turn Restrict by User Group off.

Where is the debug log?

Enable Debug in the plugin settings, then place a test order. The log is written to:

administrator/logs/plg_j2commerce_payment_purchaseorder.log.php

Access it via System -> Logs in the Joomla Administrator, or open the file directly on your server.

Related Products

Related Products

Still stuck? Our team can help.

Back to Top