CHARGEBACKSGORGIAS

How to handle refund requests in Gorgias

A refund process for subscription stores on Gorgias: refund intents, rules, Shopify and Recharge macro actions, and refunding before a chargeback is filed.

Published 5 min read

For a subscription store, a refund request is a fork in the road. Answered quickly and clearly, it ends with a refund or an explanation the customer accepts. Left for three days, it often ends with the customer calling their bank, and a chargeback that costs you the payment, a fee and your time.

This guide sets up a refund process in Gorgias that keeps requests on the first path: detect them automatically, route them to someone who can decide, refund from the ticket with macros, and leave a record that holds up if a dispute comes anyway. Gorgias details come from its documentation: intents and sentiments, rules, macros, macro actions, ticket fields and the Recharge integration. Refund and dispute rules come from Stripe’s how disputes work and refunds pages (all accessed November 2026).

Why speed matters

If your store takes payments through Stripe, its documentation is clear on the timing:

  • While a formal dispute is open, you cannot refund outside the dispute process (how disputes work). You accept or challenge.
  • At the inquiry stage, a full refund can resolve the case without a dispute fee; inquiries on partially refunded charges can still escalate.
  • If a dispute arrives while a refund is pending, Stripe recommends handling the dispute rather than refunding again, to avoid refunding twice.

Other processors have their own rules, but the logic is the same: a refund issued before the customer contacts their bank is almost always cheaper than a dispute.

Step 1: detect refund requests automatically

Gorgias detects intents on incoming messages (intents and sentiments). Its list includes Refund/Request (requests to process a refund) and Refund/Status, along with return and exchange requests and order problems such as Order/Damaged and Order/Wrong.

Its sentiments include threatening (legal action, buying elsewhere, negative reviews) and urgent. A refund request with a threatening sentiment (“refund me or I’ll dispute it”) is the one to answer first.

Build a rule:

  1. WHEN ticket created (or new message; Gorgias notes that “ticket updated” does not fire on intent changes).
  2. IF intents contain Refund/Request, and the message is not from an agent.
  3. THEN add the tag refund-request, assign to the team that can approve refunds, and set priority high.

Add a second rule for messages with threatening sentiment that also mention a charge, and route them to a lead.

Step 2: decide with a written policy

Agents should be able to decide most refunds without escalation. A simple table, matched to your published terms:

Situation Typical decision
Charged after a cancellation request you missed Full refund, apology, cancel the subscription
Box arrived damaged or wrong Replacement or refund, customer’s choice
Box never arrived, tracking shows a problem Replacement or refund
Forgot to skip, box not shipped yet Cancel the order and refund
Forgot to skip, box already delivered Per your policy; a partial refund or credit is common
“I didn’t authorise this” Check the account; if it looks like fraud, refund and secure the account

Write down who can approve what, and above which amount a lead decides. A refusal must come with a reason and a reference to your terms, not silence.

Step 3: refund from the ticket with macros

Gorgias macro actions let a macro do the refund and send the reply in one step. Per Gorgias’s documentation:

  • Shopify actions include cancelling the last order or a specific order, refunding the last order’s shipping cost, and a partial refund of the last order, where the agent chooses the amount.
  • Recharge actions include Cancel last subscription, Activate last subscription, Refund last charge and Refund last order.
  • Actions run when the macro is sent, and if a macro action fails, the ticket is reopened.

The Recharge integration also lets agents refund a charge, partially or fully, from the ticket sidebar, and notes that orders created through Recharge must be cancelled from the Recharge order, not the Shopify order.

Useful macros:

  1. Refund last charge + keep subscription: for a damaged or missing box. Reply confirming the amount and that the subscription continues.
  2. Refund last charge + cancel subscription: for “I asked to cancel and was charged”. Reply confirming both, with the date.
  3. Partial refund: for partial issues, with the amount stated in the reply.
  4. Decline with reason: no action, a reply explaining the decision and the terms, and an offer of what you can do.

Two cautions: “last” means the most recent order or charge, so check the sidebar before sending when the customer has several; and Gorgias notes that some Shopify actions fail when a customer has profile data in more than one connected store.

Step 4: record the outcome

Gorgias’s managed ticket fields include Contact Reason and Resolution. Set Resolution on every refund ticket: Full refund, Partial refund, Replacement, Store credit, Declined. Add the reason from the customer’s point of view in Contact Reason (Damaged item, Not received, Charged after cancelling, Forgot to skip).

After a quarter, you can answer: why do customers ask for refunds, how long do we take to answer, and which declined requests turned into disputes. If declined requests often turn into lost disputes, the policy or how you explain it needs work.

Common mistakes

  • Store credit as the only option. Credit is a good offer, but when a customer asks for their money back and is entitled to it, insisting on credit pushes them toward their bank.
  • Refunding without stopping the next charge. If the customer wants to leave, refund and cancel in the same step, or the next renewal brings a new complaint.
  • Partial refunds by default. They feel like a compromise, but on Stripe an inquiry on a partially refunded charge can still escalate.
  • Running “last order” macros blind. Check which order or charge is the last one before sending, especially for customers with several subscriptions.
  • No reply after the refund. Confirm the amount and the timing in writing. That message is your record if the customer disputes anyway.

When a dispute comes anyway

Some customers will dispute even after a clear answer. Then the ticket is your evidence: the dated request, your reply, the refund or the reasoned refusal, and any earlier tickets showing delivery or use. See how to use Gorgias tickets as chargeback evidence.

And if a cancellation request is behind the refund, fix that first: handling subscription cancellations in Gorgias.

Doing this with NoChurn

NoChurn’s Gorgias connector is read-only: it reads tickets and does not issue refunds, run macros or reply in Gorgias. Tickets are matched to your customers by email; doubtful matches are suggested for you to confirm and never merged automatically. If a dispute opens on Stripe or Braintree, NoChurn gathers the evidence (cancel flow answers, emails sent, usage, and the matched refund ticket quoted verbatim with dates), drafts a response with AI and submits it only after you review it; disputes on other processors are not handled by NoChurn. Refund decisions stay with you. See NoChurn + Gorgias.

PROMPT

Read https://www.nochurn.sh/llms.txt,
then follow https://www.nochurn.sh/docs/quickstart/
to add NoChurn to this app. Use a test key
(nc_test_…) until I say we go live.

Stop leaking revenue.

  • Free until $300 MRR
  • No card needed
  • Live in 10 minutes
  • Never a cut of what we recover