मुख्य सामग्री के लिए छोड़ें
संस्करण: 1.x

Refunds

Pro Feature

Issuing refunds from the POS requires WCPOS Pro. Without Pro, you can still process refunds from WP Admin → WooCommerce → Orders using WooCommerce's built‑in refund interface.

WCPOS lets you refund a WooCommerce order without leaving the register. You can issue a full or partial refund, send the funds back to the original payment method (when the gateway supports it), or record a cash refund from the till — and the refund is tagged with the cashier and store that processed it for reporting.

Starting a Refund

There are two ways to open the refund form:

  1. From the Orders list — find the order, click the three‑dot menu () in the actions column, and select Refund.
  2. From the order view modal — open the order, then click the Refund button in the footer next to Print Receipt and Cancel.

Both routes open the same Refund Order #{number} modal.

When the Refund Action Appears

Refund is only offered for orders with the following statuses:

  • Completed
  • Processing
  • On hold

It does not appear on Pending, Cancelled, Failed, POS – Open, or already fully‑Refunded orders. To refund an already fully‑refunded order, or to refund an order in a status not listed above, use WP Admin → WooCommerce → Orders.

The Refund Form

At the top of the modal you'll see two figures:

  • Total — the order total.
  • Previously Refunded — the sum of any refunds already issued against this order (shown as a negative amount). Only appears when there is at least one prior refund.

Below that is the line items table:

ColumnWhat it shows
ProductThe line item name
PriceUnit price (tax‑inclusive or tax‑exclusive, depending on your store setting)
QtyThe remaining refundable quantity (purchased qty minus any previously refunded qty)
Refund QtyEditable — how many units of this line you want to refund now
Refund AmountAuto‑calculated from Refund Qty × unit price, including the line's prorated tax

Below the table:

  • Custom Amount — an optional extra amount to add to the refund (for example, refunding a fee that isn't tied to a specific line item). Leave it blank if you don't need it.
  • Reason — an optional note that's saved on the refund record and appears in WooCommerce's order notes.
  • Refund destination — a radio group (see below).
  • Refund Total — the grand total of the refund, recalculated live as you type.

Refunding Whole vs. Partial Quantities

There's no separate "full refund" mode — set the Refund Qty for every line to its full remaining quantity to refund the whole order, or set it on just one or two lines for a partial refund. The Process Refund button is disabled until Refund Total is greater than zero and within the remaining refundable amount.

Refund Destination

For orders paid with anything other than the built‑in POS Cash gateway, the form asks where the refund should go:

  • Refund to (gateway name) — the gateway processes the refund through its own provider API. For Stripe Terminal this returns the funds to the original card; for Vipps MobilePay it issues a Vipps refund; and so on. This option only appears for gateways that advertise refund support to the POS — if your gateway doesn't, the option is disabled with the message "Original payment method refunds are unavailable for this order."
  • Refund via cash — record the refund as cash returned from the till, regardless of how the order was originally paid. The cashier physically hands the money over; WooCommerce records the refund but does not call any gateway.

For orders paid with POS Cash, the radio group is hidden — cash is the only sensible destination, so it's used automatically.

If WCPOS can't reach the gateway to check refund support, you'll see "Couldn't verify original payment method refunds. Cash refunds are still available." — you can still issue a cash refund.

When to Use Cash vs. Original Method

SituationRecommended destination
Card payment via Stripe Terminal / Vipps / etc., customer present and wants the money back on their cardRefund to (gateway)
Card payment but customer prefers cash back (and you're allowed to do that)Refund via cash
Cash saleRefund via cash (automatic; no choice shown)
Manual card terminal (the gateway can't refund automatically)Refund via cash, then refund manually on your standalone terminal

Confirming and Submitting

When you press Process Refund, a confirmation dialog asks "Refund (amount) for Order #(number)?". Confirming triggers the refund:

  1. WCPOS sends the refund to your WooCommerce store.
  2. For gateway refunds, WooCommerce hands off to the gateway plugin to process the refund against the provider (Stripe, Vipps, etc.).
  3. The order is refreshed locally so the new refund appears immediately.
  4. A success toast confirms "Refund of (amount) processed".

If the gateway rejects the refund (declined card, expired authorization, network error, etc.), an error toast shows the gateway's message. The refund won't be recorded in WooCommerce in that case — you can adjust the form and try again, or fall back to a cash refund.

After the Refund

  • Partial refund — the order keeps its existing status (Completed, etc.), and the order view modal shows a Partially refunded pill plus a −(amount) refund line in the hero subtitle.
  • Full refund — WooCommerce sets the order status to Refunded.
  • Receipts — when viewing the receipt for a refunded order, switching to Live mode shows the refund reflected in the totals (Refunded -X and Net Total Y rows on detailed receipts). Fiscal mode still shows the original payment‑complete snapshot, untouched — that's what fiscal mode is for.
  • Cashier and store audit — every POS refund is tagged with the cashier (_pos_user) and store (_pos_store) that issued it, so refunds appear under the right cashier and store in reporting.

Things to Know

  • Coupons + refunds: orders that used a coupon can still be refunded from the POS, but if you need to adjust how the coupon is recalculated against the refund, use WP Admin → WooCommerce → Orders.
  • Negative quantities are not supported. Older versions (v0.4.x) let you add a line with a negative quantity to record a return — this no longer works in v1.x. Use the Refund flow instead.
  • Refunds require a server connection. Unlike checkout, you can't queue a refund offline — the gateway and your store both need to be reachable.
  • Issuing additional refunds on a fully‑refunded order must be done from WP Admin → WooCommerce → Orders.