← All plugins

Offline Payment Methods for WooCommerce

Add as many offline payment methods as you need to WooCommerce checkout, such as bank transfer, check or cash on delivery, with your own instructions and a Mark as paid button.

Pro · from $49/year
Offline Payment Methods for WooCommerce graphic

What it does

Plenty of shops are paid after the order, not during it: a bank transfer that arrives in two days, cash on delivery, a check in the post, an invoice for a regular customer, a deposit paid at the counter. The order sits On hold, the customer has to find the bank details, and nothing on the order says whether the money has arrived.

This makes each offline method an ordinary WooCommerce payment method of its own. You can call it anything (Bank transfer, Pay on delivery, Pay by check, Pay by invoice, Pay in store) and give it a description for the checkout, instructions for afterwards, bank details, and the order status its orders start in: on hold, pending payment or processing. Each one appears in the classic checkout and in the Checkout block, and because it is a genuine payment method it appears on the WooCommerce Payments screen and can be shown or hidden by any plugin that works with payment methods. PluginCity Payment Rules was tested with it.

What the customer needs to pay is put where they look: on the thank-you page, in the customer's order emails, on the page where they pay for an existing order, and in My Account. Use {order_number} and {order_total} in the text, and give each method a payment reference such as Order 1042. The bank details (account name, bank name, account number, sort code or routing number, IBAN, SWIFT or BIC) are shown only after the order is placed, to the customer who placed it or someone holding their order link. They are not shown at checkout, are not put in the shop's own copy of an email, and are never written to a log.

What you need to track is on the order. An Offline payment box says whether the money has arrived, and a Mark as paid button records the date and a reference, adds a note, and moves an On hold or Pending order on to Processing the way WooCommerce does for any paid order. WooCommerce's own unpaid-order timer leaves offline orders alone, so a Pending bank transfer is not cancelled an hour later.

Pro makes the tracking less manual. Every order gets a unique payment reference, such as PAY-1042-7K, shown to the customer with the bank details and searchable in the orders list, so a line on a bank statement finds its order. Customers can be reminded once by email after the number of days you choose, and an order nobody has paid for can be cancelled automatically after the number of days you choose, with its stock put back. Both only look at orders placed after you switch them on, and an order with a deposit recorded is never cancelled. The orders list gets a column that says Paid or Unpaid and a filter for it, and you can mark many orders as paid at once, with an audit log of who recorded what. A deposit or part payment can be recorded against an order, with the balance still owed shown on the order and in the list, and when the deposits add up to the total the order is marked as paid.

Pro also draws a QR code of the bank details on your own server, so nothing is sent anywhere to make it. For an order in euros on a method with an IBAN it holds a European transfer request that many banking apps in the euro area can read. For any other order it holds the details as text. Each bank detail can be copied with one click, each method can have its own icon, and each can have its own wording for order emails. A CSV of the unpaid offline orders can be downloaded, with no bank details in it.

If a Pro licence lapses, nothing is deleted and nothing breaks at the checkout. Every payment method keeps working and what you typed into Pro's settings stays saved and on screen to read. What stops is what Pro adds, and you can add no more than three methods. The licence screen lists exactly what is going unused, and renewing switches it back on as you left it.

It does not take card payments and never moves money: it tells the customer how to pay you and lets you record that they did.

See it in action

The Checkout block: the shopper picks bank transfer and sees the description the shop wrote. The bank details are held back until the order is placed.
My Account: the payment instructions, the bank details and the payment reference sit on the customer's order, so they can find them again after the thank-you page.
The Offline payment box on an unpaid order: Mark as paid records the date the money arrived and a reference, and adds a note to the order.
The settings screen: each method has its own name, description, instructions, bank details and the status its orders start in.
The same box once the payment is recorded: who marked the order paid, the date it was received and the reference.
A deposit: the amount received so far and the balance still owed, recorded on the order.
Pro method settings: an icon, a QR code of the bank details and a copy button for each method.
The customer's order with Pro: a copy button beside each bank detail, a unique payment reference and a QR code of the bank details.
The orders list: an Offline payment column shows Paid or Unpaid for each offline order, and how much is still owed on one that has had a deposit.
Unpaid orders: the prefix of the unique reference, a reminder email after a number of days, and automatic cancellation after a number of days that puts the stock back.

