Refund flow
How to handle refunds on WooshPayment. Step-by-step procedure with automatic sync to Whop and Shopify/Woo.
TLDR: refunds ALWAYS start from the WooshPayment dashboard (never directly from the Whop panel). Today, full refunds are available; partial refunds, dispute UI, and advanced reporting are on the roadmap.
Golden rule
Never refund directly from the Whop dashboard. If you do:
- WooshPayment keeps seeing the order as
COMPLETED - Shopify/Woo doesn't know about the refund โ inventory isn't updated
- Marketing pixels miss a
Refundevent โ skewed metrics
ALWAYS go through: WooshPayment Dashboard โ Orders โ select order โ "Refund".
Full refund (available today)
- Dashboard โ Orders โ search by email, order #, amount
- Open the order detail
- Click the "Refund" button at the top
- Confirm the prompt (the action is not reversible)
What happens behind the scenes:
POST /api/checkout/merchant/orders/{token}/refundis fired from the authenticated client- Backend calls Whop
refundPayment(full amount) - If Whop returns 200 โ marks the session
REFUNDEDin the DB - Fire-and-forget: cancels the order on Shopify if present, with
reason: customer, with no further refund (Whop has already refunded)
Funds return to the customer's card in 3-5 business days, handled by Whop. WooshPayment doesn't send an automatic email to the customer: the one who notifies them is your store backend (Shopify/Woo) after the status flips to refunded.
Partial refund
Q3 Roadmap. The UI for partial refunds (e.g. โฌ29.99 on a โฌ89.97 order with line item selection) isn't exposed yet. The backend supports partial amounts but there's no form yet. If you need a partial refund now, issue a full refund and re-invoice the owed amount separately, or reach out.
Chargeback
When the customer opens a dispute with their bank, Whop sends a webhook to https://api.wooshpayment.com/webhooks/whop/payment-update. Today WooshPayment records the event but the dispute UI (evidence upload, narrative, outcome) is handled on the Whop dashboard side: we don't have a "Disputes" section in our dashboard yet.
Current procedure:
- When you receive the dispute notification email from Whop, go to your Whop dashboard โ Disputes
- Upload evidence: tracking, delivery confirmation, chat screenshots
- Write a narrative
- Submit within 7 days
WooshPayment records dispute.created, dispute.won, dispute.lost but doesn't expose the timeline in your dashboard yet.
COD handling
Cash on Delivery doesn't go through Whop, so there's no transaction to refund:
- Physically refund the customer (cash, SEPA bank transfer from your account, etc.)
- Mark the order as refunded on Shopify/Woo
- On the WooshPayment side, today there's no specific "manual refund" status for COD: the order stays in
PENDING_PAYMENTorCOMPLETEDdepending on how you'd marked it
Edge cases
- Refund > 60 days from order: Whop may reject it if it's too old. In that case you'll need to refund the customer with a manual method outside of Whop.
- Customer canceled the card: the Whop refund fails. Solution: manual SEPA bank transfer from your account and log it in your systems.
- Whop fails but Shopify was already canceled: this can't happen because the Whop order is the source of truth and Shopify is only attempted after the DB has marked
REFUNDED.