-
Notifications
You must be signed in to change notification settings - Fork 1
Refunds
Refunds are issued from the order page in the admin: Orders → open an order → Refunds.
You can refund the whole order or part of it. Every refund gets its own reference, and the customer is emailed the details.
- Open the order in Admin → Orders.
- The Refunds panel sits above Update Status. It shows what has already been refunded and how much is left.
- Enter an amount (it defaults to everything still available) and a reason for your own records.
- Press Refund. A confirmation dialog shows the amount, the order and the customer before anything happens.
Whisker contacts the payment gateway first and only writes the refund down once the gateway answers. That ordering matters: if it wrote the record first, a failed call would leave your shop showing a refund the customer never received.
An email with:
- the amount refunded
- the refund reference, e.g.
RFN-260818-FB42F0 - the date and time
- where the money went
The wording is editable at Admin → Email Templates → Refund Notification.
Card refunds usually reach a statement in 5 to 10 working days. The email says so, which heads off most "where is my money" messages.
Each refund carries two identifiers:
| Reference | Where it comes from | Use it for |
|---|---|---|
RFN-YYMMDD-XXXXXX |
Whisker | Talking to your customer, and searching your own records |
| Gateway refund id | Stripe, Razorpay | Matching against your gateway dashboard and settlement reports |
The Whisker reference is generated before the gateway is contacted, and is sent along as the idempotency key. Replaying the same attempt therefore returns the original refund instead of creating a second one.
| Gateway | Refunds through Whisker |
|---|---|
| Stripe | Yes, including partial refunds |
| Razorpay | Yes, including partial refunds |
| CCAvenue | No — refund in the CCAvenue merchant panel, then record it in Whisker |
| NOWPayments | No — crypto payments cannot be reversed; send from your wallet, then record it |
For the last two, the panel says so and offers to record the refund instead.
Tick I already refunded this by hand to write a refund down without contacting the gateway. Use it for bank transfers, cash, a crypto send, or a refund you issued in the gateway's own dashboard.
The record looks the same to you and to the customer; it is marked by hand in the refund history so you can tell later which ones went through a gateway.
If the call to the gateway does not complete — a timeout, a dropped connection, a 500 from the provider — the money may or may not have moved. Whisker records that attempt as unresolved rather than failed, and blocks further refunds on that order.
This is deliberate. Reporting an unconfirmed call as a failure invites you to try again, and a retry after a refund that actually succeeded pays the customer twice.
To clear it:
- Open your gateway dashboard and look for the refund.
- If it went through, the money is already with the customer. Nothing more is owed.
- If it did not, you can issue a fresh refund once the unresolved record is dealt with.
- A refund can never exceed what is left on the order. Partial refunds reduce the remaining balance.
- Unresolved refunds count against the balance, so an ambiguous attempt cannot be quietly refunded again in full.
- Orders that were never paid have no Refunds panel at all.
- Refunding everything marks the order refunded; refunding part of it marks it partially refunded.
- Refunds are POST-only and the session token is checked before any money moves.
If you were paid by bank transfer or cash, set the order status to Paid (or Shipped, or Delivered) in the admin. That records the payment, which is what makes the Refunds panel — and review eligibility — available on the order.
- Payment Gateway Setup — credentials, webhooks and the connection test
- Email and Templates — editing the refund email