[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Refund WooCommerce orders from a support list

> Refund WooCommerce orders item by item through the payment gateway, record the reason in an order note and report the new status for each order.

Source: https://cotlet.dev/integrations/woocommerce-api-mcp-server/refund-orders-from-a-list

Support hands you a list of order numbers with a reason for each, and for every one you open the order, work out the amount, press Refund and check the order notes to see whether the money really went back.

Cotlet does it in your own WooCommerce account with get\_order, create\_refund and add\_order\_note, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=woocommerce) [All WooCommerce tools](https://cotlet.dev/integrations/woocommerce-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can WooCommerce do this on its own?

WooCommerce refunds are made on the order screen, and the REST API can create them with a read/write key (checked 16 Oct 2026). The MCP developer preview has no refund ability, so an agent connected to it can read an order but not refund it. The gap is the job around the refund: reading a list, working out the amounts and checking the result.

## How you do it in WooCommerce today

1. Open WooCommerce > Orders, open the order and click the Refund button in the order summary.
2. Enter the quantity to refund for each line item and WooCommerce calculates the amount, or type an amount per item when inventory is not managed. Add refund notes if you want.
3. Click Refund via the payment gateway to send the money back to the original payment method, or Refund manually to only record it in WooCommerce.
4. Tick Restock refunded items if the goods came back.
5. Look in Order notes for the Successfully refunded message, or check the gateway account, because a manual refund still needs the money sent by hand.

## How to refund WooCommerce orders from a support list

Prompt

```
Order 1042 arrived damaged: refund the ceramic mug, 22.00, through the payment gateway, then add a private note with the reason. Tell me the order status afterwards.
```

1. 01  
### Open the order first  
get\_order returns the line items with their IDs, the amounts already refunded and the payment method. The agent refuses to refund more than the order still holds, and stops if a refund for the same item already exists.
2. 02  
### Work out the amount  
For "refund the mug" the agent takes that line's total from the order, so you do not type amounts. For a goodwill refund it uses the number you gave and refunds that amount without line items.
3. 03  
### Choose gateway or manual  
create\_refund uses the payment gateway by default. If the order was paid by cash on delivery or a check, the agent switches to a manual refund and tells you the money still has to be sent by you.
4. 04  
### Ask before the money moves  
create\_refund asks for your OK by default, once per order, with the amount and the reason on the screen, so a typo in the list never becomes a refund.
5. 05  
### Note it and check the status  
add\_order\_note records the reason as a private note for the team, and the agent reports the status that follows: a partial refund leaves it unchanged, a full refund sets it to Refunded.

### What you get back

Example data

```
Order #1042 (Jordan Lee, card)
Refunded 22.00 via the payment gateway: Ceramic mug x1
Reason: Damaged in transit
Order status: Processing (partial refund, not changed)
Private note added for the team
Stock: restock refunded items is a separate tick in the admin, check the mug count
```

### Other ways to ask

- Refund every order in this list in full and mark each order note with the ticket number.
- Refund only the shipping on order 1050, 8.00, as a goodwill gesture.
- Show me which orders on this list are already refunded, and refund none.
- Refund order 1051 manually, because the customer paid by bank transfer.

## What WooCommerce allows, and what to know first

- A refund through the payment gateway needs a compatible gateway; a manual refund only records the refund in WooCommerce and the money must be sent through the gateway dashboard or a bank transfer.
- WooCommerce refunds less than the full order value as a partial refund, and the order status does not change to Refunded; a full refund sets it to Refunded.
- Changing an order to Cancelled or Refunded without a refund does not return any money to the customer.
- The REST API refund has an api\_refund flag that defaults to true, which uses the payment gateway API to make the refund.
- Gateway transaction fees are usually not recovered on a refund, and a manual refund is typical for Cash On Delivery or Check Payments.

create\_refund and add\_order\_note ask for your OK by default. To run it on a schedule without you, switch confirmation off for those tools in your dashboard.

Sources: [WooCommerce Docs: Refunds](https://woocommerce.com/document/woocommerce-refunds/) · [WooCommerce Docs: Order statuses](https://woocommerce.com/document/managing-orders/order-statuses/) · [WooCommerce REST API documentation: order refunds](https://woocommerce.github.io/woocommerce-rest-api-docs/)

## Call create\_refund from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/woocommerce/orders/1042/refunds \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"amount":"22.00","reason":"Damaged in transit","line_items":[{"line_item_id":7002,"quantity":1,"amount":"22.00"}],"api_refund":true}'
```

Example response

```
{
"refund_id": 1051,
"order_id": 1042,
"amount": "22.00",
"reason": "Damaged in transit",
"refunded_via": "payment gateway",
"order_status": "processing"
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is woocommerce\_write → create\_refund. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/woocommerce-api-mcp-server.md#automations)

## WooCommerce tools this automation uses

__Cotlet WooCommerce tools used to refund WooCommerce orders from a support list__
| Tool | Parameters |
| ---------------- | --------------------------------------------------- |
| get\_order | order\_id |
| create\_refund | order\_id, amount, reason, line\_items, api\_refund |
| add\_order\_note | order\_id, note, customer\_note |

[All 11 WooCommerce tools with descriptions](https://cotlet.dev/integrations/woocommerce-api-mcp-server.md#tools)

## Frequently asked questions

### Does the refund put the item back in stock?

In the admin, restocking is a tick box named Restock refunded items on the refund screen. After a refund, ask the agent to read the product with list\_products and check the stock count.

### Is it safe to connect WooCommerce to Cotlet?

Yes. You sign in to WooCommerce yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get WooCommerce once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

## More WooCommerce automations

- [Mark shipped WooCommerce orders as completed](https://cotlet.dev/integrations/woocommerce-api-mcp-server/mark-orders-completed.md)
- [Create single-use WooCommerce coupon codes](https://cotlet.dev/integrations/woocommerce-api-mcp-server/create-single-use-coupons.md)
- [WooCommerce API and MCP server: every tool](https://cotlet.dev/integrations/woocommerce-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to WooCommerce.

Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with WooCommerce.

[Sign up free](https://cotlet.dev/app/signup?app=woocommerce)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.

## For AI agents: sign your user up

Is your user asking you to sign them up for Cotlet? You can do it for them, no account or key needed.

1. Read the fields and their allowed values: GET https://cotlet.dev/api/v1/access-requests
2. Ask the user for each value: email, apps, what you will do with them. If they leave the password to you, generate a strong one and show it to them.
3. Show the user what you will send, then POST it as JSON to https://cotlet.dev/api/v1/access-requests.

One call creates the account and sends the access request; we email the user when access is granted.
