Skip to content

Refunds

WhiskerEnt edited this page Aug 18, 2026 · 1 revision

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.


Issuing a refund

  1. Open the order in Admin → Orders.
  2. The Refunds panel sits above Update Status. It shows what has already been refunded and how much is left.
  3. Enter an amount (it defaults to everything still available) and a reason for your own records.
  4. 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.


What the customer sees

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.


References

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.


Which gateways can refund automatically

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.


Refunds you made by hand

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.


When a refund cannot be confirmed

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:

  1. Open your gateway dashboard and look for the refund.
  2. If it went through, the money is already with the customer. Nothing more is owed.
  3. If it did not, you can issue a fresh refund once the unresolved record is dealt with.

Limits and rules

  • 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.

Taking payment outside a gateway

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.


See also

Clone this wiki locally