Refund a WooCommerce order safely

Refund a WooCommerce order safely.

Status: source-reviewed Section: Billing & Finance

Search documentation

Type to search.

Return money through the gateway that captured it, preserve the order history, and review future billing and member access separately.

Access and dependencies

  • Use a Finance Admin, administrator, or other account with manage_woocommerce and authorized access to the payment gateway.
  • Record the approved refund amount and reason before opening the order.
  • The repository does not contain WooCommerce or gateway UI source. It cannot verify a particular Refund dialog, automatic-refund button, settlement time, or fee policy. Confirm those labels and rules in the installed versions.

Exact steps

Safe stop: Reconcile the WooCommerce order with the gateway transaction first; stop before Refund whenever the amount, currency, customer, provider status, or subscription effect is unclear.

  1. Open the WooCommerce order list and search for the approved order ID. GymCore source retains the wc-orders screen for approved roles; the installed WooCommerce version owns its visible menu label.

  2. Confirm the customer, captured total, amount already refunded, currency, gateway, order status, and any related recurring-billing record.

  3. Open the gateway dashboard in a separate tab and find the matching transaction.

    Expected: Gateway amount, currency, customer, and transaction reference match the WooCommerce source order. If they do not, stop before refunding.

  4. If the installed WooCommerce UI exposes Refund, select it only when the screen clearly identifies whether money will be returned through the gateway. Enter the approved amount and an internal reason; do not mark an order refunded merely to imitate a gateway refund.

    Expected: WooCommerce adds a refund/order note and the gateway creates one refund for the same amount. A manual record-only correction must not be described as money returned.

  5. Review the related recurring-billing record. A refund does not prove that future renewals are cancelled, paused, or rescheduled.

  6. Open the member in GymCore and decide separately whether access should change. Use the membership owner’s approved process rather than deleting the member or order.

  7. Verify the refund in the gateway first, then reload the WooCommerce order, recurring-billing record, and GymCore member.

    Expected: The gateway refund status and amount agree with WooCommerce, future billing has the intended state, and GymCore access reflects the approved policy.

Effects, reversal, and financial data

A submitted gateway refund may be impossible to cancel and may take time to settle. Deleting an order or changing its status does not recall it. If the amount is wrong, preserve both records and ask the gateway owner how to correct it. Share order and transaction IDs when escalating, but remove billing addresses, tokens, and other customer data.

If the refund does not appear

  • No refund action is visible: verify the active gateway extension and your role; do not install a replacement or edit the order status as a workaround.
  • WooCommerce shows a refund but the gateway does not: determine whether a record-only refund was used and escalate with both IDs.
  • Gateway shows a refund but WooCommerce does not: do not submit it again. Ask the payment owner to reconcile the original transaction and order notes.
  • Membership renewed again: the refund did not change the recurring schedule; correct that record in its owning extension.

Need help?

Describe one problem and the installed versions. Never send passwords, license keys, API keys, payment details, or member records.

Contact GymCore