WWooshPayment docs
Payments

Refund flow

How to handle refunds on WooshPayment. Step-by-step procedure with automatic sync to Whop and Shopify/Woo.

2 min read

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 Refund event โ†’ skewed metrics

ALWAYS go through: WooshPayment Dashboard โ†’ Orders โ†’ select order โ†’ "Refund".

Full refund (available today)

  1. Dashboard โ†’ Orders โ†’ search by email, order #, amount
  2. Open the order detail
  3. Click the "Refund" button at the top
  4. Confirm the prompt (the action is not reversible)

What happens behind the scenes:

  1. POST /api/checkout/merchant/orders/{token}/refund is fired from the authenticated client
  2. Backend calls Whop refundPayment (full amount)
  3. If Whop returns 200 โ†’ marks the session REFUNDED in the DB
  4. 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:

  1. When you receive the dispute notification email from Whop, go to your Whop dashboard โ†’ Disputes
  2. Upload evidence: tracking, delivery confirmation, chat screenshots
  3. Write a narrative
  4. Submit within 7 days

WooshPayment records dispute.created, dispute.won, dispute.lost but doesn't expose the timeline in your dashboard yet.

Roadmap.

COD handling

Cash on Delivery doesn't go through Whop, so there's no transaction to refund:

  1. Physically refund the customer (cash, SEPA bank transfer from your account, etc.)
  2. Mark the order as refunded on Shopify/Woo
  3. On the WooshPayment side, today there's no specific "manual refund" status for COD: the order stays in PENDING_PAYMENT or COMPLETED depending 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.