How to refund a Stripe payment from a Zendesk ticket

By Jake Marsh · Updated

To refund a Stripe payment without leaving Zendesk, install Tillwell, open the customer's ticket, find the payment in the sidebar and click Refund. The amount starts at what is left to refund; change it for a partial refund. Pick a reason (Requested by customer, Duplicate payment, Fraudulent, or Other with a note) and click Refund $X. Stripe makes the refund, and Tillwell adds an internal note and the tillwell_refund tag to the ticket.

Before you start

The restricted key in Tillwell's settings needs Write on Charges and Refunds. With only Read, Tillwell shows Stripe's message, which names the permission to add, and nothing changes. Edit the key in Stripe under Developers > API keys. In Tillwell's settings, Allow refunds must be on and the agent must be in Who may take actions.

Steps

  1. Open the ticket. Tillwell matches the requester to their Stripe customer by every email address on their Zendesk profile, in lowercase too, because Stripe's email filter is case-sensitive.
  2. Find the payment under the latest payments. Each shows its status, card and any amount already refunded.
  3. Click Refund. The amount starts at what is left on the payment.
  4. Change the amount for a partial refund. It can never exceed what is left.
  5. Pick a reason: Requested by customer, Duplicate payment, Fraudulent, or Other with a note. Fraudulent also adds the card and email to your Stripe Radar block lists.
  6. Click Refund $X. Nothing is sent before this click.

What happens after you confirm

WhereWhat changes
StripeA refund on the payment, with the Zendesk ticket id and agent id in its metadata.
Zendesk ticketAn internal note with the amount, the payment and customer ids, the reason, the Stripe refund id and its status, plus the tillwell_refund tag.

A note looks like this: "Tillwell (Stripe): Refunded $49.00 of $49.00 on payment ch_... for Stripe customer cus_... Reason: duplicate payment. Stripe refund re_..., status succeeded. Done by Maya Lindqvist from this ticket."

If the sidebar says "Done in Stripe, but the ticket note failed", the refund happened. Paste the text it shows as an internal note. Closed tickets can't take new comments.

Send the receipt afterwards

Customers often ask for proof. Click Email receipt on the payment and enter the address to send it to. Stripe emails a receipt when a payment's receipt address changes, so if you enter the address already on the payment, Stripe may not send it again. In that case use Open receipt and put the link in your reply. Emailing a receipt also needs Write on Charges and Refunds, and Allow invoice and receipt emails on.

Cap refunds by role

SettingWhat it does
Who may take actionsadmin (default), agent (everyone), custom role ids or group:<id>, separated by commas. Everyone else sees the sidebar read-only.
Allow refundsTurns refunds on or off for everyone.
Largest refund without an adminIn the payment's currency (100 means $100.00 or 100 euros). Admins have no limit. 0 removes the limit.

For example, admin, group:360004512345 with a limit of 100 lets the billing group refund up to $100 alone, and admins handle anything larger.

When the refund is refused

You seeWhy
"The restricted key cannot do this ... charge_write"Add Charges and Refunds: Write to the key in Stripe.
No Refund button on a paymentThe payment is disputed (respond to the dispute in Stripe), already fully refunded, or not a successful captured payment.
No actions at allYour role isn't in "Who may take actions", refunds are off, or you're on a new ticket or a user profile.

What it costs

Tillwell is $5 per agent per month on the Standard plan, with every feature, billed monthly by Zendesk. There's a 14-day free trial; Zendesk asks for a card at install. Every setting is in the Tillwell documentation.

Tillwell

Stripe customer sidebar: refund, cancel or pause from the ticket, with every action logged. $5 a month per agent.


Questions

Can I refund part of a payment?

Yes. Lower the amount before you click Refund. Tillwell won't let it go past what is left on the payment.

How do I handle a refund request that came in through the help center?

Once the request is a ticket, open it and refund from the sidebar. The note on the ticket records who refunded, how much and why.

Can finance find the ticket from Stripe?

Yes. Every refund carries the Zendesk ticket id and agent id in Stripe's metadata.

Why does a refund show a status other than succeeded?

Stripe reports the refund's status and Tillwell copies it into the ticket note. Check the refund in Stripe for details.


More Tillwell guides


More Zendesk guides