BEAR - WooCommerce Bulk Editor and Products Manager Professional

WooCommerce Refund with AI: Partial Refunds, Restock and Returns

A customer kept one of the two shirts and sent the other back. In WooCommerce that means opening the order, finding the line, typing the quantity, checking the amount, ticking the restock box and choosing between the two refund buttons. A WooCommerce refund with AI is one sentence: you say which order and what came back, BEAR works out the amount, shows you exactly what it is about to do, and nothing happens until you confirm. The same connection then tells you which products and which variations come back most often. This guide covers what the assistant can refund, how the amount is calculated, when stock goes back, when money really moves, and what cannot be undone.

Example: refund one item and put it back on the shelf

Refund the size M linen shirt from order 2318 and put it back in stock. Just record it, I'll send the money by bank transfer.
  1. The assistant opens the order. It reads the order card: every line with its quantity and amount, what was already refunded, and the totals. That is how it knows which line is the size M shirt.
  2. It asks BEAR for the refund without confirming it. BEAR works out the amount: the shirt's share of what the customer actually paid for that line, its tax included, so a shirt bought with a discount refunds its discounted price. Nothing is written. The answer is a preview that names the order and its total, the amount to refund, whether it goes through the payment gateway or is only recorded in the shop, the goods coming back with their quantity, which of them will go back to stock and which do not track stock, and the fact that BEAR cannot undo a refund.
  3. It reads the figures back to you. The tool's instructions tell the assistant never to round, estimate or guess an amount you did not give, and to get a clear yes. Say, for example, 29.75 including tax: you check it against what you expected.
  4. You confirm, and WooCommerce makes the refund. BEAR calls WooCommerce's own refund function with the shirt as a refund line, so the refund appears on the order exactly like one made by hand. If the order took the shirt out of stock when it was paid, as a normal paid order does, WooCommerce puts it back and writes an order note such as "Item #412 stock increased from 4 to 5".
  5. You get the result. The amount refunded now, the total refunded on the order so far, the order's status, whether the money went through the gateway (here: no, recorded only), and any goods for which nothing was put back because they do not track stock.

The figures are illustrative. The steps are not: read the order, preview, confirm, refund, report.

Before you start

You need BEAR's MCP server switched on in the plugin settings and an AI assistant connected to it, for example Claude in the browser, the desktop app or Claude Code; the connection steps are in the MCP server documentation. Refunds work on any WooCommerce order and need no extra setup. The returns report reads WooCommerce Analytics, so Analytics has to be enabled with its historical import finished. A shop manager connected with a personal key needs WooCommerce's edit_shop_orders capability for both.

How BEAR works out the refund amount

What you say decides two things: how much money is refunded, and which order lines the refund names. The lines matter because only named lines can go back to stock and only they show up in the returns report.

What you ask forMoney refundedLines on the refund
"Refund order 2318" (no amount, no items)Everything still refundable on the order: goods, tax and shippingEvery product line with the quantity still left on it
"Refund one shirt from 2318" (items, no amount)The value of those items as charged, after discounts, tax included; no shippingThose items and quantities
"Refund 15.00 for the shirt that came back" (amount and items)Exactly the amount you gaveThe items you named. If the amount is less than their value, the money per line is scaled down; the quantities stay, for stock
"Refund 10.00 as a goodwill gesture" (amount only)Exactly the amount you gaveNone: nothing can be restocked and the refund does not appear in the returns report

The assistant identifies items by their product ID on the order card. A variation can be passed by its own ID or by its parent's, which is convenient until an order holds two sizes of the same shirt: then "the shirt" takes the first matching line. Name the size or colour whenever an order has more than one of a kind.

Earlier refunds are taken into account. Units already refunded on a line cannot be refunded again, and the amount can never exceed what is left on the order. BEAR refuses, with the reason, when:

  • the order has already been refunded in full;
  • the amount is more than is left on the order (the answer says how much can still be refunded);
  • the amount is zero or less;
  • a product is not on the order, or more units are asked for than are left on it;
  • you ask to restock but gave only an amount, which does not say what came back. The assistant is told to ask you which products and how many were returned.

