Can Double-Clicking Charge a WooCommerce Customer Twice?

The Built-In WooCommerce Protections

WooCommerce's checkout script disables and visually greys out the Place Order button the instant it's clicked, blocking a second click while the first request is still processing. On top of that, most payment gateways implement their own idempotency handling — recognizing a duplicate request with the same order/transaction reference and refusing to charge it twice even if a second request somehow reaches their API. These two layers together make a genuine double-charge uncommon.

When It Can Still Happen

  • A slow server response (a heavily loaded host, a slow database query during checkout) leaving a window where the button hasn't yet visually updated to disabled, occasionally allowing an impatient double-click through before the JavaScript catches up.
  • A JavaScript conflict from another plugin or theme interfering with the checkout script's button-disable behavior specifically, which is a real (if uncommon) cause worth checking if this happens more than once.
  • The customer using their browser's back button and resubmitting a cached checkout page, which behaves differently from a simple double-click but can produce a similar duplicate-order outcome.
  • A network retry at the browser or proxy level resending the request transparently, outside of anything the checkout page's own JavaScript controls.

If a Duplicate Charge Actually Happens

  1. Check the gateway's transaction log first to confirm whether two separate charges genuinely occurred, versus one order simply appearing twice in WooCommerce without two actual charges.
  2. Refund the duplicate charge promptly once confirmed, since this is a straightforward, sympathetic case to resolve for the customer.
  3. Check for a JavaScript conflict if this has happened more than once, since a single incident is more likely a slow-response edge case than a genuine bug.
  4. Confirm checkout page load times aren't unusually slow, since a consistently slow checkout increases the odds of this edge case occurring.

Seeing this happen repeatedly? See WooCommerce fixes for a proper investigation.

Available for new projects

NEXT STEP

Rather have it fixed than keep reading?

Based in Dhaka, Bangladesh — serving clients worldwide. Tell me what's happening and you'll have a reply within one working day.

  • Reply within one working day
  • Fixed quote before work starts
  • UK, EU and US hours covered