All tutorials

Stop unpaid WooCommerce bank-transfer orders from locking your stock

Preview unpaid On hold bank-transfer orders in WooCommerce, set a deadline, then let scheduled tasks cancel eligible orders.

WooCommerce bank-transfer orders normally use On hold (on-hold) while you await and verify payment. This is different from Pending payment (pending). With stock management enabled, On hold orders can tie up inventory until they are paid or cancelled.

WooCommerce’s Hold stock (minutes) setting targets Pending payment orders. It does not cancel On hold bank transfers. Use a separate deadline for those orders, and record any payment received before the cancellation task runs.

What you need

  • A WooCommerce store with admin access and direct bank transfer (BACS) enabled.
  • The free Unpaid Transfer Guard plugin 3.0.0 for the BACS workflow below.
  • Pro only if you need rules for other payment methods, customer exclusions or reminders.

Steps with Free: BACS orders

  1. Set a bank-transfer delay. Open WooCommerce → Unpaid orders. Choose a delay that fits your bank and payment terms, for example 7 days, then adjust using your actual transfer times. Free handles BACS; per-method rules belong to Pro.
  2. Preview in dry-run mode. Enable the plugin in dry-run mode and inspect the eligible orders. Dry-run cancels nothing and sends no Pro reminders. Verify each order’s On hold status, payment record and deadline before switching to live mode.
  3. Check the effective deadline. The bank-transfer dashboard shows deadlines and allows manual extensions. Optional order-total rules can change the base delay. An extension postpones cancellation; use Pro’s customer exclusions if an ongoing exception is needed.
  4. Enable scheduled cancellation. Switch to live mode after reviewing the preview. Action Scheduler runs the cancellation task hourly. Before acting, it rechecks that the order is still On hold, unpaid, past its effective deadline and allowed by the cancellation rules. A delayed scheduler or a backlog can postpone processing.
  5. Check the trace and stock. After cancellation, inspect the order note and WooCommerce → Status → Logs. WooCommerce restores stock previously reduced for that order through its normal cancellation handling; verify the quantity on a test product with stock management enabled.

Optional Pro path: exclusions and reminders

In WooCommerce → Transfer Guard Pro, activate the license and configure delays for the selected payment methods. The exclusion fields are Customer IDs, Billing emails and Customer roles. These rules also exclude matching orders from reminders.

Enable reminders only after checking email delivery. They apply in live mode to eligible orders created after Pro activation. For orders subject to reminder grace, cancellation can wait up to one day after the effective deadline for a delayed reminder, and at least one hour after a reminder is sent. The reminder task runs through Action Scheduler every 15 minutes, so cancellation is not guaranteed at the exact deadline.

To configure and check the reminder, follow the tutorial on unpaid bank-transfer reminders. It covers exclusions, deadline extensions and a check with a new order.

Expected result

In live mode, eligible orders are cancelled by a scheduled task after the effective deadline if they are still unpaid and not excluded. Processing depends on Action Scheduler running, the workload and any applicable Pro reminder grace. Dry-run leaves orders unchanged.

With Unpaid Transfer Guard

Free previews and cancels eligible unpaid On hold BACS orders. Its bank-transfer dashboard displays deadlines, supports manual extensions and exports CSV. It also offers order-total delay rules and optional daily stale-order notifications to Slack or an HTTPS endpoint. Pro adds per-method delays, exclusions by customer ID, billing email or role, and reminders before cancellation.

Read next: Understand on-hold bank transfer orders.

Keep reading

All tutorials