Restock refunded items

Goods go back to stock only when you ask. Say "put it back in stock" or "restock"; a refund without those words leaves stock alone, which is right for damaged goods or goods the customer kept. When you do ask, three conditions decide whether a unit really goes back:

  1. The refund names the item. A full refund names every line. A partial one names what you listed; an amount alone names nothing, so BEAR refuses to restock.
  2. The product tracks stock. That means Manage stock is on for the product, or for a variation's parent when the parent keeps the count. The preview names the goods that do not track stock, and the result lists them again: nothing is put back for those.
  3. This order actually took the stock. WooCommerce only returns units the order took out when it was placed or paid. An order still at Pending payment, or a manual order created without taking stock, took nothing and gets nothing back. The preview cannot see this: it says stock will be put back for any item that tracks stock. So after a restock, look at the order notes. WooCommerce writes an "Item #… stock increased from … to …" line for every item it really restocked; no line means no change.

Restocking happens only as part of the refund. If you refunded without restocking and the goods turn up later, correct the stock quantity directly, by chat or in the bulk stock manager.

Refund through the payment gateway, or record it only

"Refunded" means two different things to a shop owner, so BEAR keeps them apart.

  • Recorded only (the default). The refund is written on the order and counted in WooCommerce's reports, but no money moves. You pay the customer yourself, by bank transfer, cash or a refund in your payment provider's dashboard. This is the same as WooCommerce's manual refund button.
  • Through the gateway. Only when you say so plainly ("refund it through the gateway", "send the money back to the customer's card") does the assistant ask WooCommerce to refund through the order's payment gateway, the same as the gateway refund button on the order screen. The gateway must support automatic refunds. If it does not, or it rejects the refund, WooCommerce deletes the refund it had just created and the assistant passes on the error: nothing is recorded and no stock moves.

Either way, WooCommerce sends the customer its refunded-order email (full or partial) if that email is enabled in WooCommerce → Settings → Emails. When the refund covers everything left on the order, WooCommerce sets the order to Refunded; after a partial refund the status stays as it was. For downloadable products, WooCommerce removes the download permissions of the refunded items. The final answer always says whether money moved, and the assistant is told to tell you which of the two happened.

Partial refunds and shipping

An order can be refunded in several parts, by items, by amount or both, until nothing is left. Each part is checked against what remains.

Shipping is the one thing you cannot name as a line. BEAR's refund lines are product lines, so shipping money comes back only inside an amount: for "refund the shirt and the 4.95 shipping", the assistant can first preview the shirt alone to get its value, then pass the shirt as the item and that value plus 4.95 as the amount. The second preview shows the total before you confirm. A full refund includes the shipping automatically. Tax follows the same logic: refunding items includes their tax, while an amount you give is refunded exactly as given, without anything added.

Amounts are in the order's own currency. On a shop that sells in several currencies, an order paid in pounds is refunded in pounds, and the preview shows the currency next to every figure.

The returns report: which variation gets returned most

Ask "what got refunded last month?" or "what gets returned most?" and the assistant uses BEAR's refund report. For a period, it lists per product and per variation:

  • units that came back and money returned, excluding tax and shipping (on a multi-currency shop running FOX – WooCommerce Currency Switcher, converted to your main currency; each answer says how its amounts were counted);
  • how many separate refunds that was;
  • units sold in the same period, and the return rate: units back against units sold.

The period is counted by the date of the refund, so "refunds in August" means refunds issued in August, whenever the order was placed. Without a period it covers the last 30 days. The list can be sorted by units, money or rate, shows 50 rows by default and up to 200, and can be narrowed to a group of products: "the return rate of the jackets" makes the assistant find the jackets first and report only on them.

Read the rate with its limits in mind. It is empty when nothing of that product sold in the period, and rough for slow sellers or for refunds that arrive long after the sale. Orders refunded in full still count as sold, so four sold and two returned reads as 50%, not as two out of two. Refunds made as a bare amount are not in this report at all, because they name no product.

