How to Process a Partial Refund Through Stripe
When you need to refund only part of a customer's payment (not the full amount), you'll process the partial refund through Stripe since Zipper uses Stripe for payment processing.
Before You Begin
- You must have access to your Stripe Dashboard
- You must be logged in at https://dashboard.stripe.com
- The payment you want to refund must be completed (not pending)
- You must have admin or owner access to your organization's Stripe account
Steps
Step 1: Log into Stripe Dashboard
- Go to https://dashboard.stripe.com
- Log in with your Stripe credentials
- If you manage multiple businesses, select the correct account from the dropdown in the top left
Step 2: Find the Payment
- Click Payments in the left sidebar
- Use the search bar to find the payment by:
- Customer name
- Email address
- Payment amount
- Transaction date
- Click on the payment to open its details page
Tip: You can also get the payment ID from Zipper (it starts with pi or ch) and search for it directly in Stripe.
Step 3: Start the Refund
- On the payment details page, click Refund in the top right corner
- A refund dialog appears
Step 4: Enter Partial Refund Amount
- Select Refund a different amount (not "Refund entire amount")
- Enter the partial amount you want to refund
- Example: If original payment was $100 and you want to refund $25, enter 25.00
- Important: Enter the amount in dollars, not cents (Stripe handles the conversion)
Step 5: Add Refund Reason (Recommended)
- In the Reason field, select or enter why you're refunding:
- Requested by customer
- Duplicate charge
- Service issue
- Billing error
- Custom reason (type your own)
- This helps with record-keeping and dispute prevention
Step 6: Review and Confirm
- Review the refund summary:
- Original charge amount
- Refund amount
- Remaining balance (if any)
- Destination (customer's payment method)
- Click Refund to process
What Happens Next
Immediately:
- Stripe processes the refund
- Customer's payment method is credited
- Refund appears in your Stripe dashboard
Within minutes:
- Zipper automatically detects the refund via webhook
- Customer's account ledger is updated with refund credit
- Refund appears in customer's Zipper purchase history
Within 5-10 business days:
- Customer sees refund on their credit card or bank statement
- Timeline depends on customer's bank
Important Notes
Stripe Fees
- Stripe processing fees are NOT refunded on partial refunds
- The 2.9% + $0.30 fee from the original transaction is not returned
- You still pay the processing fee even when refunding
- Only the customer receives money back
Zipper Credit Ledger
After the refund processes:
- Customer's Zipper account ledger shows the refund as a credit
- This credit can be used toward future purchases
- Credit does not automatically refund punch card uses (see below)
Punch Card Credits
If the customer used punch card credits for the booking:
The refund does NOT automatically restore punch card credits. You must manually restore them:
- Go to Zipper CRM > find the customer
- Scroll to Punch Cards section
- Click Manage Credits on the relevant punch card
- Click Issue Credits or adjust the credit balance
- Add note: "Restored credit from refunded booking [date]"
- Save
Troubleshooting
"This payment cannot be refunded"
Possible reasons:
- Payment is still processing (wait for it to complete)
- Payment already fully refunded
- Payment was disputed or failed
- Refund window has closed (typically 120 days for Stripe)
Solution: Contact Stripe support if payment is older than 120 days.
Refund not showing in Zipper
Wait time: Refunds typically sync within 5-10 minutes.
If still not showing after 30 minutes:
- Check Stripe dashboard to confirm refund completed
- Verify you're looking at the correct customer profile in Zipper
- Check the ledger transactions (not just purchase history)
- Contact support@joinzipper.com with the Stripe transaction ID
Customer says they haven't received refund
Check timing:
- Credit cards: 5-10 business days
- Debit cards: 5-10 business days
- Bank accounts: 5-10 business days
Verify in Stripe:
- Open the payment in Stripe dashboard
- Check refund status shows "Succeeded"
- If succeeded, the delay is on the customer's bank side
- Provide customer with Stripe transaction ID for their bank
Alternative: Issue Credits Instead of Refund
If you want to give the customer credit toward future purchases rather than refunding to their payment method:
See: How to Add Package Credits Without Charging the Customer
When to use credits instead:
- Customer wants to apply refund to a future purchase
- You want to reduce credit card processing fee losses
- Customer prefers account credit over waiting for bank refund
- Business policy offers store credit for refunds
Tips
- Always add a reason: Future you will thank present you for the documentation
- Take a screenshot: Capture the refund confirmation for your records
- Notify the customer: Send them an email confirming the refund and timeline
- Update internal notes: Add note to customer profile in Zipper CRM explaining the refund
- Check for subscriptions: If refunding a subscription payment, consider whether to cancel the subscription too