What the plugin does

  • Bank transfer, cash on delivery, check, invoice, pay in store or a name of your own, each a real WooCommerce payment method
  • Works with the Checkout block and the classic checkout, and shows on the WooCommerce Payments screen
  • Payment instructions on the thank-you page, in the customer's order emails, on the page where a customer pays for an existing order, and in My Account
  • Bank details shown only after the order is placed, to the customer who placed it: account name, bank name, account number, sort code or routing number, IBAN and SWIFT or BIC
  • Never shown at checkout and never written to a log
  • {order_number} and {order_total} in the instructions, and a payment reference for each method
  • The order status after checkout chosen for each method: on hold, pending payment or processing
  • An Offline payment box on every order, with Mark as paid recording the date the money arrived and a reference
  • WooCommerce's unpaid-order timer leaves offline orders alone
  • Can be shown or hidden by any plugin that works with payment methods, such as PluginCity Payment Rules
  • Settings import and export
  • High-Performance Order Storage compatible
  • Does not take card payments and never moves money
  • As many payment methods as you need
  • A unique payment reference on every order, shown to the customer and searchable in the orders list
  • Reminder emails for unpaid orders, sent once after the number of days you choose
  • Automatic cancellation of unpaid orders after the number of days you choose, with the stock put back
  • A paid and unpaid column and filter in the orders list
  • Mark many orders as paid at once, with an audit log of who recorded what
  • Deposits and part payments recorded against an order, with the balance still owed
  • A QR code of the bank details, drawn on your own server
  • One-click copy for each bank detail
  • An icon for each payment method, at the classic and block checkout
  • Separate email wording for each method
  • CSV download of unpaid offline orders, without bank details
  • Pro's settings travel with the settings export
  • A lapsed licence leaves every method working at the checkout, and Pro's settings stay on screen to read but cannot be changed until you renew

Pricing

Every Pro plan is the same plugin with every feature. The only difference is how many sites you can run it on.

Single site

One site, with a year of updates and support.

$49/year

Secure checkout. Cancel any time.

5 sites

Most popular

Up to 5 sites, with a year of updates and support.

$99/year

Secure checkout. Cancel any time.

25 sites

Up to 25 sites, with a year of updates and support.

$199/year

Secure checkout. Cancel any time.

Need more than 25 sites? Get in touch about a custom licence.

Frequently asked questions

Does it work with the Checkout block?

Yes. Every method is registered with the Checkout block as well as the classic checkout, and an order placed either way gets the same status, the same instructions and the same Offline payment box. This was checked in a browser on both checkouts, with High-Performance Order Storage on and off.

Who can see my bank details?

Only someone looking at their own order after it has been placed: the thank-you page, the page for paying an existing order, My Account and the customer emails. WooCommerce shows those only to the signed-in customer or to someone holding the order's own link. Bank details are not shown at checkout, are not put in the shop's own copy of an email, and are never written to a log.

What is the difference between On hold, Pending payment and Processing?

On hold means waiting for the money. Pending payment means the order has not been paid and is not being worked on yet. Processing means ready to fulfil, which suits cash on delivery. You choose one for each method. Stock is reduced as soon as the order is placed, and WooCommerce's unpaid-order timer will not cancel a Pending offline order.

What does Mark as paid do?

It records the date the money arrived and a reference, adds a note to the order, and moves an On hold or Pending order on to Processing the way WooCommerce does for any paid order. An order that is already Processing stays there and is recorded as paid. The order status says where an order is in your shop and Paid says whether the money has arrived.

Can I show a method only to some customers or for some totals?

Not in this plugin, on purpose. Each method is an ordinary payment method with an id that starts with opmwc_, so PluginCity Payment Rules, or any plugin that hides payment methods, can target it. It was tested with Payment Rules.

Does it take card payments?

No. It never moves money. It tells the customer how to pay you and lets you record that they did.

What does the payment reference look like?

In Pro, the prefix you choose, the order number and two check characters, such as PAY-1042-7K. It appears with the bank details after checkout and in the emails, and you can search the orders list for it.

Will automatic cancellation cancel orders I already have?

No. Reminders and automatic cancellation only look at orders placed after you switch them on, and only at orders that are On hold or Pending payment. An order with a deposit recorded is never cancelled, and neither is one that is Processing. Each run handles a small batch, once an hour.

Does the QR code send my bank details anywhere?

No. It is drawn on your own server and printed in the page. For an order in euros on a method with an IBAN it holds a European transfer request that many banking apps in the euro area can read. For any other order it holds the bank details as text.

Can a customer pay in parts?

You record the money as it arrives, as a deposit. Nothing is charged online. When what you have recorded reaches the order total, the order is marked as paid. The customer sees what has been received and what is left.

What happens if a customer has already paid but I have not noticed?

Marking the order as paid, by button or in bulk, stops the instructions, the reminders and any automatic cancellation for that order.

Does it work with High-Performance Order Storage?

Yes, with it on or off. Orders are read and written through WooCommerce's order objects.

What happens if I remove a method?

Orders already placed with it keep their record. The method stops being offered, and its instructions stop appearing on those orders.

What happens if my Pro licence lapses?

Nothing is deleted and nothing breaks at the checkout: every method keeps working, and what you typed into Pro's settings stays saved and on screen to read. What stops is what Pro adds: references, reminders, automatic cancellation, QR codes, copy buttons, icons, email wording, deposits and the additions to the orders list, and you can add no more than three methods. Renewing switches it all back on as you left it.

Does it need a licence key?

Pro needs one for its updates and to keep its settings editable. Taking payment by bank transfer, cash on delivery, check or invoice does not depend on it.

What happens if I deactivate WooCommerce?

The plugin steps aside and shows a notice. It does not fatally error, and your methods are waiting when WooCommerce comes back.

Requires WordPress 6.7+ · WooCommerce 10.0+ · PHP 8.1+

More plugins