Variations are reported separately on purpose. A product-level rate of 8% hides the one colour that comes back six times out of ten, and that colour usually points to a photo or a size chart that needs fixing, not to a bad product.

Ready-made questions about returns

Ask the assistant what it can do, and among BEAR's prepared questions are two on this subject, both read-only:

  • What comes back: refunds over the last six months per product and per variation, sorted by return rate, 30 rows.
  • What sold and what came back: the 20 best sellers by units next to the 20 most returned products and the 20 with the worst return rate, over six months. A product near the top of both lists is a best seller with a problem.

For totals rather than products, ask for a sales summary (see WooCommerce sales reports with AI): it gives the number of refunds and the money refunded in a period, tax and shipping included, counted on the day of the refund, plus net revenue after refunds.

Safety: confirmations and what cannot be undone

  • The preview is in the code, not only in the instructions. A refund request without confirmation refunds nothing and returns the figures. The refund happens only on a second, confirmed call.
  • Amounts come from you or from the order. The assistant is told never to round, estimate or guess an amount you did not say, and to use the gateway only when you have said so plainly.
  • A refund is final as far as BEAR is concerned. It does not appear in BEAR's History tab and there is no rollback. WooCommerce's order screen lets you delete a refund record, but that only removes the record: units put back stay in stock, money sent through the gateway stays sent, and a Refunded status stays.
  • Refunds are their own permission. For each person with a personal key, refunds can be closed or set to reports only with the woobe_mcp_permissions filter, separately from orders. The snippet is in managing WooCommerce orders with AI.
  • Do not refund by status. Setting an order to Refunded as a status change records a full refund with no preview, no restock and no gateway. Always ask for a refund.

Ready prompts

  • "Refund order 2318 in full and put everything back in stock."
  • "Refund one size M linen shirt from order 2318 and restock it. Record only."
  • "The customer of order 2405 returned 2 of the 3 mugs. Refund them through the payment gateway and put them back in stock."
  • "Refund the shirt from order 2318 plus the 4.95 shipping, no restock, it arrived damaged."
  • "Refund 12.50 on order 2318 as a goodwill gesture."
  • "How much can still be refunded on order 2318?"
  • "What did we refund last month, per product?"
  • "Which variations had the highest return rate over the last six months?"
  • "Show me what sells best next to what gets returned most."
  • "Return rate of the jackets since January, by colour."

Checklist

  • Say what came back (product, size, quantity), not only an amount, if anything should go back to stock or appear in the returns report.
  • Say "restock" only for goods that are back and sellable.
  • Say "through the gateway" only if the money should move now; otherwise pay the customer yourself.
  • Check the preview: order, amount, currency, goods, gateway or record, stock sentence. Then confirm.
  • After a restock, check the order notes for the "stock increased" lines.
  • Shipping goes back only inside an amount; a full refund includes it.
  • Never use the Refunded status as a shortcut.
  • For the returns report, make sure WooCommerce Analytics is enabled and up to date.

Questions

Does a WooCommerce refund made with AI send the money back to the customer?

Only if you ask for the refund through the payment gateway and the gateway supports automatic refunds. By default the refund is recorded in WooCommerce and you return the money yourself. The assistant's final answer says which of the two happened.

Can I refund just one item of an order?

Yes. Name the product and quantity; the refund is that item's value as charged, tax included, and it can go back to stock. Add an amount if you want to refund a different sum for it.

Why did the stock not go back up after the refund?

Either restock was not asked for, the product does not track stock, or the order never took the stock in the first place (for example an order still pending payment). WooCommerce's order notes show every item it put back.

Why is a refund missing from the returns report?

It was probably refunded as a bare amount, which names no product. Other causes: the refund date is outside the period you asked about, or WooCommerce Analytics has not imported it yet.

If a refund or a report behaves differently in your shop, ask on the BEAR support forum.